From 0a59ed358533c9d480dcab458a61fb5a950ae0dc Mon Sep 17 00:00:00 2001 From: Bart Riepe Date: Mon, 5 Feb 2024 17:35:57 +0900 Subject: [PATCH] feat: complete overhaul to Typescript --- .babelrc | 14 - .editorconfig | 4 +- .eslintignore | 4 - .eslintrc | 14 - .eslintrc.js | 9 - .github/workflows/push.yml | 15 - .github/workflows/test-and-release.yml | 41 + .prettierrc.json | 6 - .releaserc | 14 + CONTRIBUTING.md | 14 +- README.md | 71 +- biome.json | 17 + esdoc.json | 12 - src/types/index.ts => lib/custom/index.d.ts | 45 +- lib/custom/index.js | 2 + lib/generated/openapi-cloud.d.ts | 46247 +++++++++++++++++ lib/generated/openapi-cloud.js | 6 + lib/generated/openapi-server.d.ts | 9269 ++++ lib/generated/openapi-server.js | 6 + lib/generated/openapi-service-desk.d.ts | 5731 +++ lib/generated/openapi-service-desk.js | 6 + lib/generated/openapi-software.d.ts | 11509 +++++ lib/generated/openapi-software.js | 6 + lib/jira.d.ts | 1149 +- lib/jira.js | 1691 +- lib/jira.test.d.ts | 1 + lib/jira.test.js | 322 + package-lock.json | 13714 ------ package.json | 68 +- pnpm-lock.yaml | 4981 ++ scripts/update-ts-definitions.ts | 22 + src/custom/index.ts | 206 + src/generated/openapi-cloud.ts | 46589 ++++++++++++++++++ src/generated/openapi-server.ts | 9275 ++++ src/generated/openapi-service-desk.ts | 5737 +++ src/generated/openapi-software.ts | 11646 +++++ src/jira.test.ts | 289 + src/jira.ts | 2792 +- test/.eslintrc | 12 - test/helper.js | 8 - test/jira-tests.js | 1072 - test/mocha.opts | 2 - tsconfig.json | 9 +- 43 files changed, 154272 insertions(+), 18375 deletions(-) delete mode 100644 .babelrc delete mode 100644 .eslintignore delete mode 100644 .eslintrc delete mode 100644 .eslintrc.js delete mode 100644 .github/workflows/push.yml create mode 100644 .github/workflows/test-and-release.yml delete mode 100644 .prettierrc.json create mode 100644 .releaserc create mode 100644 biome.json delete mode 100644 esdoc.json rename src/types/index.ts => lib/custom/index.d.ts (92%) create mode 100644 lib/custom/index.js create mode 100644 lib/generated/openapi-cloud.d.ts create mode 100644 lib/generated/openapi-cloud.js create mode 100644 lib/generated/openapi-server.d.ts create mode 100644 lib/generated/openapi-server.js create mode 100644 lib/generated/openapi-service-desk.d.ts create mode 100644 lib/generated/openapi-service-desk.js create mode 100644 lib/generated/openapi-software.d.ts create mode 100644 lib/generated/openapi-software.js create mode 100644 lib/jira.test.d.ts create mode 100644 lib/jira.test.js delete mode 100644 package-lock.json create mode 100644 pnpm-lock.yaml create mode 100644 scripts/update-ts-definitions.ts create mode 100644 src/custom/index.ts create mode 100644 src/generated/openapi-cloud.ts create mode 100644 src/generated/openapi-server.ts create mode 100644 src/generated/openapi-service-desk.ts create mode 100644 src/generated/openapi-software.ts create mode 100644 src/jira.test.ts delete mode 100644 test/.eslintrc delete mode 100644 test/helper.js delete mode 100644 test/jira-tests.js delete mode 100644 test/mocha.opts diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 49dc009..0000000 --- a/.babelrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "presets": [ - [ - "@babel/preset-env", - { - "targets": "maintained node versions" - } - ] - ], - "plugins": [ - "add-module-exports", - "@babel/plugin-transform-runtime" - ] -} diff --git a/.editorconfig b/.editorconfig index 3229ba8..aac6a11 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,11 +8,11 @@ root = true end_of_line = lf insert_final_newline = true -[*.js] +[*.ts] charset = utf-8 indent_style = space indent_size = 2 -max_line_length = 100 +max_line_length = 120 [{*.json,.travis.yml,.eslintrc,.babelrc}] indent_style = space diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 0f18e8b..0000000 --- a/.eslintignore +++ /dev/null @@ -1,4 +0,0 @@ -lib/ -node_modules/ -docs/ -tmp-docs-repo/ diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index a5875fa..0000000 --- a/.eslintrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": [ - "airbnb/base" - ], - "env": { - "node": true - }, - "parser": "@babel/eslint-parser", - "rules": { - "default-param-last": 0, - "no-prototype-builtins": 0, - "prefer-spread": 0 - } -} diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 0322997..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint'], - rules: { - 'no-prototype-builtins': ['off'], - }, - extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], -} diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml deleted file mode 100644 index 1e9a89b..0000000 --- a/.github/workflows/push.yml +++ /dev/null @@ -1,15 +0,0 @@ -on: [push, pull_request] -name: Run tests -jobs: - test: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: ['12', '14', '16'] - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - run: npm ci - - run: npm test diff --git a/.github/workflows/test-and-release.yml b/.github/workflows/test-and-release.yml new file mode 100644 index 0000000..2465b55 --- /dev/null +++ b/.github/workflows/test-and-release.yml @@ -0,0 +1,41 @@ +on: [push, pull_request] +name: Test and release +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: ['16', '18', '20', 'lts', 'latest'] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - run: pnpm install + - run: pnpm run test + release: + name: Release + runs-on: ubuntu-latest + needs: test + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + permissions: + contents: write # to be able to publish a GitHub release + issues: write # to be able to comment on released issues + pull-requests: write # to be able to comment on released pull requests + id-token: write # to enable use of OIDC for npm provenance + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: "lts/*" + - name: Install dependencies + run: pnpm install + - name: Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: pnpm run release diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index 66e7e94..0000000 --- a/.prettierrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "trailingComma": "es5", - "tabWidth": 2, - "semi": false, - "singleQuote": true -} \ No newline at end of file diff --git a/.releaserc b/.releaserc new file mode 100644 index 0000000..f1821ae --- /dev/null +++ b/.releaserc @@ -0,0 +1,14 @@ +{ + "branches": ["main"], + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + "@semantic-release/github", + "@semantic-release/changelog", + "@semantic-release/npm", + ["@semantic-release/git", { + "assets": ["CHANGELOG.md", "package.json", "pnpm-lock.yaml"], + "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" + }] + ] +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 909be45..68efdfd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,7 +10,7 @@ be interested in. Maybe somebody is trying to fix that stupid bug that bothers you. Review the PR. Do you have any better ideas how to fix this problem? Let us know. -Here is a helpful set of tips for making your own commits: https://robots.thoughtbot.com/5-useful-tips-for-a-better-commit-message +Here is a helpful set of tips for making your own commits: https://www.conventionalcommits.org/en/v1.0.0/ ## Issues @@ -27,17 +27,11 @@ All commits that fix bugs or add features need appropriate unit tests. Please adhere to the current code styling. We have included an `.editorconfig` at the repo's root to facilitate uniformity regardless of your editor. See the -[editor config site][editorconfig] for integration details. +[editor config site](https://editorconfig.org/) for integration details. -We use [ESLint][eslint] for all JavaScript Linting. There should be no linting +We use [Biome](https://biomejs.dev/) for all TypeScript Linting. There should be no linting errors and no new warnings for new work. You are welcome to configure your -editor to use ESLint or the `npm test` command will run unit tests and the -linter. - - - --[editorconfig]: http://editorconfig.org --[eslint]: http://eslint.org +editor to use Biome or use the `pnpm lint` command. ## Visual Changes diff --git a/README.md b/README.md index a018b8b..cc53048 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,51 @@ -# JavaScript JIRA API for node.js # +# Typescript JIRA API for node.js # -A node.js module, which provides an object oriented wrapper for the Jira Rest API. +A Typescript wrapper for the Jira Rest API, now in Typescript. I had this as a fork of `jira-client` for a while, but I felt the need to completely split it up to modernize it (as well as give myself an easier time deploying). -[![Documentation](https://img.shields.io/badge/Documentation--green.svg)](https://jira-node.github.io/) +I've tried to keep the api as close to the original api as possible, but sometimes I've had to make compromises. Where possible any legacy calls have been removed, and replaced with what made most sense considering the latest versions of Jira Datacenter, Cloud, Software and Service Desk. + +> [!WARNING] +> Types have been sourced wherever they exist (cloud has more type definitions, either in docs or openapi, than server/datacenter, but no guarantee they are compatible). + +If you find any conflicts, or have any suggestions, please feel free to open an issue or a pull request. + +[![License](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE.md) +[![Documentation](https://img.shields.io/badge/Documentation--green.svg)](https://ts-jira-client.github.io/) [![Jira Rest API](https://img.shields.io/badge/Jira%20Rest%20API--green.svg)](https://docs.atlassian.com/software/jira/docs/api/REST/latest/) -[![Run tests](https://github.com/jira-node/node-jira-client/workflows/Run%20tests/badge.svg)](https://github.com/jira-node/node-jira-client/actions) -[![npm](https://img.shields.io/npm/v/jira-client.svg)](https://www.npmjs.com/package/jira-client) -[![Downloads](https://img.shields.io/npm/dm/jira-client.svg)](https://npmjs.com/jira-client) -[![Install Size](https://packagephobia.now.sh/badge?p=jira-client)](https://packagephobia.now.sh/result?p=jira-client) -[![dependency Status](https://david-dm.org/jira-node/node-jira-client/status.svg)](https://david-dm.org/jira-node/node-jira-client) -[![devDependency Status](https://david-dm.org/jira-node/node-jira-client/dev-status.svg)](https://david-dm.org/jira-node/node-jira-client?type=dev) +[![Run tests](https://github.com/aeolun/ts-jira-client/workflows/Test%20and%20release/badge.svg)](https://github.com/aeolun/ts-jira-client/actions) +[![npm](https://img.shields.io/npm/v/ts-jira-client.svg)](https://www.npmjs.com/package/ts-jira-client) +[![Downloads](https://img.shields.io/npm/dm/ts-jira-client.svg)](https://npmjs.com/ts-jira-client) +[![Install Size](https://packagephobia.now.sh/badge?p=ts-jira-client)](https://packagephobia.now.sh/result?p=ts-jira-client) ## Installation ## -Install with the node package manager [npm](http://npmjs.org): +Install with the node package manager [pnpm](https://pnpm.io/): ```shell -$ npm install jira-client +$ pnpm install ts-jira-client ``` ## Examples ## ### Create the JIRA client ### -```javascript -// With ES5 -var JiraApi = require('jira-client'); - -// With ES6 -import JiraApi from 'jira-client'; +```typescript +import { JiraApi } from 'ts-jira-client'; // Initialize var jira = new JiraApi({ - protocol: 'https', - host: 'jira.somehost.com', + protocol: 'https', // default is https + host: 'jira.somehost.com', // REQUIRED username: 'username', password: 'password', - apiVersion: '2', - strictSSL: true + apiVersion: '2', // default is 2 + strictSSL: true // default is true }); ``` ### Find the status of an issue ### -```javascript -// ES5 -// We are using an ES5 Polyfill for Promise support. Please note that if you don't explicitly -// apply a catch exceptions will get swallowed. Read up on ES6 Promises for further details. -jira.findIssue(issueNumber) - .then(function(issue) { - console.log('Status: ' + issue.fields.status.name); - }) - .catch(function(err) { - console.error(err); - }); - -// ES6 -jira.findIssue(issueNumber) - .then(issue => { - console.log(`Status: ${issue.fields.status.name}`); - }) - .catch(err => { - console.error(err); - }); - -// ES7 +```typescript async function logIssueName() { try { const issue = await jira.findIssue(issueNumber); @@ -73,8 +54,8 @@ async function logIssueName() { console.error(err); } } - +logIssueName(); ``` ## Documentation ## -Can't find what you need in the readme? Check out our documentation here: https://jira-node.github.io/ +Can't find what you need in the readme? Check out our documentation here: https://ts-jira-client.github.io/ diff --git a/biome.json b/biome.json new file mode 100644 index 0000000..bf0ac8b --- /dev/null +++ b/biome.json @@ -0,0 +1,17 @@ +{ + "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", + "formatter": { + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 120, + "include": ["src/**/*.ts"], + "ignore": ["src/generated/**/*.d.ts"] + }, + "linter": { + "include": ["src/**/*.ts"], + "ignore": ["src/generated/**/*.d.ts"] + }, + "files": { + "maxSize": 2097152 + } +} diff --git a/esdoc.json b/esdoc.json deleted file mode 100644 index 73d29fb..0000000 --- a/esdoc.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "source": "./src", - "destination": "./docs", - "excludes": ["node_modules"], - "plugins": [ - { - "name": "esdoc-ecmascript-proposal-plugin", - "option": { "objectRestSpread": true, "objectRestSpread": true } - }, - { "name": "esdoc-standard-plugin" } - ] -} diff --git a/src/types/index.ts b/lib/custom/index.d.ts similarity index 92% rename from src/types/index.ts rename to lib/custom/index.d.ts index 67696da..a226333 100644 --- a/src/types/index.ts +++ b/lib/custom/index.d.ts @@ -1,10 +1,9 @@ export interface JiraAvatarUrls { - '16x16': string; - '24x24': string; - '32x32': string; - '48x48': string; + "16x16": string; + "24x24": string; + "32x32": string; + "48x48": string; } - export interface JiraUser { active: boolean; avatarUrls: JiraAvatarUrls; @@ -17,7 +16,6 @@ export interface JiraUser { deleted?: boolean; locale?: string; } - export interface JiraIssueType { avatarId: number; description: string; @@ -27,7 +25,6 @@ export interface JiraIssueType { self: string; subtask: boolean; } - export interface JiraField { id: string; name: string; @@ -35,25 +32,21 @@ export interface JiraField { orderable: boolean; navigable: boolean; searchable: boolean; - clauseNames: string[] + clauseNames: string[]; schema: { - type: string - system: string - custom: string - custom_id: string - items: string - } - + type: string; + system: string; + custom: string; + custom_id: string; + items: string; + }; } - export interface JiraPriority { iconUrl: string; id: string; name: string; self: string; } - - export interface JiraComments { comments: { author: JiraUser; @@ -68,7 +61,6 @@ export interface JiraComments { startAt: number; total: number; } - export interface JiraStatus { description: string; iconUrl: string; @@ -83,7 +75,6 @@ export interface JiraStatus { self: string; }; } - export interface JiraInwardOutwardIssue { fields: { issuetype: JiraIssueType; @@ -95,13 +86,11 @@ export interface JiraInwardOutwardIssue { key: string; self: string; } - export interface JiraTransition { id: string; name: string; to: JiraStatus; } - export interface JiraIssueLink { id: string; inwardIssue?: JiraInwardOutwardIssue; @@ -115,7 +104,6 @@ export interface JiraIssueLink { self: string; }; } - export interface JiraChangeLog { histories: { author: JiraUser; @@ -132,7 +120,6 @@ export interface JiraChangeLog { startAt: number; total: number; } - export interface JiraAttachment { author?: JiraUser; content: string; @@ -144,8 +131,6 @@ export interface JiraAttachment { size: number; thumbnail?: string; } - - export interface JiraIssue { fields: { assignee?: JiraUser | null; @@ -172,33 +157,31 @@ export interface JiraIssue { name: string; self: string; }[]; - subtasks: any[]; + subtasks: unknown[]; summary: string; description: string; attachment?: JiraAttachment[]; comment: JiraComments; issuelinks: JiraIssueLink[]; - [key: string]: any; + [key: string]: unknown; }; renderedFields?: { comment: JiraComments; }; transitions?: JiraTransition[]; changelog: JiraChangeLog; - editMeta?: any; + editMeta?: unknown; loading: boolean; id: string; key: string; self: string; } - export interface JiraProjectCategory { self: string; id: string; name: string; description: string; } - export interface JiraProject { id: string; key: string; diff --git a/lib/custom/index.js b/lib/custom/index.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/lib/custom/index.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/lib/generated/openapi-cloud.d.ts b/lib/generated/openapi-cloud.d.ts new file mode 100644 index 0000000..4d527a0 --- /dev/null +++ b/lib/generated/openapi-cloud.d.ts @@ -0,0 +1,46247 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ +export interface paths { + "/rest/api/3/announcementBanner": { + /** + * Get announcement banner configuration + * @description Returns the current announcement banner configuration. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getBanner"]; + /** + * Update announcement banner configuration + * @description Updates the announcement banner configuration. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setBanner"]; + }; + "/rest/api/3/app/field/value": { + /** + * Update custom fields + * @description Updates the value of one or more custom fields on one or more issues. Combinations of custom field and issue should be unique within the request. + * + * Apps can only perform this operation on [custom fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) declared in their own manifests. + * + * **[Permissions](#permissions) required:** Only the app that owns the custom field or custom field type can update its values with this operation. + */ + post: operations["updateMultipleCustomFieldValues"]; + }; + "/rest/api/3/app/field/{fieldIdOrKey}/context/configuration": { + /** + * Get custom field configurations + * @description Returns a [paginated](#pagination) list of configurations for a custom field of a [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created by a [Forge app](https://developer.atlassian.com/platform/forge/). + * + * The result can be filtered by one of these criteria: + * + * * `id`. + * * `fieldContextId`. + * * `issueId`. + * * `projectKeyOrId` and `issueTypeId`. + * + * Otherwise, all configurations are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the Forge app that provided the custom field type. + */ + get: operations["getCustomFieldConfiguration"]; + /** + * Update custom field configurations + * @description Update the configuration for contexts of a custom field of a [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created by a [Forge app](https://developer.atlassian.com/platform/forge/). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the Forge app that created the custom field type. + */ + put: operations["updateCustomFieldConfiguration"]; + }; + "/rest/api/3/app/field/{fieldIdOrKey}/value": { + /** + * Update custom field value + * @description Updates the value of a custom field on one or more issues. + * + * Apps can only perform this operation on [custom fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) declared in their own manifests. + * + * **[Permissions](#permissions) required:** Only the app that owns the custom field or custom field type can update its values with this operation. + */ + put: operations["updateCustomFieldValue"]; + }; + "/rest/api/3/application-properties": { + /** + * Get application property + * @description Returns all application properties or an application property. + * + * If you specify a value for the `key` parameter, then an application property is returned as an object (not in an array). Otherwise, an array of all editable application properties is returned. See [Set application property](#api-rest-api-3-application-properties-id-put) for descriptions of editable properties. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getApplicationProperty"]; + }; + "/rest/api/3/application-properties/advanced-settings": { + /** + * Get advanced settings + * @description Returns the application properties that are accessible on the *Advanced Settings* page. To navigate to the *Advanced Settings* page in Jira, choose the Jira icon > **Jira settings** > **System**, **General Configuration** and then click **Advanced Settings** (in the upper right). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAdvancedSettings"]; + }; + "/rest/api/3/application-properties/{id}": { + /** + * Set application property + * @description Changes the value of an application property. For example, you can change the value of the `jira.clone.prefix` from its default value of *CLONE -* to *Clone -* if you prefer sentence case capitalization. Editable properties are described below along with their default values. + * + * #### Advanced settings #### + * + * The advanced settings below are also accessible in [Jira](https://confluence.atlassian.com/x/vYXKM). + * + * | Key | Description | Default value | + * | -- | -- | -- | + * | `jira.clone.prefix` | The string of text prefixed to the title of a cloned issue. | `CLONE -` | + * | `jira.date.picker.java.format` | The date format for the Java (server-side) generated dates. This must be the same as the `jira.date.picker.javascript.format` format setting. | `d/MMM/yy` | + * | `jira.date.picker.javascript.format` | The date format for the JavaScript (client-side) generated dates. This must be the same as the `jira.date.picker.java.format` format setting. | `%e/%b/%y` | + * | `jira.date.time.picker.java.format` | The date format for the Java (server-side) generated date times. This must be the same as the `jira.date.time.picker.javascript.format` format setting. | `dd/MMM/yy h:mm a` | + * | `jira.date.time.picker.javascript.format` | The date format for the JavaScript (client-side) generated date times. This must be the same as the `jira.date.time.picker.java.format` format setting. | `%e/%b/%y %I:%M %p` | + * | `jira.issue.actions.order` | The default order of actions (such as *Comments* or *Change history*) displayed on the issue view. | `asc` | + * | `jira.view.issue.links.sort.order` | The sort order of the list of issue links on the issue view. | `type, status, priority` | + * | `jira.comment.collapsing.minimum.hidden` | The minimum number of comments required for comment collapsing to occur. A value of `0` disables comment collapsing. | `4` | + * | `jira.newsletter.tip.delay.days` | The number of days before a prompt to sign up to the Jira Insiders newsletter is shown. A value of `-1` disables this feature. | `7` | + * + * + * #### Look and feel #### + * + * The settings listed below adjust the [look and feel](https://confluence.atlassian.com/x/VwCLLg). + * + * | Key | Description | Default value | + * | -- | -- | -- | + * | `jira.lf.date.time` | The [ time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `h:mm a` | + * | `jira.lf.date.day` | The [ day format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `EEEE h:mm a` | + * | `jira.lf.date.complete` | The [ date and time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `dd/MMM/yy h:mm a` | + * | `jira.lf.date.dmy` | The [ date format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `dd/MMM/yy` | + * | `jira.date.time.picker.use.iso8061` | When enabled, sets Monday as the first day of the week in the date picker, as specified by the ISO8601 standard. | `false` | + * | `jira.lf.logo.url` | The URL of the logo image file. | `/images/icon-jira-logo.png` | + * | `jira.lf.logo.show.application.title` | Controls the visibility of the application title on the sidebar. | `false` | + * | `jira.lf.favicon.url` | The URL of the favicon. | `/favicon.ico` | + * | `jira.lf.favicon.hires.url` | The URL of the high-resolution favicon. | `/images/64jira.png` | + * | `jira.lf.navigation.bgcolour` | The background color of the sidebar. | `#0747A6` | + * | `jira.lf.navigation.highlightcolour` | The color of the text and logo of the sidebar. | `#DEEBFF` | + * | `jira.lf.hero.button.base.bg.colour` | The background color of the hero button. | `#3b7fc4` | + * | `jira.title` | The text for the application title. The application title can also be set in *General settings*. | `Jira` | + * | `jira.option.globalsharing` | Whether filters and dashboards can be shared with anyone signed into Jira. | `true` | + * | `xflow.product.suggestions.enabled` | Whether to expose product suggestions for other Atlassian products within Jira. | `true` | + * + * + * #### Other settings #### + * + * | Key | Description | Default value | + * | -- | -- | -- | + * | `jira.issuenav.criteria.autoupdate` | Whether instant updates to search criteria is active. | `true` | + * + * + * *Note: Be careful when changing [application properties and advanced settings](https://confluence.atlassian.com/x/vYXKM).* + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setApplicationProperty"]; + }; + "/rest/api/3/applicationrole": { + /** + * Get all application roles + * @description Returns all application roles. In Jira, application roles are managed using the [Application access configuration](https://confluence.atlassian.com/x/3YxjL) page. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllApplicationRoles"]; + }; + "/rest/api/3/applicationrole/{key}": { + /** + * Get application role + * @description Returns an application role. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getApplicationRole"]; + }; + "/rest/api/3/attachment/content/{id}": { + /** + * Get attachment content + * @description Returns the contents of an attachment. A `Range` header can be set to define a range of bytes within the attachment to download. See the [HTTP Range header standard](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range) for details. + * + * To return a thumbnail of the attachment, use [Get attachment thumbnail](#api-rest-api-3-attachment-thumbnail-id-get). + * + * This operation can be accessed anonymously. + * + * **[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. + */ + get: operations["getAttachmentContent"]; + }; + "/rest/api/3/attachment/meta": { + /** + * Get Jira attachment settings + * @description Returns the attachment settings, that is, whether attachments are enabled and the maximum attachment size allowed. + * + * Note that there are also [project permissions](https://confluence.atlassian.com/x/yodKLg) that restrict whether users can create and delete attachments. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAttachmentMeta"]; + }; + "/rest/api/3/attachment/thumbnail/{id}": { + /** + * Get attachment thumbnail + * @description Returns the thumbnail of an attachment. + * + * To return the attachment contents, use [Get attachment content](#api-rest-api-3-attachment-content-id-get). + * + * This operation can be accessed anonymously. + * + * **[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. + */ + get: operations["getAttachmentThumbnail"]; + }; + "/rest/api/3/attachment/{id}": { + /** + * Get attachment metadata + * @description Returns the metadata for an attachment. Note that the attachment itself is not returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + get: operations["getAttachment"]; + /** + * Delete attachment + * @description Deletes an attachment from an issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** For the project holding the issue containing the attachment: + * + * * *Delete own attachments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment created by the calling user. + * * *Delete all attachments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment created by any user. + */ + delete: operations["removeAttachment"]; + }; + "/rest/api/3/attachment/{id}/expand/human": { + /** + * Get all metadata for an expanded attachment + * @description Returns the metadata for the contents of an attachment, if it is an archive, and metadata for the attachment itself. For example, if the attachment is a ZIP archive, then information about the files in the archive is returned and metadata for the ZIP archive. Currently, only the ZIP archive format is supported. + * + * Use this operation to retrieve data that is presented to the user, as this operation returns the metadata for the attachment itself, such as the attachment's ID and name. Otherwise, use [ Get contents metadata for an expanded attachment](#api-rest-api-3-attachment-id-expand-raw-get), which only returns the metadata for the attachment's contents. + * + * This operation can be accessed anonymously. + * + * **[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. + */ + get: operations["expandAttachmentForHumans"]; + }; + "/rest/api/3/attachment/{id}/expand/raw": { + /** + * Get contents metadata for an expanded attachment + * @description Returns the metadata for the contents of an attachment, if it is an archive. For example, if the attachment is a ZIP archive, then information about the files in the archive is returned. Currently, only the ZIP archive format is supported. + * + * Use this operation if you are processing the data without presenting it to the user, as this operation only returns the metadata for the contents of the attachment. Otherwise, to retrieve data to present to the user, use [ Get all metadata for an expanded attachment](#api-rest-api-3-attachment-id-expand-human-get) which also returns the metadata for the attachment itself, such as the attachment's ID and name. + * + * This operation can be accessed anonymously. + * + * **[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. + */ + get: operations["expandAttachmentForMachines"]; + }; + "/rest/api/3/auditing/record": { + /** + * Get audit records + * @description Returns a list of audit records. The list can be filtered to include items: + * + * * where each item in `filter` has at least one match in any of these fields: + * + * * `summary` + * * `category` + * * `eventSource` + * * `objectItem.name` If the object is a user, account ID is available to filter. + * * `objectItem.parentName` + * * `objectItem.typeName` + * * `changedValues.changedFrom` + * * `changedValues.changedTo` + * * `remoteAddress` + * + * For example, if `filter` contains *man ed*, an audit record containing `summary": "User added to group"` and `"category": "group management"` is returned. + * * created on or after a date and time. + * * created or or before a date and time. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAuditRecords"]; + }; + "/rest/api/3/avatar/{type}/system": { + /** + * Get system avatars by type + * @description Returns a list of system avatar details by owner type, where the owner types are issue type, project, or user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAllSystemAvatars"]; + }; + "/rest/api/3/comment/list": { + /** + * Get comments by IDs + * @description Returns a [paginated](#pagination) list of comments specified by a list of comment IDs. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Comments are returned where the user: + * + * * has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the comment. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + post: operations["getCommentsByIds"]; + }; + "/rest/api/3/comment/{commentId}/properties": { + /** + * Get comment property keys + * @description Returns the keys of all the properties of a comment. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + get: operations["getCommentPropertyKeys"]; + }; + "/rest/api/3/comment/{commentId}/properties/{propertyKey}": { + /** + * Get comment property + * @description Returns the value of a comment property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + get: operations["getCommentProperty"]; + /** + * Set comment property + * @description Creates or updates the value of a property for a comment. Use this resource to store custom data against a comment. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** either of: + * + * * *Edit All Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value of a property on any comment. + * * *Edit Own Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value of a property on a comment created by the user. + * + * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or group. + */ + put: operations["setCommentProperty"]; + /** + * Delete comment property + * @description Deletes a comment property. + * + * **[Permissions](#permissions) required:** either of: + * + * * *Edit All Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from any comment. + * * *Edit Own Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from a comment created by the user. + * + * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or group. + */ + delete: operations["deleteCommentProperty"]; + }; + "/rest/api/3/component": { + /** + * Create component + * @description Creates a component. Use components to provide containers for issues within a project. Use components to provide containers for issues within a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the component is created or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createComponent"]; + }; + "/rest/api/3/component/{id}": { + /** + * Get component + * @description Returns a component. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for project containing the component. + */ + get: operations["getComponent"]; + /** + * Update component + * @description Updates a component. Any fields included in the request are overwritten. If `leadAccountId` is an empty string ("") the component lead is removed. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the component or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateComponent"]; + /** + * Delete component + * @description Deletes a component. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the component or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteComponent"]; + }; + "/rest/api/3/component/{id}/relatedIssueCounts": { + /** + * Get component issues count + * @description Returns the counts of issues assigned to the component. + * + * This operation can be accessed anonymously. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:field:jira`, `read:project.component:jira` + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getComponentRelatedIssues"]; + }; + "/rest/api/3/configuration": { + /** + * Get global settings + * @description Returns the [global settings](https://confluence.atlassian.com/x/qYXKM) in Jira. These settings determine whether optional features (for example, subtasks, time tracking, and others) are enabled. If time tracking is enabled, this operation also returns the time tracking configuration. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getConfiguration"]; + }; + "/rest/api/3/configuration/timetracking": { + /** + * Get selected time tracking provider + * @description Returns the time tracking provider that is currently selected. Note that if time tracking is disabled, then a successful but empty response is returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getSelectedTimeTrackingImplementation"]; + /** + * Select time tracking provider + * @description Selects a time tracking provider. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["selectTimeTrackingImplementation"]; + }; + "/rest/api/3/configuration/timetracking/list": { + /** + * Get all time tracking providers + * @description Returns all time tracking providers. By default, Jira only has one time tracking provider: *JIRA provided time tracking*. However, you can install other time tracking providers via apps from the Atlassian Marketplace. For more information on time tracking providers, see the documentation for the [ Time Tracking Provider](https://developer.atlassian.com/cloud/jira/platform/modules/time-tracking-provider/) module. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAvailableTimeTrackingImplementations"]; + }; + "/rest/api/3/configuration/timetracking/options": { + /** + * Get time tracking settings + * @description Returns the time tracking settings. This includes settings such as the time format, default time unit, and others. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getSharedTimeTrackingConfiguration"]; + /** + * Set time tracking settings + * @description Sets the time tracking settings. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setSharedTimeTrackingConfiguration"]; + }; + "/rest/api/3/customFieldOption/{id}": { + /** + * Get custom field option + * @description Returns a custom field option. For example, an option in a select list. + * + * Note that this operation **only works for issue field select list options created in Jira or using operations from the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue field select list options created by Connect apps. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The custom field option is returned as follows: + * + * * if the user has the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * if the user has the *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the custom field is used in, and the field is visible in at least one layout the user has permission to view. + */ + get: operations["getCustomFieldOption"]; + }; + "/rest/api/3/dashboard": { + /** + * Get all dashboards + * @description Returns a list of dashboards owned by or shared with the user. The list may be filtered to include only favorite or owned dashboards. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAllDashboards"]; + /** + * Create dashboard + * @description Creates a dashboard. + * + * **[Permissions](#permissions) required:** None. + */ + post: operations["createDashboard"]; + }; + "/rest/api/3/dashboard/bulk/edit": { + /** + * Bulk edit dashboards + * @description Bulk edit dashboards. Maximum number of dashboards to be edited at the same time is 100. + * + * **[Permissions](#permissions) required:** None + * + * The dashboards to be updated must be owned by the user, or the user must be an administrator. + */ + put: operations["bulkEditDashboards"]; + }; + "/rest/api/3/dashboard/gadgets": { + /** + * Get available gadgets + * @description Gets a list of all available gadgets that can be added to all dashboards. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAllAvailableDashboardGadgets"]; + }; + "/rest/api/3/dashboard/search": { + /** + * Search for dashboards + * @description Returns a [paginated](#pagination) list of dashboards. This operation is similar to [Get dashboards](#api-rest-api-3-dashboard-get) except that the results can be refined to include dashboards that have specific attributes. For example, dashboards with a particular name. When multiple attributes are specified only filters matching all attributes are returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The following dashboards that match the query parameters are returned: + * + * * Dashboards owned by the user. Not returned for anonymous users. + * * Dashboards shared with a group that the user is a member of. Not returned for anonymous users. + * * Dashboards shared with a private project that the user can browse. Not returned for anonymous users. + * * Dashboards shared with a public project. + * * Dashboards shared with the public. + */ + get: operations["getDashboardsPaginated"]; + }; + "/rest/api/3/dashboard/{dashboardId}/gadget": { + /** + * Get gadgets + * @description Returns a list of dashboard gadgets on a dashboard. + * + * This operation returns: + * + * * Gadgets from a list of IDs, when `id` is set. + * * Gadgets with a module key, when `moduleKey` is set. + * * Gadgets from a list of URIs, when `uri` is set. + * * All gadgets, when no other parameters are set. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAllGadgets"]; + /** + * Add gadget to dashboard + * @description Adds a gadget to a dashboard. + * + * **[Permissions](#permissions) required:** None. + */ + post: operations["addGadget"]; + }; + "/rest/api/3/dashboard/{dashboardId}/gadget/{gadgetId}": { + /** + * Update gadget on dashboard + * @description Changes the title, position, and color of the gadget on a dashboard. + * + * **[Permissions](#permissions) required:** None. + */ + put: operations["updateGadget"]; + /** + * Remove gadget from dashboard + * @description Removes a dashboard gadget from a dashboard. + * + * When a gadget is removed from a dashboard, other gadgets in the same column are moved up to fill the emptied position. + * + * **[Permissions](#permissions) required:** None. + */ + delete: operations["removeGadget"]; + }; + "/rest/api/3/dashboard/{dashboardId}/items/{itemId}/properties": { + /** + * Get dashboard item property keys + * @description Returns the keys of all properties for a dashboard item. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when Jira\\u2019s anonymous access is permitted. + */ + get: operations["getDashboardItemPropertyKeys"]; + }; + "/rest/api/3/dashboard/{dashboardId}/items/{itemId}/properties/{propertyKey}": { + /** + * Get dashboard item property + * @description Returns the key and value of a dashboard item property. + * + * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ). + * + * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this resource to store the item's content or configuration details. For more information on working with dashboard items, see [ Building a dashboard item for a JIRA Connect add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/) and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/) documentation. + * + * There is no resource to set or get dashboard items. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when Jira\\u2019s anonymous access is permitted. + */ + get: operations["getDashboardItemProperty"]; + /** + * Set dashboard item property + * @description Sets the value of a dashboard item property. Use this resource in apps to store custom data against a dashboard item. + * + * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ). + * + * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this resource to store the item's content or configuration details. For more information on working with dashboard items, see [ Building a dashboard item for a JIRA Connect add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/) and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/) documentation. + * + * There is no resource to set or get dashboard items. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. + */ + put: operations["setDashboardItemProperty"]; + /** + * Delete dashboard item property + * @description Deletes a dashboard item property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. + */ + delete: operations["deleteDashboardItemProperty"]; + }; + "/rest/api/3/dashboard/{id}": { + /** + * Get dashboard + * @description Returns a dashboard. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + * + * However, to get a dashboard, the dashboard must be shared with the user or the user must own it. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. The System dashboard is considered to be shared with all other users. + */ + get: operations["getDashboard"]; + /** + * Update dashboard + * @description Updates a dashboard, replacing all the dashboard details with those provided. + * + * **[Permissions](#permissions) required:** None + * + * The dashboard to be updated must be owned by the user. + */ + put: operations["updateDashboard"]; + /** + * Delete dashboard + * @description Deletes a dashboard. + * + * **[Permissions](#permissions) required:** None + * + * The dashboard to be deleted must be owned by the user. + */ + delete: operations["deleteDashboard"]; + }; + "/rest/api/3/dashboard/{id}/copy": { + /** + * Copy dashboard + * @description Copies a dashboard. Any values provided in the `dashboard` parameter replace those in the copied dashboard. + * + * **[Permissions](#permissions) required:** None + * + * The dashboard to be copied must be owned by or shared with the user. + */ + post: operations["copyDashboard"]; + }; + "/rest/api/3/events": { + /** + * Get events + * @description Returns all issue events. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getEvents"]; + }; + "/rest/api/3/expression/analyse": { + /** + * Analyse Jira expression + * @description 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](#permissions) required**: None. + */ + post: operations["analyseExpression"]; + }; + "/rest/api/3/expression/eval": { + /** + * Evaluate Jira expression + * @description 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](#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`). + */ + post: operations["evaluateJiraExpression"]; + }; + "/rest/api/3/field": { + /** + * Get fields + * @description Returns system and custom issue fields according to the following rules: + * + * * Fields that cannot be added to the issue navigator are always returned. + * * Fields that cannot be placed on an issue screen are always returned. + * * Fields that depend on global Jira settings are only returned if the setting is enabled. That is, timetracking fields, subtasks, votes, and watches. + * * For all other fields, this operation only returns the fields that the user has permission to view (that is, the field is used in at least one project that the user has *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for.) + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getFields"]; + /** + * Create custom field + * @description Creates a custom field. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createCustomField"]; + }; + "/rest/api/3/field/search": { + /** + * Get fields paginated + * @description Returns a [paginated](#pagination) list of fields for Classic Jira projects. The list can include: + * + * * all fields + * * specific fields, by defining `id` + * * fields that contain a string in the field name or description, by defining `query` + * * specific fields that contain a string in the field name or description, by defining `id` and `query` + * + * Only custom fields can be queried, `type` must be set to `custom`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getFieldsPaginated"]; + }; + "/rest/api/3/field/search/trashed": { + /** + * Get fields in trash paginated + * @description Returns a [paginated](#pagination) list of fields in the trash. The list may be restricted to fields whose field name or description partially match a string. + * + * Only custom fields can be queried, `type` must be set to `custom`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getTrashedFieldsPaginated"]; + }; + "/rest/api/3/field/{fieldId}": { + /** + * Update custom field + * @description Updates a custom field. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateCustomField"]; + }; + "/rest/api/3/field/{fieldId}/context": { + /** + * Get custom field contexts + * @description Returns a [paginated](#pagination) list of [ contexts](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html) for a custom field. Contexts can be returned as follows: + * + * * With no other parameters set, all contexts. + * * By defining `id` only, all contexts from the list of IDs. + * * By defining `isAnyIssueType`, limit the list of contexts returned to either those that apply to all issue types (true) or those that apply to only a subset of issue types (false) + * * By defining `isGlobalContext`, limit the list of contexts return to either those that apply to all projects (global contexts) (true) or those that apply to only a subset of projects (false). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getContextsForField"]; + /** + * Create custom field context + * @description Creates a custom field context. + * + * If `projectIds` is empty, a global context is created. A global context is one that applies to all project. If `issueTypeIds` is empty, the context applies to all issue types. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createCustomFieldContext"]; + }; + "/rest/api/3/field/{fieldId}/context/defaultValue": { + /** + * Get custom field contexts default values + * @description Returns a [paginated](#pagination) list of defaults for a custom field. The results can be filtered by `contextId`, otherwise all values are returned. If no defaults are set for a context, nothing is returned. + * The returned object depends on type of the custom field: + * + * * `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields. + * * `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields. + * * `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio buttons. + * * `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and checkboxes. + * * `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists. + * * `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users. + * * `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists. + * * `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers. + * * `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group pickers. + * * `CustomFieldContextDefaultValueURL` (type `url`) for URLs. + * * `CustomFieldContextDefaultValueProject` (type `project`) for project pickers. + * * `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers). + * * `CustomFieldContextDefaultValueLabels` (type `labels`) for labels. + * * `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields. + * * `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields. + * * `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields. + * * `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers. + * * `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers. + * + * Forge custom fields [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types) are also supported, returning: + * + * * `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields. + * * `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection fields. + * * `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields. + * * `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields. + * * `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields. + * * `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection fields. + * * `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields. + * * `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields. + * * `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getDefaultValues"]; + /** + * Set custom field contexts default values + * @description Sets default for contexts of a custom field. Default are defined using these objects: + * + * * `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields. + * * `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields. + * * `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio buttons. + * * `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and checkboxes. + * * `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists. + * * `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users. + * * `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists. + * * `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers. + * * `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group pickers. + * * `CustomFieldContextDefaultValueURL` (type `url`) for URLs. + * * `CustomFieldContextDefaultValueProject` (type `project`) for project pickers. + * * `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers). + * * `CustomFieldContextDefaultValueLabels` (type `labels`) for labels. + * * `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields. + * * `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields. + * * `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields. + * * `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers. + * * `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers. + * + * Forge custom fields [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types) are also supported, returning: + * + * * `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields. + * * `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection fields. + * * `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields. + * * `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields. + * * `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields. + * * `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection fields. + * * `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields. + * * `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields. + * * `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields. + * + * Only one type of default object can be included in a request. To remove a default for a context, set the default parameter to `null`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setDefaultValues"]; + }; + "/rest/api/3/field/{fieldId}/context/issuetypemapping": { + /** + * Get issue types for custom field context + * @description Returns a [paginated](#pagination) list of context to issue type mappings for a custom field. Mappings are returned for all contexts or a list of contexts. Mappings are ordered first by context ID and then by issue type ID. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypeMappingsForContexts"]; + }; + "/rest/api/3/field/{fieldId}/context/mapping": { + /** + * Get custom field contexts for projects and issue types + * @description Returns a [paginated](#pagination) list of project and issue type mappings and, for each mapping, the ID of a [custom field context](https://confluence.atlassian.com/x/k44fOw) that applies to the project and issue type. + * + * If there is no custom field context assigned to the project then, if present, the custom field context that applies to all projects is returned if it also applies to the issue type or all issue types. If a custom field context is not found, the returned custom field context ID is `null`. + * + * Duplicate project and issue type mappings cannot be provided in the request. + * + * The order of the returned values is the same as provided in the request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["getCustomFieldContextsForProjectsAndIssueTypes"]; + }; + "/rest/api/3/field/{fieldId}/context/projectmapping": { + /** + * Get project mappings for custom field context + * @description Returns a [paginated](#pagination) list of context to project mappings for a custom field. The result can be filtered by `contextId`. Otherwise, all mappings are returned. Invalid IDs are ignored. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getProjectContextMapping"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}": { + /** + * Update custom field context + * @description Updates a [ custom field context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateCustomFieldContext"]; + /** + * Delete custom field context + * @description Deletes a [ custom field context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteCustomFieldContext"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/issuetype": { + /** + * Add issue types to context + * @description Adds issue types to a custom field context, appending the issue types to the issue types list. + * + * A custom field context without any issue types applies to all issue types. Adding issue types to such a custom field context would result in it applying to only the listed issue types. + * + * If any of the issue types exists in the custom field context, the operation fails and no issue types are added. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["addIssueTypesToContext"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/issuetype/remove": { + /** + * Remove issue types from context + * @description Removes issue types from a custom field context. + * + * A custom field context without any issue types applies to all issue types. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["removeIssueTypesFromContext"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/option": { + /** + * Get custom field options (context) + * @description Returns a [paginated](#pagination) list of all custom field option for a context. Options are returned first then cascading options, in the order they display in Jira. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getOptionsForContext"]; + /** + * Update custom field options (context) + * @description Updates the options of a custom field. + * + * If any of the options are not found, no options are updated. Options where the values in the request match the current values aren't updated and aren't reported in the response. + * + * Note that this operation **only works for issue field select list options created in Jira or using operations from the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue field select list options created by Connect apps. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateCustomFieldOption"]; + /** + * Create custom field options (context) + * @description Creates options and, where the custom select field is of the type Select List (cascading), cascading options for a custom select field. The options are added to a context of the field. + * + * The maximum number of options that can be created per request is 1000 and each field can have a maximum of 10000 options. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createCustomFieldOption"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/option/move": { + /** + * Reorder custom field options (context) + * @description Changes the order of custom field options or cascading options in a context. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["reorderCustomFieldOptions"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/option/{optionId}": { + /** + * Delete custom field options (context) + * @description Deletes a custom field option. + * + * Options with cascading options cannot be deleted without deleting the cascading options first. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteCustomFieldOption"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/project": { + /** + * Assign custom field context to projects + * @description Assigns a custom field context to projects. + * + * If any project in the request is assigned to any context of the custom field, the operation fails. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["assignProjectsToCustomFieldContext"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/project/remove": { + /** + * Remove custom field context from projects + * @description Removes a custom field context from projects. + * + * A custom field context without any projects applies to all projects. Removing all projects from a custom field context would result in it applying to all projects. + * + * If any project in the request is not assigned to the context, or the operation would result in two global contexts for the field, the operation fails. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["removeCustomFieldContextFromProjects"]; + }; + "/rest/api/3/field/{fieldId}/contexts": { + /** + * Get contexts for a field + * @deprecated + * @description Returns a [paginated](#pagination) list of the contexts a field is used in. Deprecated, use [ Get custom field contexts](#api-rest-api-3-field-fieldId-context-get). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getContextsForFieldDeprecated"]; + }; + "/rest/api/3/field/{fieldId}/screens": { + /** + * Get screens for a field + * @description Returns a [paginated](#pagination) list of the screens a field is used in. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getScreensForField"]; + }; + "/rest/api/3/field/{fieldKey}/option": { + /** + * Get all issue field options + * @description Returns a [paginated](#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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + get: operations["getAllIssueFieldOptions"]; + /** + * Create issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + post: operations["createIssueFieldOption"]; + }; + "/rest/api/3/field/{fieldKey}/option/suggestions/edit": { + /** + * Get selectable issue field options + * @description Returns a [paginated](#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](#permissions) required:** Permission to access Jira. + */ + get: operations["getSelectableIssueFieldOptions"]; + }; + "/rest/api/3/field/{fieldKey}/option/suggestions/search": { + /** + * Get visible issue field options + * @description Returns a [paginated](#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](#permissions) required:** Permission to access Jira. + */ + get: operations["getVisibleIssueFieldOptions"]; + }; + "/rest/api/3/field/{fieldKey}/option/{optionId}": { + /** + * Get issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + get: operations["getIssueFieldOption"]; + /** + * Update issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + put: operations["updateIssueFieldOption"]; + /** + * Delete issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + delete: operations["deleteIssueFieldOption"]; + }; + "/rest/api/3/field/{fieldKey}/option/{optionId}/issue": { + /** + * Replace issue field option + * @description 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](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + delete: operations["replaceIssueFieldOption"]; + }; + "/rest/api/3/field/{id}": { + /** + * Delete custom field + * @description Deletes a custom field. The custom field is deleted whether it is in the trash or not. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteCustomField"]; + }; + "/rest/api/3/field/{id}/restore": { + /** + * Restore custom field from trash + * @description Restores a custom field from trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["restoreCustomField"]; + }; + "/rest/api/3/field/{id}/trash": { + /** + * Move custom field to trash + * @description Moves a custom field to trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["trashCustomField"]; + }; + "/rest/api/3/fieldconfiguration": { + /** + * Get all field configurations + * @description Returns a [paginated](#pagination) list of field configurations. The list can be for all field configurations or a subset determined by any combination of these criteria: + * + * * a list of field configuration item IDs. + * * whether the field configuration is a default. + * * whether the field configuration name or description contains a query string. + * + * Only field configurations used in company-managed (classic) projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllFieldConfigurations"]; + /** + * Create field configuration + * @description Creates a field configuration. The field configuration is created with the same field properties as the default configuration, with all the fields being optional. + * + * This operation can only create configurations for use in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createFieldConfiguration"]; + }; + "/rest/api/3/fieldconfiguration/{id}": { + /** + * Update field configuration + * @description Updates a field configuration. The name and the description provided in the request override the existing values. + * + * This operation can only update configurations used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateFieldConfiguration"]; + /** + * Delete field configuration + * @description Deletes a field configuration. + * + * This operation can only delete configurations used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteFieldConfiguration"]; + }; + "/rest/api/3/fieldconfiguration/{id}/fields": { + /** + * Get field configuration items + * @description Returns a [paginated](#pagination) list of all fields for a configuration. + * + * Only the fields from configurations used in company-managed (classic) projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getFieldConfigurationItems"]; + /** + * Update field configuration items + * @description Updates fields in a field configuration. The properties of the field configuration fields provided override the existing values. + * + * This operation can only update field configurations used in company-managed (classic) projects. + * + * The operation can set the renderer for text fields to the default text renderer (`text-renderer`) or wiki style renderer (`wiki-renderer`). However, the renderer cannot be updated for fields using the autocomplete renderer (`autocomplete-renderer`). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateFieldConfigurationItems"]; + }; + "/rest/api/3/fieldconfigurationscheme": { + /** + * Get all fieldg rnfiguration schemes + * @description Returns a [paginated](#pagination) list of field configuration schemes. + * + * Only field configuration schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllFieldgRnfigurationSchemes"]; + /** + * Create field configuration scheme + * @description Creates a field configuration scheme. + * + * This operation can only create field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createFieldConfigurationScheme"]; + }; + "/rest/api/3/fieldconfigurationscheme/mapping": { + /** + * Get field configuration issue type items + * @description Returns a [paginated](#pagination) list of field configuration issue type items. + * + * Only items used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getFieldConfigurationSchemeMappings"]; + }; + "/rest/api/3/fieldconfigurationscheme/project": { + /** + * Get field configuration schemes for projects + * @description Returns a [paginated](#pagination) list of field configuration schemes and, for each scheme, a list of the projects that use it. + * + * The list is sorted by field configuration scheme ID. The first item contains the list of project IDs assigned to the default field configuration scheme. + * + * Only field configuration schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getFieldConfigurationSchemeProjectMapping"]; + /** + * Assign field configuration scheme to project + * @description Assigns a field configuration scheme to a project. If the field configuration scheme ID is `null`, the operation assigns the default field configuration scheme. + * + * Field configuration schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["assignFieldConfigurationSchemeToProject"]; + }; + "/rest/api/3/fieldconfigurationscheme/{id}": { + /** + * Update field configuration scheme + * @description Updates a field configuration scheme. + * + * This operation can only update field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateFieldConfigurationScheme"]; + /** + * Delete field configuration scheme + * @description Deletes a field configuration scheme. + * + * This operation can only delete field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteFieldConfigurationScheme"]; + }; + "/rest/api/3/fieldconfigurationscheme/{id}/mapping": { + /** + * Assign issue types to field configurations + * @description Assigns issue types to field configurations on field configuration scheme. + * + * This operation can only modify field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setFieldConfigurationSchemeMapping"]; + }; + "/rest/api/3/fieldconfigurationscheme/{id}/mapping/delete": { + /** + * Remove issue types from field configuration scheme + * @description Removes issue types from the field configuration scheme. + * + * This operation can only modify field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["removeIssueTypesFromGlobalFieldConfigurationScheme"]; + }; + "/rest/api/3/filter": { + /** + * Create filter + * @description Creates a filter. The filter is shared according to the [default share scope](#api-rest-api-3-filter-post). The filter is not selected as a favorite. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + post: operations["createFilter"]; + }; + "/rest/api/3/filter/defaultShareScope": { + /** + * Get default share scope + * @description Returns the default sharing settings for new filters and dashboards for a user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getDefaultShareScope"]; + /** + * Set default share scope + * @description Sets the default sharing for new filters and dashboards for a user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + put: operations["setDefaultShareScope"]; + }; + "/rest/api/3/filter/favourite": { + /** + * Get favorite filters + * @description Returns the visible favorite filters of the user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** A favorite filter is only visible to the user where the filter is: + * + * * owned by the user. + * * shared with a group that the user is a member of. + * * shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * shared with a public project. + * * shared with the public. + * + * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by this operation. + */ + get: operations["getFavouriteFilters"]; + }; + "/rest/api/3/filter/my": { + /** + * Get my filters + * @description Returns the filters owned by the user. If `includeFavourites` is `true`, the user's visible favorite filters are also returned. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, a favorite filters is only visible to the user where the filter is: + * + * * owned by the user. + * * shared with a group that the user is a member of. + * * shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * shared with a public project. + * * shared with the public. + * + * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by this operation. + */ + get: operations["getMyFilters"]; + }; + "/rest/api/3/filter/search": { + /** + * Search for filters + * @description Returns a [paginated](#pagination) list of filters. Use this operation to get: + * + * * specific filters, by defining `id` only. + * * filters that match all of the specified attributes. For example, all filters for a user with a particular word in their name. When multiple attributes are specified only filters matching all attributes are returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, only the following filters that match the query parameters are returned: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + get: operations["getFiltersPaginated"]; + }; + "/rest/api/3/filter/{id}": { + /** + * Get filter + * @description Returns a filter. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, the filter is only returned where it is: + * + * * owned by the user. + * * shared with a group that the user is a member of. + * * shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * shared with a public project. + * * shared with the public. + */ + get: operations["getFilter"]; + /** + * Update filter + * @description Updates a filter. Use this operation to update a filter's name, description, JQL, or sharing. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however the user must own the filter. + */ + put: operations["updateFilter"]; + /** + * Delete filter + * @description Delete a filter. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however filters can only be deleted by the creator of the filter or a user with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteFilter"]; + }; + "/rest/api/3/filter/{id}/columns": { + /** + * Get columns + * @description Returns the columns configured for a filter. The column configuration is used when the filter's results are viewed in *List View* with the *Columns* set to *Filter*. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, column details are only returned for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + get: operations["getColumns"]; + /** + * Set columns + * @description Sets the columns for a filter. Only navigable fields can be set as columns. Use [Get fields](#api-rest-api-3-field-get) to get the list fields in Jira. A navigable field has `navigable` set to `true`. + * + * The parameters for this resource are expressed as HTML form data. For example, in curl: + * + * `curl -X PUT -d columns=summary -d columns=description https://your-domain.atlassian.net/rest/api/3/filter/10000/columns` + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, columns are only set for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + put: operations["setColumns"]; + /** + * Reset columns + * @description Reset the user's column configuration for the filter to the default. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, columns are only reset for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + delete: operations["resetColumns"]; + }; + "/rest/api/3/filter/{id}/favourite": { + /** + * Add filter as favorite + * @description Add a filter as a favorite for the user. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, the user can only favorite: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + put: operations["setFavouriteForFilter"]; + /** + * Remove filter as favorite + * @description Removes a filter as a favorite for the user. Note that this operation only removes filters visible to the user from the user's favorites list. For example, if the user favorites a public filter that is subsequently made private (and is therefore no longer visible on their favorites list) they cannot remove it from their favorites list. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + delete: operations["deleteFavouriteForFilter"]; + }; + "/rest/api/3/filter/{id}/owner": { + /** + * Change filter owner + * @description Changes the owner of the filter. + * + * **[Permissions](#permissions) required:** Permission to access Jira. However, the user must own the filter or have the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["changeFilterOwner"]; + }; + "/rest/api/3/filter/{id}/permission": { + /** + * Get share permissions + * @description Returns the share permissions for a filter. A filter can be shared with groups, projects, all logged-in users, or the public. Sharing with all logged-in users or the public is known as a global share permission. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, share permissions are only returned for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + get: operations["getSharePermissions"]; + /** + * Add share permission + * @description Add a share permissions to a filter. If you add a global share permission (one for all logged-in users or the public) it will overwrite all share permissions for the filter. + * + * Be aware that this operation uses different objects for updating share permissions compared to [Update filter](#api-rest-api-3-filter-id-put). + * + * **[Permissions](#permissions) required:** *Share dashboards and filters* [global permission](https://confluence.atlassian.com/x/x4dKLg) and the user must own the filter. + */ + post: operations["addSharePermission"]; + }; + "/rest/api/3/filter/{id}/permission/{permissionId}": { + /** + * Get share permission + * @description Returns a share permission for a filter. A filter can be shared with groups, projects, all logged-in users, or the public. Sharing with all logged-in users or the public is known as a global share permission. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, a share permission is only returned for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + get: operations["getSharePermission"]; + /** + * Delete share permission + * @description Deletes a share permission from a filter. + * + * **[Permissions](#permissions) required:** Permission to access Jira and the user must own the filter. + */ + delete: operations["deleteSharePermission"]; + }; + "/rest/api/3/group": { + /** + * Get group + * @deprecated + * @description This operation is deprecated, use [`group/member`](#api-rest-api-3-group-member-get). + * + * Returns all users in a group. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getGroup"]; + /** + * Create group + * @description Creates a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + post: operations["createGroup"]; + /** + * Remove group + * @description Deletes a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* strategic [group](https://confluence.atlassian.com/x/24xjL)). + */ + delete: operations["removeGroup"]; + }; + "/rest/api/3/group/bulk": { + /** + * Bulk get groups + * @description Returns a [paginated](#pagination) list of groups. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["bulkGetGroups"]; + }; + "/rest/api/3/group/member": { + /** + * Get users from group + * @description Returns a [paginated](#pagination) list of all users in a group. + * + * Note that users are ordered by username, however the username is not returned in the results due to privacy reasons. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getUsersFromGroup"]; + }; + "/rest/api/3/group/user": { + /** + * Add user to group + * @description Adds a user to a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + post: operations["addUserToGroup"]; + /** + * Remove user from group + * @description Removes a user from a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + delete: operations["removeUserFromGroup"]; + }; + "/rest/api/3/groups/picker": { + /** + * Find groups + * @description Returns a list of groups whose names contain a query string. A list of group names can be provided to exclude groups from the results. + * + * The primary use case for this resource is to populate a group picker suggestions list. To this end, the returned object includes the `html` field where the matched query term is highlighted in the group name with the HTML strong tag. Also, the groups list is wrapped in a response object that contains a header for use in the picker, specifically *Showing X of Y matching groups*. + * + * The list returns with the groups sorted. If no groups match the list criteria, an empty list is returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg). Anonymous calls and calls by users without the required permission return an empty list. + * + * *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Without this permission, calls where query is not an exact match to an existing group will return an empty list. + */ + get: operations["findGroups"]; + }; + "/rest/api/3/groupuserpicker": { + /** + * Find users and groups + * @description Returns a list of users and groups matching a string. The string is used: + * + * * for users, to find a case-insensitive match with display name and e-mail address. Note that if a user has hidden their email address in their user profile, partial matches of the email address will not find the user. An exact match is required. + * * for groups, to find a case-sensitive match with group name. + * + * For example, if the string *tin* is used, records with the display name *Tina*, email address *sarah@tinplatetraining.com*, and the group *accounting* would be returned. + * + * Optionally, the search can be refined to: + * + * * the projects and issue types associated with a custom field, such as a user picker. The search can then be further refined to return only users and groups that have permission to view specific: + * + * * projects. + * * issue types. + * + * If multiple projects or issue types are specified, they must be a subset of those enabled for the custom field or no results are returned. For example, if a field is enabled for projects A, B, and C then the search could be limited to projects B and C. However, if the search is limited to projects B and D, nothing is returned. + * * not return Connect app users and groups. + * * return groups that have a case-insensitive match with the query. + * + * The primary use case for this resource is to populate a picker field suggestion list with users or groups. To this end, the returned object includes an `html` field for each list. This field highlights the matched query term in the item name with the HTML strong tag. Also, each list is wrapped in a response object that contains a header for use in a picker, specifically *Showing X of Y matching groups*. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/yodKLg). + */ + get: operations["findUsersAndGroups"]; + }; + "/rest/api/3/instance/license": { + /** + * Get license + * @description Returns licensing information about the Jira instance. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getLicense"]; + }; + "/rest/api/3/issue": { + /** + * Create issue + * @description Creates an issue or, where the option to create subtasks is enabled in Jira, a subtask. A transition may be applied, to move the issue or subtask to a workflow step other than the default start step, and issue properties set. + * + * The content of the issue or subtask is defined using `update` and `fields`. The fields that can be set in the issue or subtask are determined using the [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get). These are the same fields that appear on the issue's create screen. Note that the `description`, `environment`, and any `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`) accept a string and don't handle Atlassian Document Format content. + * + * Creating a subtask differs from creating an issue as follows: + * + * * `issueType` must be set to a subtask issue type (use [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get) to find subtask issue types). + * * `parent` must contain the ID or key of the parent issue. + * + * In a next-gen project any issue may be made a child providing that the parent and child are members of the same project. + * + * **[Permissions](#permissions) required:** *Browse projects* and *Create issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in which the issue or subtask is created. + */ + post: operations["createIssue"]; + }; + "/rest/api/3/issue/archive": { + /** + * Archive issue(s) by issue ID/key + * @description Enables admins to archive up to 1000 issues in a single request using issue ID/key, returning details of the issue(s) archived in the process and the errors encountered, if any. + * + * **Note that:** + * + * * you can't archive subtasks directly, only through their parent issues + * * you can only archive issues from software, service management, and business projects + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + */ + put: operations["archiveIssues"]; + /** + * Archive issue(s) by JQL + * @description Enables admins to archive up to 100,000 issues in a single request using JQL, returning the URL to check the status of the submitted request. + * + * You can use the [get task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-get) and [cancel task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-cancel-post) APIs to manage the request. + * + * **Note that:** + * + * * you can't archive subtasks directly, only through their parent issues + * * you can only archive issues from software, service management, and business projects + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + * + * **Rate limiting:** Only a single request per jira instance can be active at any given time. + */ + post: operations["archiveIssuesAsync"]; + }; + "/rest/api/3/issue/bulk": { + /** + * Bulk create issue + * @description Creates upto **50** issues and, where the option to create subtasks is enabled in Jira, subtasks. Transitions may be applied, to move the issues or subtasks to a workflow step other than the default start step, and issue properties set. + * + * The content of each issue or subtask is defined using `update` and `fields`. The fields that can be set in the issue or subtask are determined using the [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get). These are the same fields that appear on the issues' create screens. Note that the `description`, `environment`, and any `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`) accept a string and don't handle Atlassian Document Format content. + * + * Creating a subtask differs from creating an issue as follows: + * + * * `issueType` must be set to a subtask issue type (use [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get) to find subtask issue types). + * * `parent` the must contain the ID or key of the parent issue. + * + * **[Permissions](#permissions) required:** *Browse projects* and *Create issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in which each issue or subtask is created. + */ + post: operations["createIssues"]; + }; + "/rest/api/3/issue/createmeta": { + /** + * Get create issue metadata + * @deprecated + * @description Returns details of projects, issue types within projects, and, when requested, the create screen fields for each issue type for the user. Use the information to populate the requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). + * + * The request can be restricted to specific projects or issue types using the query parameters. The response will contain information for the valid projects, issue types, or project and issue type combinations requested. Note that invalid project, issue type, or project and issue type combinations do not generate errors. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects. + */ + get: operations["getCreateIssueMeta"]; + }; + "/rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes": { + /** + * Get create metadata issue types for a project + * @description Returns a page of issue type metadata for a specified project. Use the information to populate the requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects. + */ + get: operations["getCreateIssueMetaIssueTypes"]; + }; + "/rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes/{issueTypeId}": { + /** + * Get create field metadata for a project and issue type id + * @description Returns a page of field metadata for a specified project and issuetype id. Use the information to populate the requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects. + */ + get: operations["getCreateIssueMetaIssueTypeId"]; + }; + "/rest/api/3/issue/picker": { + /** + * Get issue picker suggestions + * @description Returns lists of issues matching a query string. Use this resource to provide auto-completion suggestions when the user is looking for an issue using a word or string. + * + * This operation returns two lists: + * + * * `History Search` which includes issues from the user's history of created, edited, or viewed issues that contain the string in the `query` parameter. + * * `Current Search` which includes issues that match the JQL expression in `currentJQL` and contain the string in the `query` parameter. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getIssuePickerResource"]; + }; + "/rest/api/3/issue/properties": { + /** + * Bulk set issues properties by list + * @description Sets or updates a list of entity property values on issues. A list of up to 10 entity properties can be specified along with up to 10,000 issues on which to set or update that list of entity properties. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON. The maximum length of single issue property value is 32768 characters. This operation can be accessed anonymously. + * + * This operation is: + * + * * transactional, either all properties are updated in all eligible issues or, when errors occur, no properties are updated. + * * [asynchronous](#async). 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](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + post: operations["bulkSetIssuesPropertiesList"]; + }; + "/rest/api/3/issue/properties/multi": { + /** + * Bulk set issue properties by issue + * @description Sets or updates entity property values on issues. Up to 10 entity properties can be specified for each issue and up to 100 issues included in the request. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON. + * + * This operation is: + * + * * [asynchronous](#async). 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. + * * non-transactional. Updating some entities may fail. Such information will available in the task result. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + post: operations["bulkSetIssuePropertiesByIssue"]; + }; + "/rest/api/3/issue/properties/{propertyKey}": { + /** + * Bulk set issue property + * @description Sets a property value on multiple issues. + * + * The value set can be a constant or determined by a [Jira expression](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/). Expressions must be computable with constant complexity when applied to a set of issues. Expressions must also comply with the [restrictions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#restrictions) that apply to all Jira expressions. + * + * The issues to be updated can be specified by a filter. + * + * The filter identifies issues eligible for update using these criteria: + * + * * `entityIds` Only issues from this list are eligible. + * * `currentValue` Only issues with the property set to this value are eligible. + * * `hasProperty`: + * + * * If *true*, only issues with the property are eligible. + * * If *false*, only issues without the property are eligible. + * + * If more than one criteria is specified, they are joined with the logical *AND*: only issues that satisfy all criteria are eligible. + * + * If an invalid combination of criteria is provided, an error is returned. For example, specifying a `currentValue` and `hasProperty` as *false* would not match any issues (because without the property the property cannot have a value). + * + * The filter is optional. Without the filter all the issues visible to the user and where the user has the EDIT\_ISSUES permission for the issue are considered eligible. + * + * This operation is: + * + * * transactional, either all eligible issues are updated or, when errors occur, none are updated. + * * [asynchronous](#async). 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](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing issues. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Edit issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue. + */ + put: operations["bulkSetIssueProperty"]; + /** + * Bulk delete issue property + * @description Deletes a property value from multiple issues. The issues to be updated can be specified by filter criteria. + * + * The criteria the filter used to identify eligible issues are: + * + * * `entityIds` Only issues from this list are eligible. + * * `currentValue` Only issues with the property set to this value are eligible. + * + * If both criteria is specified, they are joined with the logical *AND*: only issues that satisfy both criteria are considered eligible. + * + * If no filter criteria are specified, all the issues visible to the user and where the user has the EDIT\_ISSUES permission for the issue are considered eligible. + * + * This operation is: + * + * * transactional, either the property is deleted from all eligible issues or, when errors occur, no properties are deleted. + * * [asynchronous](#async). 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](#permissions) required:** + * + * * *Browse projects* [ project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing issues. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Edit issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue. + */ + delete: operations["bulkDeleteIssueProperty"]; + }; + "/rest/api/3/issue/unarchive": { + /** + * Unarchive issue(s) by issue keys/ID + * @description Enables admins to unarchive up to 1000 issues in a single request using issue ID/key, returning details of the issue(s) unarchived in the process and the errors encountered, if any. + * + * **Note that:** + * + * * you can't unarchive subtasks directly, only through their parent issues + * * you can only unarchive issues from software, service management, and business projects + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + */ + put: operations["unarchiveIssues"]; + }; + "/rest/api/3/issue/watching": { + /** + * Get is watching issue bulk + * @description Returns, for the user, details of the watched status of issues from a list. If an issue ID is invalid, the returned watched status is `false`. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + post: operations["getIsWatchingIssueBulk"]; + }; + "/rest/api/3/issue/{issueIdOrKey}": { + /** + * Get issue + * @description Returns the details for an issue. + * + * The issue is identified by its ID or key, however, if the identifier doesn't match an issue, a case-insensitive search and check for moved issues is performed. If a matching issue is found its details are returned, a 302 or other redirect is **not** returned. The issue key returned in the response is the key of the issue found. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + get: operations["getIssue"]; + /** + * Edit issue + * @description Edits an issue. A transition may be applied and issue properties updated as part of the edit. + * + * The edits to the issue's fields are defined using `update` and `fields`. The fields that can be edited are determined using [ Get edit issue metadata](#api-rest-api-3-issue-issueIdOrKey-editmeta-get). + * + * The parent field may be set by key or ID. For standard issue types, the parent may be removed by setting `update.parent.set.none` to *true*. Note that the `description`, `environment`, and any `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`) accept a string and don't handle Atlassian Document Format content. + * + * Connect apps having an app user with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), can override the screen security configuration using `overrideScreenSecurity` and `overrideEditableFlag`. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [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. + */ + put: operations["editIssue"]; + /** + * Delete issue + * @description Deletes an issue. + * + * An issue cannot be deleted if it has one or more subtasks. To delete an issue with subtasks, set `deleteSubtasks`. This causes the issue's subtasks to be deleted with the issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Delete issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + delete: operations["deleteIssue"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/assignee": { + /** + * Assign issue + * @description Assigns an issue to a user. Use this operation when the calling user does not have the *Edit Issues* permission but has the *Assign issue* permission for the project that the issue is in. + * + * If `name` or `accountId` is set to: + * + * * `"-1"`, the issue is assigned to the default assignee for the project. + * * `null`, the issue is set to unassigned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse Projects* and *Assign Issues* [ 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. + */ + put: operations["assignIssue"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/attachments": { + /** + * Add attachment + * @description Adds one or more attachments to an issue. Attachments are posted as multipart/form-data ([RFC 1867](https://www.ietf.org/rfc/rfc1867.txt)). + * + * Note that: + * + * * The request must have a `X-Atlassian-Token: no-check` header, if not it is blocked. See [Special headers](#special-request-headers) for more information. + * * The name of the multipart/form-data parameter that contains the attachments must be `file`. + * + * The following examples upload a file called *myfile.txt* to the issue *TEST-123*: + * + * #### curl #### + * + * curl --location --request POST 'https://your-domain.atlassian.net/rest/api/3/issue/TEST-123/attachments' + * -u 'email@example.com:' + * -H 'X-Atlassian-Token: no-check' + * --form 'file=@"myfile.txt"' + * + * #### Node.js #### + * + * // This code sample uses the 'node-fetch' and 'form-data' libraries: + * // https://www.npmjs.com/package/node-fetch + * // https://www.npmjs.com/package/form-data + * const fetch = require('node-fetch'); + * const FormData = require('form-data'); + * const fs = require('fs'); + * + * const filePath = 'myfile.txt'; + * const form = new FormData(); + * const stats = fs.statSync(filePath); + * const fileSizeInBytes = stats.size; + * const fileStream = fs.createReadStream(filePath); + * + * form.append('file', fileStream, {knownLength: fileSizeInBytes}); + * + * fetch('https://your-domain.atlassian.net/rest/api/3/issue/TEST-123/attachments', { + * method: 'POST', + * body: form, + * headers: { + * 'Authorization': `Basic ${Buffer.from( + * 'email@example.com:' + * ).toString('base64')}`, + * 'Accept': 'application/json', + * 'X-Atlassian-Token': 'no-check' + * } + * }) + * .then(response => { + * console.log( + * `Response: ${response.status} ${response.statusText}` + * ); + * return response.text(); + * }) + * .then(text => console.log(text)) + * .catch(err => console.error(err)); + * + * #### Java #### + * + * // This code sample uses the 'Unirest' library: + * // http://unirest.io/java.html + * HttpResponse response = Unirest.post("https://your-domain.atlassian.net/rest/api/2/issue/{issueIdOrKey}/attachments") + * .basicAuth("email@example.com", "") + * .header("Accept", "application/json") + * .header("X-Atlassian-Token", "no-check") + * .field("file", new File("myfile.txt")) + * .asJson(); + * + * System.out.println(response.getBody()); + * + * #### Python #### + * + * # This code sample uses the 'requests' library: + * # http://docs.python-requests.org + * import requests + * from requests.auth import HTTPBasicAuth + * import json + * + * url = "https://your-domain.atlassian.net/rest/api/2/issue/{issueIdOrKey}/attachments" + * + * auth = HTTPBasicAuth("email@example.com", "") + * + * headers = { + * "Accept": "application/json", + * "X-Atlassian-Token": "no-check" + * } + * + * response = requests.request( + * "POST", + * url, + * headers = headers, + * auth = auth, + * files = { + * "file": ("myfile.txt", open("myfile.txt","rb"), "application-type") + * } + * ) + * + * print(json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": "))) + * + * #### PHP #### + * + * // This code sample uses the 'Unirest' library: + * // http://unirest.io/php.html + * Unirest\Request::auth('email@example.com', ''); + * + * $headers = array( + * 'Accept' => 'application/json', + * 'X-Atlassian-Token' => 'no-check' + * ); + * + * $parameters = array( + * 'file' => File::add('myfile.txt') + * ); + * + * $response = Unirest\Request::post( + * 'https://your-domain.atlassian.net/rest/api/2/issue/{issueIdOrKey}/attachments', + * $headers, + * $parameters + * ); + * + * var_dump($response) + * + * #### Forge #### + * + * // This sample uses Atlassian Forge and the `form-data` library. + * // https://developer.atlassian.com/platform/forge/ + * // https://www.npmjs.com/package/form-data + * import api from "@forge/api"; + * import FormData from "form-data"; + * + * const form = new FormData(); + * form.append('file', fileStream, {knownLength: fileSizeInBytes}); + * + * const response = await api.asApp().requestJira('/rest/api/2/issue/{issueIdOrKey}/attachments', { + * method: 'POST', + * body: form, + * headers: { + * 'Accept': 'application/json', + * 'X-Atlassian-Token': 'no-check' + * } + * }); + * + * console.log(`Response: ${response.status} ${response.statusText}`); + * console.log(await response.json()); + * + * Tip: Use a client library. Many client libraries have classes for handling multipart POST operations. For example, in Java, the Apache HTTP Components library provides a [MultiPartEntity](http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html) class for multipart POST operations. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse Projects* and *Create attachments* [ 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. + */ + post: operations["addAttachment"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/changelog": { + /** + * Get changelogs + * @description Returns a [paginated](#pagination) list of all changelogs for an issue sorted by date, starting from the oldest. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + get: operations["getChangeLogs"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/changelog/list": { + /** + * Get changelogs by IDs + * @description Returns changelogs for an issue specified by a list of changelog IDs. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + post: operations["getChangeLogsByIds"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/comment": { + /** + * Get comments + * @description Returns all comments for an issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Comments are included in the response where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the comment. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is role visibility is restricted to. + */ + get: operations["getComments"]; + /** + * Add comment + * @description Adds a comment to an issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Add comments* [ project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue containing the comment is in. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + post: operations["addComment"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/comment/{id}": { + /** + * Get comment + * @description Returns a comment. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the comment. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted to. + */ + get: operations["getComment"]; + /** + * Update comment + * @description Updates a comment. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue containing the comment is in. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Edit all comments*[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any comment or *Edit own comments* to update comment created by the user. + * * If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted to. + */ + put: operations["updateComment"]; + /** + * Delete comment + * @description Deletes a comment. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue containing the comment is in. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Delete all comments*[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any comment or *Delete own comments* to delete comment created by the user, + * * If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted to. + */ + delete: operations["deleteComment"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/editmeta": { + /** + * Get edit issue metadata + * @description Returns the edit screen fields for an issue that are visible to and editable by the user. Use the information to populate the requests in [Edit issue](#api-rest-api-3-issue-issueIdOrKey-put). + * + * This endpoint will check for these conditions: + * + * 1. Field is available on a field screen - through screen, screen scheme, issue type screen scheme, and issue type scheme configuration. `overrideScreenSecurity=true` skips this condition. + * 2. Field is visible in the [field configuration](https://support.atlassian.com/jira-cloud-administration/docs/change-a-field-configuration/). `overrideScreenSecurity=true` skips this condition. + * 3. Field is shown on the issue: each field has different conditions here. For example: Attachment field only shows if attachments are enabled. Assignee only shows if user has permissions to assign the issue. + * 4. If a field is custom then it must have valid custom field context, applicable for its project and issue type. All system fields are assumed to have context in all projects and all issue types. + * 5. Issue has a project, issue type, and status defined. + * 6. Issue is assigned to a valid workflow, and the current status has assigned a workflow step. `overrideEditableFlag=true` skips this condition. + * 7. The current workflow step is editable. This is true by default, but [can be disabled by setting](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) the `jira.issue.editable` property to `false`. `overrideEditableFlag=true` skips this condition. + * 8. User has [Edit issues permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/). + * 9. Workflow permissions allow editing a field. This is true by default but [can be modified](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) using `jira.permission.*` workflow properties. + * + * Fields hidden using [Issue layout settings page](https://support.atlassian.com/jira-software-cloud/docs/configure-field-layout-in-the-issue-view/) remain editable. + * + * Connect apps having an app user with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), can return additional details using: + * + * * `overrideScreenSecurity` When this flag is `true`, then this endpoint skips checking if fields are available through screens, and field configuration (conditions 1. and 2. from the list above). + * * `overrideEditableFlag` When this flag is `true`, then this endpoint skips checking if workflow is present and if the current step is editable (conditions 6. and 7. from the list above). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * + * Note: For any fields to be editable the user must have the *Edit issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the issue. + */ + get: operations["getEditIssueMeta"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/notify": { + /** + * Send notification for issue + * @description Creates an email notification for an issue and adds it to the mail queue. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + post: operations["notify"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/properties": { + /** + * Get issue property keys + * @description Returns the URLs and keys of an issue's properties. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Property details are only returned where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + get: operations["getIssuePropertyKeys"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/properties/{propertyKey}": { + /** + * Get issue property + * @description Returns the key and value of an issue's property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + get: operations["getIssueProperty"]; + /** + * Set issue property + * @description Sets the value of an issue's property. Use this resource to store custom data against an issue. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + put: operations["setIssueProperty"]; + /** + * Delete issue property + * @description Deletes an issue's property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + delete: operations["deleteIssueProperty"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/remotelink": { + /** + * Get remote issue links + * @description Returns the remote issue links for an issue. When a remote issue link global ID is provided the record with that global ID is returned, otherwise all remote issue links are returned. Where a global ID includes reserved URL characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1` as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + get: operations["getRemoteIssueLinks"]; + /** + * Create or update remote issue link + * @description Creates or updates a remote issue link for an issue. + * + * If a `globalId` is provided and a remote issue link with that global ID is found it is updated. Any fields without values in the request are set to null. Otherwise, the remote issue link is created. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Link issues* [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. + */ + post: operations["createOrUpdateRemoteIssueLink"]; + /** + * Delete remote issue link by global ID + * @description Deletes the remote issue link from the issue using the link's global ID. Where the global ID includes reserved URL characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1` as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Link issues* [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 implemented, issue-level security permission to view the issue. + */ + delete: operations["deleteRemoteIssueLinkByGlobalId"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/remotelink/{linkId}": { + /** + * Get remote issue link by ID + * @description Returns a remote issue link for an issue. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + get: operations["getRemoteIssueLinkById"]; + /** + * Update remote issue link by ID + * @description Updates a remote issue link for an issue. + * + * Note: Fields without values in the request are set to null. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Link issues* [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. + */ + put: operations["updateRemoteIssueLink"]; + /** + * Delete remote issue link by ID + * @description Deletes a remote issue link from an issue. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects*, *Edit issues*, and *Link issues* [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. + */ + delete: operations["deleteRemoteIssueLinkById"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/transitions": { + /** + * Get transitions + * @description Returns either all transitions or a transition that can be performed by the user on an issue, based on the issue's status. + * + * Note, if a request is made for a transition that does not exist or cannot be performed on the issue, given its status, the response will return any empty transitions list. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required: A list or transition is returned only when the user has:** + * + * * *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. + * + * However, if the user does not have the *Transition issues* [ project permission](https://confluence.atlassian.com/x/yodKLg) the response will not list any transitions. + */ + get: operations["getTransitions"]; + /** + * Transition issue + * @description Performs an issue transition and, if the transition has a screen, updates the fields from the transition screen. + * + * sortByCategory To update the fields on the transition screen, specify the fields in the `fields` or `update` parameters in the request body. Get details about the fields using [ Get transitions](#api-rest-api-3-issue-issueIdOrKey-transitions-get) with the `transitions.fields` expand. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Transition issues* [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. + */ + post: operations["doTransition"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/votes": { + /** + * Get votes + * @description Returns details about the votes on an issue. + * + * This operation requires the **Allow users to vote on issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is ini + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * + * Note that users with the necessary permissions for this operation but without the *View voters and watchers* project permissions are not returned details in the `voters` field. + */ + get: operations["getVotes"]; + /** + * Add vote + * @description Adds the user's vote to an issue. This is the equivalent of the user clicking *Vote* on an issue in Jira. + * + * This operation requires the **Allow users to vote on issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + post: operations["addVote"]; + /** + * Delete vote + * @description Deletes a user's vote from an issue. This is the equivalent of the user clicking *Unvote* on an issue in Jira. + * + * This operation requires the **Allow users to vote on issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + delete: operations["removeVote"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/watchers": { + /** + * Get issue watchers + * @description Returns the watchers for an issue. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is ini + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * To see details of users on the watchlist other than themselves, *View voters and watchers* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in. + */ + get: operations["getIssueWatchers"]; + /** + * Add watcher + * @description Adds a user as a watcher of an issue by passing the account ID of the user. For example, `"5b10ac8d82e05b22cc7d4ef5"`. If no user is specified the calling user is added. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * To add users other than themselves to the watchlist, *Manage watcher list* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in. + */ + post: operations["addWatcher"]; + /** + * Delete watcher + * @description Deletes a user as a watcher of an issue. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * To remove users other than themselves from the watchlist, *Manage watcher list* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in. + */ + delete: operations["removeWatcher"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/worklog": { + /** + * Get issue worklogs + * @description Returns worklogs for an issue, starting from the oldest worklog or from the worklog started on or after a date and time. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Workloads are only returned where the user has: + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + get: operations["getIssueWorklog"]; + /** + * Add worklog + * @description Adds a worklog to an issue. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Work on issues* [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. + */ + post: operations["addWorklog"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/worklog/{id}": { + /** + * Get worklog + * @description Returns a worklog. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + get: operations["getWorklog"]; + /** + * Update worklog + * @description Updates a worklog. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * *Edit all worklogs*[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or *Edit own worklogs* to update worklogs created by the user. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + put: operations["updateWorklog"]; + /** + * Delete worklog + * @description Deletes a worklog from an issue. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * *Delete all worklogs*[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any worklog or *Delete own worklogs* to delete worklogs created by the user, + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + delete: operations["deleteWorklog"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}/properties": { + /** + * Get worklog property keys + * @description Returns the keys of all properties for a worklog. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + get: operations["getWorklogPropertyKeys"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}/properties/{propertyKey}": { + /** + * Get worklog property + * @description Returns the value of a worklog property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + get: operations["getWorklogProperty"]; + /** + * Set worklog property + * @description Sets the value of a worklog property. Use this operation to store custom data against the worklog. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * *Edit all worklogs*[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or *Edit own worklogs* to update worklogs created by the user. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + put: operations["setWorklogProperty"]; + /** + * Delete worklog property + * @description Deletes a worklog property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + delete: operations["deleteWorklogProperty"]; + }; + "/rest/api/3/issueLink": { + /** + * Create issue link + * @description Creates a link between two issues. Use this operation to indicate a relationship between two issues and optionally add a comment to the from (outward) issue. To use this resource the site must have [Issue Linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * This resource returns nothing on the creation of an issue link. To obtain the ID of the issue link, use `https://your-domain.atlassian.net/rest/api/3/issue/[linked issue key]?fields=issuelinks`. + * + * If the link request duplicates a link, the response indicates that the issue link was created. If the request included a comment, the comment is added. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse project* [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the issues to be linked, + * * *Link issues* [project permission](https://confluence.atlassian.com/x/yodKLg) on the project containing the from (outward) issue, + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + post: operations["linkIssues"]; + }; + "/rest/api/3/issueLink/{linkId}": { + /** + * Get issue link + * @description Returns an issue link. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse project* [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the linked issues. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the issues. + */ + get: operations["getIssueLink"]; + /** + * Delete issue link + * @description Deletes an issue link. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * Browse project [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the issues in the link. + * * *Link issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one of the projects containing issues in the link. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the issues. + */ + delete: operations["deleteIssueLink"]; + }; + "/rest/api/3/issueLinkType": { + /** + * Get issue link types + * @description Returns a list of all issue link types. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site. + */ + get: operations["getIssueLinkTypes"]; + /** + * Create issue link type + * @description Creates an issue link type. Use this operation to create descriptions of the reasons why issues are linked. The issue link type consists of a name and descriptions for a link's inward and outward relationships. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createIssueLinkType"]; + }; + "/rest/api/3/issueLinkType/{issueLinkTypeId}": { + /** + * Get issue link type + * @description Returns an issue link type. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site. + */ + get: operations["getIssueLinkType"]; + /** + * Update issue link type + * @description Updates an issue link type. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateIssueLinkType"]; + /** + * Delete issue link type + * @description Deletes an issue link type. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteIssueLinkType"]; + }; + "/rest/api/3/issues/archive/export": { + /** + * Export archived issue(s) + * @description Enables admins to retrieve details of all archived issues. Upon a successful request, the admin who submitted it will receive an email with a link to download a CSV file with the issue details. + * + * Note that this API only exports the values of system fields and archival-specific fields (`ArchivedBy` and `ArchivedDate`). Custom fields aren't supported. + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + * + * **Rate limiting:** Only a single request can be active at any given time. + */ + put: operations["exportArchivedIssues"]; + }; + "/rest/api/3/issuesecurityschemes": { + /** + * Get issue security schemes + * @description Returns all [issue security schemes](https://confluence.atlassian.com/x/J4lKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueSecuritySchemes"]; + /** + * Create issue security scheme + * @description Creates a security scheme with security scheme levels and levels' members. You can create up to 100 security scheme levels and security scheme levels' members per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createIssueSecurityScheme"]; + }; + "/rest/api/3/issuesecurityschemes/level": { + /** + * Get issue security levels + * @description Returns a [paginated](#pagination) list of issue security levels. + * + * Only issue security levels in the context of classic projects are returned. + * + * Filtering using IDs is inclusive: if you specify both security scheme IDs and level IDs, the result will include both specified issue security levels and all issue security levels from the specified schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getSecurityLevels"]; + }; + "/rest/api/3/issuesecurityschemes/level/default": { + /** + * Set default issue security levels + * @description Sets default issue security levels for schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setDefaultLevels"]; + }; + "/rest/api/3/issuesecurityschemes/level/member": { + /** + * Get issue security level members + * @description Returns a [paginated](#pagination) list of issue security level members. + * + * Only issue security level members in the context of classic projects are returned. + * + * Filtering using parameters is inclusive: if you specify both security scheme IDs and level IDs, the result will include all issue security level members from the specified schemes and levels. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getSecurityLevelMembers"]; + }; + "/rest/api/3/issuesecurityschemes/project": { + /** + * Get projects using issue security schemes + * @description Returns a [paginated](#pagination) mapping of projects that are using security schemes. You can provide either one or multiple security scheme IDs or project IDs to filter by. If you don't provide any, this will return a list of all mappings. Only issue security schemes in the context of classic projects are supported. **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["searchProjectsUsingSecuritySchemes"]; + /** + * Associate security scheme to project + * @description Associates an issue security scheme with a project and remaps security levels of issues to the new levels, if provided. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["associateSchemesToProjects"]; + }; + "/rest/api/3/issuesecurityschemes/search": { + /** + * Search issue security schemes + * @description Returns a [paginated](#pagination) list of issue security schemes. + * If you specify the project ID parameter, the result will contain issue security schemes and related project IDs you filter by. Use \{@link IssueSecuritySchemeResource\#searchProjectsUsingSecuritySchemes(String, String, Set, Set)\} to obtain all projects related to scheme. + * + * Only issue security schemes in the context of classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["searchSecuritySchemes"]; + }; + "/rest/api/3/issuesecurityschemes/{id}": { + /** + * Get issue security scheme + * @description Returns an issue security scheme along with its security levels. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project that uses the requested issue security scheme. + */ + get: operations["getIssueSecurityScheme"]; + /** + * Update issue security scheme + * @description Updates the issue security scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateIssueSecurityScheme"]; + }; + "/rest/api/3/issuesecurityschemes/{issueSecuritySchemeId}/members": { + /** + * Get issue security level members + * @description Returns issue security level members. + * + * Only issue security level members in context of classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueSecurityLevelMembers"]; + }; + "/rest/api/3/issuesecurityschemes/{schemeId}": { + /** + * Delete issue security scheme + * @description Deletes an issue security scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteSecurityScheme"]; + }; + "/rest/api/3/issuesecurityschemes/{schemeId}/level": { + /** + * Add issue security levels + * @description Adds levels and levels' members to the issue security scheme. You can add up to 100 levels per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["addSecurityLevel"]; + }; + "/rest/api/3/issuesecurityschemes/{schemeId}/level/{levelId}": { + /** + * Update issue security level + * @description Updates the issue security level. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateSecurityLevel"]; + /** + * Remove issue security level + * @description Deletes an issue security level. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["removeLevel"]; + }; + "/rest/api/3/issuesecurityschemes/{schemeId}/level/{levelId}/member": { + /** + * Add issue security level members + * @description Adds members to the issue security level. You can add up to 100 members per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["addSecurityLevelMembers"]; + }; + "/rest/api/3/issuesecurityschemes/{schemeId}/level/{levelId}/member/{memberId}": { + /** + * Remove member from issue security level + * @description Removes an issue security level member from an issue security scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["removeMemberFromSecurityLevel"]; + }; + "/rest/api/3/issuetype": { + /** + * Get all issue types for user + * @description Returns all issue types. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Issue types are only returned as follows: + * + * * if the user has the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), all issue types are returned. + * * if the user has the *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, the issue types associated with the projects the user has permission to browse are returned. + */ + get: operations["getIssueAllTypes"]; + /** + * Create issue type + * @description Creates an issue type and adds it to the default issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createIssueType"]; + }; + "/rest/api/3/issuetype/project": { + /** + * Get issue types for project + * @description Returns issue types for a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) in the relevant project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypesForProject"]; + }; + "/rest/api/3/issuetype/{id}": { + /** + * Get issue type + * @description Returns an issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) in a project the issue type is associated with or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueType"]; + /** + * Update issue type + * @description Updates the issue type. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateIssueType"]; + /** + * Delete issue type + * @description Deletes the issue type. If the issue type is in use, all uses are updated with the alternative issue type (`alternativeIssueTypeId`). A list of alternative issue types are obtained from the [Get alternative issue types](#api-rest-api-3-issuetype-id-alternatives-get) resource. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteIssueType"]; + }; + "/rest/api/3/issuetype/{id}/alternatives": { + /** + * Get alternative issue types + * @description Returns a list of issue types that can be used to replace the issue type. The alternative issue types are those assigned to the same workflow scheme, field configuration scheme, and screen scheme. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAlternativeIssueTypes"]; + }; + "/rest/api/3/issuetype/{id}/avatar2": { + /** + * Load issue type avatar + * @description Loads an avatar for the issue type. + * + * Specify the avatar's local file location in the body of the request. Also, include the following headers: + * + * * `X-Atlassian-Token: no-check` To prevent XSRF protection blocking the request, for more information see [Special Headers](#special-request-headers). + * * `Content-Type: image/image type` Valid image types are JPEG, GIF, or PNG. + * + * For example: + * `curl --request POST \ --user email@example.com: \ --header 'X-Atlassian-Token: no-check' \ --header 'Content-Type: image/< image_type>' \ --data-binary "<@/path/to/file/with/your/avatar>" \ --url 'https://your-domain.atlassian.net/rest/api/3/issuetype/{issueTypeId}'This` + * + * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of the image. The length of the square's sides is set to the smaller of the height or width of the image. + * + * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size. + * + * After creating the avatar, use [ Update issue type](#api-rest-api-3-issuetype-id-put) to set it as the issue type's displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createIssueTypeAvatar"]; + }; + "/rest/api/3/issuetype/{issueTypeId}/properties": { + /** + * Get issue type property keys + * @description Returns all the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties) keys of the issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the property keys of any issue type. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) to get the property keys of any issue types associated with the projects the user has permission to browse. + */ + get: operations["getIssueTypePropertyKeys"]; + }; + "/rest/api/3/issuetype/{issueTypeId}/properties/{propertyKey}": { + /** + * Get issue type property + * @description Returns the key and value of the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the details of any issue type. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) to get the details of any issue types associated with the projects the user has permission to browse. + */ + get: operations["getIssueTypeProperty"]; + /** + * Set issue type property + * @description Creates or updates the value of the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). Use this resource to store and update data against an issue type. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setIssueTypeProperty"]; + /** + * Delete issue type property + * @description Deletes the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteIssueTypeProperty"]; + }; + "/rest/api/3/issuetypescheme": { + /** + * Get all issue type schemes + * @description Returns a [paginated](#pagination) list of issue type schemes. + * + * Only issue type schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllIssueTypeSchemes"]; + /** + * Create issue type scheme + * @description Creates an issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createIssueTypeScheme"]; + }; + "/rest/api/3/issuetypescheme/mapping": { + /** + * Get issue type scheme items + * @description Returns a [paginated](#pagination) list of issue type scheme items. + * + * Only issue type scheme items used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypeSchemesMapping"]; + }; + "/rest/api/3/issuetypescheme/project": { + /** + * Get issue type schemes for projects + * @description Returns a [paginated](#pagination) list of issue type schemes and, for each issue type scheme, a list of the projects that use it. + * + * Only issue type schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypeSchemeForProjects"]; + /** + * Assign issue type scheme to project + * @description Assigns an issue type scheme to a project. + * + * If any issues in the project are assigned issue types not present in the new scheme, the operation will fail. To complete the assignment those issues must be updated to use issue types in the new scheme. + * + * Issue type schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["assignIssueTypeSchemeToProject"]; + }; + "/rest/api/3/issuetypescheme/{issueTypeSchemeId}": { + /** + * Update issue type scheme + * @description Updates an issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateIssueTypeScheme"]; + /** + * Delete issue type scheme + * @description Deletes an issue type scheme. + * + * Only issue type schemes used in classic projects can be deleted. + * + * Any projects assigned to the scheme are reassigned to the default issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteIssueTypeScheme"]; + }; + "/rest/api/3/issuetypescheme/{issueTypeSchemeId}/issuetype": { + /** + * Add issue types to issue type scheme + * @description Adds issue types to an issue type scheme. + * + * The added issue types are appended to the issue types list. + * + * If any of the issue types exist in the issue type scheme, the operation fails and no issue types are added. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["addIssueTypesToIssueTypeScheme"]; + }; + "/rest/api/3/issuetypescheme/{issueTypeSchemeId}/issuetype/move": { + /** + * Change order of issue types + * @description Changes the order of issue types in an issue type scheme. + * + * The request body parameters must meet the following requirements: + * + * * all of the issue types must belong to the issue type scheme. + * * either `after` or `position` must be provided. + * * the issue type in `after` must not be in the issue type list. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["reorderIssueTypesInIssueTypeScheme"]; + }; + "/rest/api/3/issuetypescheme/{issueTypeSchemeId}/issuetype/{issueTypeId}": { + /** + * Remove issue type from issue type scheme + * @description Removes an issue type from an issue type scheme. + * + * This operation cannot remove: + * + * * any issue type used by issues. + * * any issue types from the default issue type scheme. + * * the last standard issue type from an issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["removeIssueTypeFromIssueTypeScheme"]; + }; + "/rest/api/3/issuetypescreenscheme": { + /** + * Get issue type screen schemes + * @description Returns a [paginated](#pagination) list of issue type screen schemes. + * + * Only issue type screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypeScreenSchemes"]; + /** + * Create issue type screen scheme + * @description Creates an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createIssueTypeScreenScheme"]; + }; + "/rest/api/3/issuetypescreenscheme/mapping": { + /** + * Get issue type screen scheme items + * @description Returns a [paginated](#pagination) list of issue type screen scheme items. + * + * Only issue type screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypeScreenSchemeMappings"]; + }; + "/rest/api/3/issuetypescreenscheme/project": { + /** + * Get issue type screen schemes for projects + * @description Returns a [paginated](#pagination) list of issue type screen schemes and, for each issue type screen scheme, a list of the projects that use it. + * + * Only issue type screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypeScreenSchemeProjectAssociations"]; + /** + * Assign issue type screen scheme to project + * @description Assigns an issue type screen scheme to a project. + * + * Issue type screen schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["assignIssueTypeScreenSchemeToProject"]; + }; + "/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}": { + /** + * Update issue type screen scheme + * @description Updates an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateIssueTypeScreenScheme"]; + /** + * Delete issue type screen scheme + * @description Deletes an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteIssueTypeScreenScheme"]; + }; + "/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}/mapping": { + /** + * Append mappings to issue type screen scheme + * @description Appends issue type to screen scheme mappings to an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["appendMappingsForIssueTypeScreenScheme"]; + }; + "/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}/mapping/default": { + /** + * Update issue type screen scheme default screen scheme + * @description Updates the default screen scheme of an issue type screen scheme. The default screen scheme is used for all unmapped issue types. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateDefaultScreenScheme"]; + }; + "/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}/mapping/remove": { + /** + * Remove mappings from issue type screen scheme + * @description Removes issue type to screen scheme mappings from an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["removeMappingsFromIssueTypeScreenScheme"]; + }; + "/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}/project": { + /** + * Get issue type screen scheme projects + * @description Returns a [paginated](#pagination) list of projects associated with an issue type screen scheme. + * + * Only company-managed projects associated with an issue type screen scheme are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getProjectsForIssueTypeScreenScheme"]; + }; + "/rest/api/3/jql/autocompletedata": { + /** + * Get field reference data (GET) + * @description Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom query builder. + * + * To filter visible field details by project or collapse non-unique fields by field type then [Get field reference data (POST)](#api-rest-api-3-jql-autocompletedata-post) can be used. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAutoComplete"]; + /** + * Get field reference data (POST) + * @description Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom query builder. + * + * This operation can filter the custom fields returned by project. Invalid project IDs in `projectIds` are ignored. System fields are always returned. + * + * It can also return the collapsed field for custom fields. Collapsed fields enable searches to be performed across all fields with the same name and of the same field type. For example, the collapsed field `Component - Component[Dropdown]` enables dropdown fields `Component - cf[10061]` and `Component - cf[10062]` to be searched simultaneously. + * + * **[Permissions](#permissions) required:** None. + */ + post: operations["getAutoCompletePost"]; + }; + "/rest/api/3/jql/autocompletedata/suggestions": { + /** + * Get field auto complete suggestions + * @description Returns the JQL search auto complete suggestions for a field. + * + * Suggestions can be obtained by providing: + * + * * `fieldName` to get a list of all values for the field. + * * `fieldName` and `fieldValue` to get a list of values containing the text in `fieldValue`. + * * `fieldName` and `predicateName` to get a list of all predicate values for the field. + * * `fieldName`, `predicateName`, and `predicateValue` to get a list of predicate values containing the text in `predicateValue`. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getFieldAutoCompleteForQueryString"]; + }; + "/rest/api/3/jql/function/computation": { + /** + * Get precomputations (apps) + * @description Returns the list of a function's precomputations along with information about when they were created, updated, and last used. Each precomputation has a `value` \- the JQL fragment to replace the custom function clause with. + * + * **[Permissions](#permissions) required:** This API is only accessible to apps and apps can only inspect their own functions. + */ + get: operations["getPrecomputations"]; + /** + * Update precomputations (apps) + * @description Update the precomputation value of a function created by a Forge/Connect app. + * + * **[Permissions](#permissions) required:** An API for apps to update their own precomputations. + */ + post: operations["updatePrecomputations"]; + }; + "/rest/api/3/jql/match": { + /** + * Check issues against JQL + * @description Checks whether one or more issues would be returned by one or more JQL queries. + * + * **[Permissions](#permissions) required:** None, however, issues are only matched against JQL queries where the user has: + * + * * *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. + */ + post: operations["matchIssues"]; + }; + "/rest/api/3/jql/parse": { + /** + * Parse JQL query + * @description Parses and validates JQL queries. + * + * Validation is performed in context of the current user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + post: operations["parseJqlQueries"]; + }; + "/rest/api/3/jql/pdcleaner": { + /** + * Convert user identifiers to account IDs in JQL queries + * @description Converts one or more JQL queries with user identifiers (username or user key) to equivalent JQL queries with account IDs. + * + * You may wish to use this operation if your system stores JQL queries and you want to make them GDPR-compliant. For more information about GDPR-related changes, see the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/). + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + post: operations["migrateQueries"]; + }; + "/rest/api/3/jql/sanitize": { + /** + * Sanitize JQL queries + * @description Sanitizes one or more JQL queries by converting readable details into IDs where a user doesn't have permission to view the entity. + * + * For example, if the query contains the clause *project = 'Secret project'*, and a user does not have browse permission for the project "Secret project", the sanitized query replaces the clause with *project = 12345"* (where 12345 is the ID of the project). If a user has the required permission, the clause is not sanitized. If the account ID is null, sanitizing is performed for an anonymous user. + * + * Note that sanitization doesn't make the queries GDPR-compliant, because it doesn't remove user identifiers (username or user key). If you need to make queries GDPR-compliant, use [Convert user identifiers to account IDs in JQL queries](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-jql/#api-rest-api-3-jql-sanitize-post). + * + * Before sanitization each JQL query is parsed. The queries are returned in the same order that they were passed. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["sanitiseJqlQueries"]; + }; + "/rest/api/3/label": { + /** + * Get all labels + * @description Returns a [paginated](#pagination) list of labels. + */ + get: operations["getAllLabels"]; + }; + "/rest/api/3/license/approximateLicenseCount": { + /** + * Get approximate license count + * @description Returns the approximate number of user accounts across all Jira licenses. Note that this information is cached with a 7-day lifecycle and could be stale at the time of call. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getApproximateLicenseCount"]; + }; + "/rest/api/3/license/approximateLicenseCount/product/{applicationKey}": { + /** + * Get approximate application license count + * @description Returns the total approximate number of user accounts for a single Jira license. Note that this information is cached with a 7-day lifecycle and could be stale at the time of call. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getApproximateApplicationLicenseCount"]; + }; + "/rest/api/3/mypermissions": { + /** + * Get my permissions + * @description Returns a list of permissions indicating which permissions the user has. Details of the user's permissions can be obtained in a global, project, issue or comment context. + * + * The user is reported as having a project permission: + * + * * in the global context, if the user has the project permission in any project. + * * for a project, where the project permission is determined using issue data, if the user meets the permission's criteria for any issue in the project. Otherwise, if the user has the project permission in the project. + * * for an issue, where a project permission is determined using issue data, if the user has the permission in the issue. Otherwise, if the user has the project permission in the project containing the issue. + * * for a comment, where the user has both the permission to browse the comment and the project permission for the comment's parent issue. Only the BROWSE\_PROJECTS permission is supported. If a `commentId` is provided whose `permissions` does not equal BROWSE\_PROJECTS, a 400 error will be returned. + * + * This means that users may be shown as having an issue permission (such as EDIT\_ISSUES) in the global context or a project context but may not have the permission for any or all issues. For example, if Reporters have the EDIT\_ISSUES permission a user would be shown as having this permission in the global context or the context of a project, because any user can be a reporter. However, if they are not the user who reported the issue queried they would not have EDIT\_ISSUES permission for that issue. + * + * Global permissions are unaffected by context. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:permission:jira` + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getMyPermissions"]; + }; + "/rest/api/3/mypreferences": { + /** + * Get preference + * @description Returns the value of a preference of the current user. + * + * Note that these keys are deprecated: + * + * * *jira.user.locale* The locale of the user. By default this is not set and the user takes the locale of the instance. + * * *jira.user.timezone* The time zone of the user. By default this is not set and the user takes the timezone of the instance. + * + * These system preferences keys will be deprecated by 15/07/2024. You can still retrieve these keys, but it will not have any impact on Notification behaviour. + * + * * *user.notifiy.own.changes* Whether the user gets notified of their own changes. + * * *user.notifications.watcher* Whether the user gets notified when they are watcher. + * * *user.notifications.assignee* Whether the user gets notified when they are assignee. + * * *user.notifications.reporter* Whether the user gets notified when they are reporter. + * * *user.notifications.mentions* Whether the user gets notified when they are mentions. + * + * Use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API to manage timezone and locale instead. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getPreference"]; + /** + * Set preference + * @description Creates a preference for the user or updates a preference's value by sending a plain text string. For example, `false`. An arbitrary preference can be created with the value containing up to 255 characters. In addition, the following keys define system preferences that can be set or created: + * + * * *user.notifications.mimetype* The mime type used in notifications sent to the user. Defaults to `html`. + * * *user.default.share.private* Whether new [ filters](https://confluence.atlassian.com/x/eQiiLQ) are set to private. Defaults to `true`. + * * *user.keyboard.shortcuts.disabled* Whether keyboard shortcuts are disabled. Defaults to `false`. + * * *user.autowatch.disabled* Whether the user automatically watches issues they create or add a comment to. By default, not set: the user takes the instance autowatch setting. + * + * Note that these keys are deprecated: + * + * * *jira.user.locale* The locale of the user. By default, not set. The user takes the instance locale. + * * *jira.user.timezone* The time zone of the user. By default, not set. The user takes the instance timezone. + * + * These system preferences keys will be deprecated by 15/07/2024. You can still use these keys to create arbitrary preferences, but it will not have any impact on Notification behaviour. + * + * * *user.notifiy.own.changes* Whether the user gets notified of their own changes. + * * *user.notifications.watcher* Whether the user gets notified when they are watcher. + * * *user.notifications.assignee* Whether the user gets notified when they are assignee. + * * *user.notifications.reporter* Whether the user gets notified when they are reporter. + * * *user.notifications.mentions* Whether the user gets notified when they are mentions. + * + * Use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API to manage timezone and locale instead. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + put: operations["setPreference"]; + /** + * Delete preference + * @description Deletes a preference of the user, which restores the default value of system defined settings. + * + * Note that these keys are deprecated: + * + * * *jira.user.locale* The locale of the user. By default, not set. The user takes the instance locale. + * * *jira.user.timezone* The time zone of the user. By default, not set. The user takes the instance timezone. + * + * Use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API to manage timezone and locale instead. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + delete: operations["removePreference"]; + }; + "/rest/api/3/mypreferences/locale": { + /** + * Get locale + * @description Returns the locale for the user. + * + * If the user has no language preference set (which is the default setting) or this resource is accessed anonymous, the browser locale detected by Jira is returned. Jira detects the browser locale using the *Accept-Language* header in the request. However, if this doesn't match a locale available Jira, the site default locale is returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getLocale"]; + /** + * Set locale + * @deprecated + * @description Deprecated, use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API instead. + * + * Sets the locale of the user. The locale must be one supported by the instance of Jira. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + put: operations["setLocale"]; + /** + * Delete locale + * @deprecated + * @description Deprecated, use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API instead. + * + * Deletes the locale of the user, which restores the default setting. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + delete: operations["deleteLocale"]; + }; + "/rest/api/3/myself": { + /** + * Get current user + * @description Returns details for the current user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getCurrentUser"]; + }; + "/rest/api/3/notificationscheme": { + /** + * Get notification schemes paginated + * @description Returns a [paginated](#pagination) list of [notification schemes](https://confluence.atlassian.com/x/8YdKLg) ordered by the display name. + * + * *Note that you should allow for events without recipients to appear in responses.* + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, the user must have permission to administer at least one project associated with a notification scheme for it to be returned. + */ + get: operations["getNotificationSchemes"]; + /** + * Create notification scheme + * @description Creates a notification scheme with notifications. You can create up to 1000 notifications per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createNotificationScheme"]; + }; + "/rest/api/3/notificationscheme/project": { + /** + * Get projects using notification schemes paginated + * @description Returns a [paginated](#pagination) mapping of project that have notification scheme assigned. You can provide either one or multiple notification scheme IDs or project IDs to filter by. If you don't provide any, this will return a list of all mappings. Note that only company-managed (classic) projects are supported. This is because team-managed projects don't have a concept of a default notification scheme. The mappings are ordered by projectId. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getNotificationSchemeToProjectMappings"]; + }; + "/rest/api/3/notificationscheme/{id}": { + /** + * Get notification scheme + * @description Returns a [notification scheme](https://confluence.atlassian.com/x/8YdKLg), including the list of events and the recipients who will receive notifications for those events. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, the user must have permission to administer at least one project associated with the notification scheme. + */ + get: operations["getNotificationScheme"]; + /** + * Update notification scheme + * @description Updates a notification scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateNotificationScheme"]; + }; + "/rest/api/3/notificationscheme/{id}/notification": { + /** + * Add notifications to notification scheme + * @description Adds notifications to a notification scheme. You can add up to 1000 notifications per request. + * + * *Deprecated: The notification type `EmailAddress` is no longer supported in Cloud. Refer to the [changelog](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-1031) for more details.* + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["addNotifications"]; + }; + "/rest/api/3/notificationscheme/{notificationSchemeId}": { + /** + * Delete notification scheme + * @description Deletes a notification scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteNotificationScheme"]; + }; + "/rest/api/3/notificationscheme/{notificationSchemeId}/notification/{notificationId}": { + /** + * Remove notification from notification scheme + * @description Removes a notification from a notification scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["removeNotificationFromNotificationScheme"]; + }; + "/rest/api/3/permissions": { + /** + * Get all permissions + * @description Returns all permissions, including: + * + * * global permissions. + * * project permissions. + * * global permissions added by plugins. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllPermissions"]; + }; + "/rest/api/3/permissions/check": { + /** + * Get bulk permissions + * @description Returns: + * + * * for a list of global permissions, the global permissions granted to a user. + * * for a list of project permissions and lists of projects and issues, for each project permission a list of the projects and issues a user can access or manipulate. + * + * If no account ID is provided, the operation returns details for the logged in user. + * + * Note that: + * + * * Invalid project and issue IDs are ignored. + * * A maximum of 1000 projects and 1000 issues can be checked. + * * Null values in `globalPermissions`, `projectPermissions`, `projectPermissions.projects`, and `projectPermissions.issues` are ignored. + * * Empty strings in `projectPermissions.permissions` are ignored. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:permission:jira` + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) to check the permissions for other users, otherwise none. However, Connect apps can make a call from the app server to the product to obtain permission details for any user, without admin permission. This Connect app ability doesn't apply to calls made using AP.request() in a browser. + */ + post: operations["getBulkPermissions"]; + }; + "/rest/api/3/permissions/project": { + /** + * Get permitted projects + * @description Returns all the projects where the user is granted a list of project permissions. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:permission:jira`, `read:project:jira` + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + post: operations["getPermittedProjects"]; + }; + "/rest/api/3/permissionscheme": { + /** + * Get all permission schemes + * @description Returns all permission schemes. + * + * ### About permission schemes and grants ### + * + * A permission scheme is a collection of permission grants. A permission grant consists of a `holder` and a `permission`. + * + * #### Holder object #### + * + * The `holder` object contains information about the user or group being granted the permission. For example, the *Administer projects* permission is granted to a group named *Teams in space administrators*. In this case, the type is `"type": "group"`, and the parameter is the group name, `"parameter": "Teams in space administrators"` and the value is group ID, `"value": "ca85fac0-d974-40ca-a615-7af99c48d24f"`. + * + * The `holder` object is defined by the following properties: + * + * * `type` Identifies the user or group (see the list of types below). + * * `parameter` As a group's name can change, use of `value` is recommended. The value of this property depends on the `type`. For example, if the `type` is a group, then you need to specify the group name. + * * `value` The value of this property depends on the `type`. If the `type` is a group, then you need to specify the group ID. For other `type` it has the same value as `parameter` + * + * The following `types` are available. The expected values for `parameter` and `value` are given in parentheses (some types may not have a `parameter` or `value`): + * + * * `anyone` Grant for anonymous users. + * * `applicationRole` Grant for users with access to the specified application (application name, application name). See [Update product access settings](https://confluence.atlassian.com/x/3YxjL) for more information. + * * `assignee` Grant for the user currently assigned to an issue. + * * `group` Grant for the specified group (`parameter` : group name, `value` : group ID). + * * `groupCustomField` Grant for a user in the group selected in the specified custom field (`parameter` : custom field ID, `value` : custom field ID). + * * `projectLead` Grant for a project lead. + * * `projectRole` Grant for the specified project role (`parameter` :project role ID, `value` : project role ID). + * * `reporter` Grant for the user who reported the issue. + * * `sd.customer.portal.only` Jira Service Desk only. Grants customers permission to access the customer portal but not Jira. See [Customizing Jira Service Desk permissions](https://confluence.atlassian.com/x/24dKLg) for more information. + * * `user` Grant for the specified user (`parameter` : user ID - historically this was the userkey but that is deprecated and the account ID should be used, `value` : user ID). + * * `userCustomField` Grant for a user selected in the specified custom field (`parameter` : custom field ID, `value` : custom field ID). + * + * #### Built-in permissions #### + * + * The [built-in Jira permissions](https://confluence.atlassian.com/x/yodKLg) are listed below. Apps can also define custom permissions. See the [project permission](https://developer.atlassian.com/cloud/jira/platform/modules/project-permission/) and [global permission](https://developer.atlassian.com/cloud/jira/platform/modules/global-permission/) module documentation for more information. + * + * **Project permissions** + * + * * `ADMINISTER_PROJECTS` + * * `BROWSE_PROJECTS` + * * `MANAGE_SPRINTS_PERMISSION` (Jira Software only) + * * `SERVICEDESK_AGENT` (Jira Service Desk only) + * * `VIEW_DEV_TOOLS` (Jira Software only) + * * `VIEW_READONLY_WORKFLOW` + * + * **Issue permissions** + * + * * `ASSIGNABLE_USER` + * * `ASSIGN_ISSUES` + * * `CLOSE_ISSUES` + * * `CREATE_ISSUES` + * * `DELETE_ISSUES` + * * `EDIT_ISSUES` + * * `LINK_ISSUES` + * * `MODIFY_REPORTER` + * * `MOVE_ISSUES` + * * `RESOLVE_ISSUES` + * * `SCHEDULE_ISSUES` + * * `SET_ISSUE_SECURITY` + * * `TRANSITION_ISSUES` + * + * **Voters and watchers permissions** + * + * * `MANAGE_WATCHERS` + * * `VIEW_VOTERS_AND_WATCHERS` + * + * **Comments permissions** + * + * * `ADD_COMMENTS` + * * `DELETE_ALL_COMMENTS` + * * `DELETE_OWN_COMMENTS` + * * `EDIT_ALL_COMMENTS` + * * `EDIT_OWN_COMMENTS` + * + * **Attachments permissions** + * + * * `CREATE_ATTACHMENTS` + * * `DELETE_ALL_ATTACHMENTS` + * * `DELETE_OWN_ATTACHMENTS` + * + * **Time tracking permissions** + * + * * `DELETE_ALL_WORKLOGS` + * * `DELETE_OWN_WORKLOGS` + * * `EDIT_ALL_WORKLOGS` + * * `EDIT_OWN_WORKLOGS` + * * `WORK_ON_ISSUES` + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getAllPermissionSchemes"]; + /** + * Create permission scheme + * @description Creates a new permission scheme. You can create a permission scheme with or without defining a set of permission grants. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createPermissionScheme"]; + }; + "/rest/api/3/permissionscheme/{schemeId}": { + /** + * Get permission scheme + * @description Returns a permission scheme. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getPermissionScheme"]; + /** + * Update permission scheme + * @description Updates a permission scheme. Below are some important things to note when using this resource: + * + * * If a permissions list is present in the request, then it is set in the permission scheme, overwriting *all existing* grants. + * * If you want to update only the name and description, then do not send a permissions list in the request. + * * Sending an empty list will remove all permission grants from the permission scheme. + * + * If you want to add or delete a permission grant instead of updating the whole list, see [Create permission grant](#api-rest-api-3-permissionscheme-schemeId-permission-post) or [Delete permission scheme entity](#api-rest-api-3-permissionscheme-schemeId-permission-permissionId-delete). + * + * See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more details. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updatePermissionScheme"]; + /** + * Delete permission scheme + * @description Deletes a permission scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deletePermissionScheme"]; + }; + "/rest/api/3/permissionscheme/{schemeId}/permission": { + /** + * Get permission scheme grants + * @description Returns all permission grants for a permission scheme. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getPermissionSchemeGrants"]; + /** + * Create permission grant + * @description Creates a permission grant in a permission scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createPermissionGrant"]; + }; + "/rest/api/3/permissionscheme/{schemeId}/permission/{permissionId}": { + /** + * Get permission scheme grant + * @description Returns a permission grant. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getPermissionSchemeGrant"]; + /** + * Delete permission scheme grant + * @description Deletes a permission grant from a permission scheme. See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more details. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deletePermissionSchemeEntity"]; + }; + "/rest/api/3/priority": { + /** + * Get priorities + * @deprecated + * @description Returns the list of all issue priorities. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getPriorities"]; + /** + * Create priority + * @description Creates an issue priority. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createPriority"]; + }; + "/rest/api/3/priority/default": { + /** + * Set default priority + * @description Sets default issue priority. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setDefaultPriority"]; + }; + "/rest/api/3/priority/move": { + /** + * Move priorities + * @description Changes the order of issue priorities. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["movePriorities"]; + }; + "/rest/api/3/priority/search": { + /** + * Search priorities + * @description Returns a [paginated](#pagination) list of priorities. The list can contain all priorities or a subset determined by any combination of these criteria: + * + * * a list of priority IDs. Any invalid priority IDs are ignored. + * * a list of project IDs. Only priorities that are available in these projects will be returned. Any invalid project IDs are ignored. + * * whether the field configuration is a default. This returns priorities from company-managed (classic) projects only, as there is no concept of default priorities in team-managed projects. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["searchPriorities"]; + }; + "/rest/api/3/priority/{id}": { + /** + * Get priority + * @description Returns an issue priority. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getPriority"]; + /** + * Update priority + * @description Updates an issue priority. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updatePriority"]; + /** + * Delete priority + * @deprecated + * @description *Deprecated: please refer to the* [changelog](https://developer.atlassian.com/changelog/#CHANGE-1066) *for more details.* + * + * Deletes an issue priority. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deletePriority"]; + }; + "/rest/api/3/project": { + /** + * Get all projects + * @deprecated + * @description Returns all projects visible to the user. Deprecated, use [ Get projects paginated](#api-rest-api-3-project-search-get) that supports search and pagination. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Projects are returned only where the user has *Browse Projects* or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getAllProjects"]; + /** + * Create project + * @description Creates a project based on a project type template, as shown in the following table: + * + * | Project Type Key | Project Template Key | + * |--|--| + * | `business` | `com.atlassian.jira-core-project-templates:jira-core-simplified-content-management`, `com.atlassian.jira-core-project-templates:jira-core-simplified-document-approval`, `com.atlassian.jira-core-project-templates:jira-core-simplified-lead-tracking`, `com.atlassian.jira-core-project-templates:jira-core-simplified-process-control`, `com.atlassian.jira-core-project-templates:jira-core-simplified-procurement`, `com.atlassian.jira-core-project-templates:jira-core-simplified-project-management`, `com.atlassian.jira-core-project-templates:jira-core-simplified-recruitment`, `com.atlassian.jira-core-project-templates:jira-core-simplified-task-tracking` | + * | `service_desk` | `com.atlassian.servicedesk:simplified-it-service-management`, `com.atlassian.servicedesk:simplified-general-service-desk-it`, `com.atlassian.servicedesk:simplified-general-service-desk-business`, `com.atlassian.servicedesk:simplified-external-service-desk`, `com.atlassian.servicedesk:simplified-hr-service-desk`, `com.atlassian.servicedesk:simplified-facilities-service-desk`, `com.atlassian.servicedesk:simplified-legal-service-desk`, `com.atlassian.servicedesk:simplified-analytics-service-desk`, `com.atlassian.servicedesk:simplified-marketing-service-desk`, `com.atlassian.servicedesk:simplified-design-service-desk`, `com.atlassian.servicedesk:simplified-sales-service-desk`, `com.atlassian.servicedesk:simplified-blank-project-business`, `com.atlassian.servicedesk:simplified-blank-project-it`, `com.atlassian.servicedesk:simplified-finance-service-desk`, `com.atlassian.servicedesk:next-gen-it-service-desk`, `com.atlassian.servicedesk:next-gen-hr-service-desk`, `com.atlassian.servicedesk:next-gen-legal-service-desk`, `com.atlassian.servicedesk:next-gen-marketing-service-desk`, `com.atlassian.servicedesk:next-gen-facilities-service-desk`, `com.atlassian.servicedesk:next-gen-general-it-service-desk`, `com.atlassian.servicedesk:next-gen-general-business-service-desk`, `com.atlassian.servicedesk:next-gen-analytics-service-desk`, `com.atlassian.servicedesk:next-gen-finance-service-desk`, `com.atlassian.servicedesk:next-gen-design-service-desk`, `com.atlassian.servicedesk:next-gen-sales-service-desk` | + * | `software` | `com.pyxis.greenhopper.jira:gh-simplified-agility-kanban`, `com.pyxis.greenhopper.jira:gh-simplified-agility-scrum`, `com.pyxis.greenhopper.jira:gh-simplified-basic`, `com.pyxis.greenhopper.jira:gh-simplified-kanban-classic`, `com.pyxis.greenhopper.jira:gh-simplified-scrum-classic` | + * The project types are available according to the installed Jira features as follows: + * + * * Jira Core, the default, enables `business` projects. + * * Jira Service Management enables `service_desk` projects. + * * Jira Software enables `software` projects. + * + * To determine which features are installed, go to **Jira settings** > **Apps** > **Manage apps** and review the System Apps list. To add Jira Software or Jira Service Management into a JIRA instance, use **Jira settings** > **Apps** > **Finding new apps**. For more information, see [ Managing add-ons](https://confluence.atlassian.com/x/S31NLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createProject"]; + }; + "/rest/api/3/project/recent": { + /** + * Get recent projects + * @description Returns a list of up to 20 projects recently viewed by the user that are still visible to the user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Projects are returned only where the user has one of: + * + * * *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getRecent"]; + }; + "/rest/api/3/project/search": { + /** + * Get projects paginated + * @description Returns a [paginated](#pagination) list of projects visible to the user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Projects are returned only where the user has one of: + * + * * *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["searchProjects"]; + }; + "/rest/api/3/project/type": { + /** + * Get all project types + * @description Returns all [project types](https://confluence.atlassian.com/x/Var1Nw), whether or not the instance has a valid license for each type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAllProjectTypes"]; + }; + "/rest/api/3/project/type/accessible": { + /** + * Get licensed project types + * @description Returns all [project types](https://confluence.atlassian.com/x/Var1Nw) with a valid license. + */ + get: operations["getAllAccessibleProjectTypes"]; + }; + "/rest/api/3/project/type/{projectTypeKey}": { + /** + * Get project type by key + * @description Returns a [project type](https://confluence.atlassian.com/x/Var1Nw). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getProjectTypeByKey"]; + }; + "/rest/api/3/project/type/{projectTypeKey}/accessible": { + /** + * Get accessible project type by key + * @description Returns a [project type](https://confluence.atlassian.com/x/Var1Nw) if it is accessible to the user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getAccessibleProjectTypeByKey"]; + }; + "/rest/api/3/project/{projectIdOrKey}": { + /** + * Get project + * @description Returns the [project details](https://confluence.atlassian.com/x/ahLpNw) for a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProject"]; + /** + * Update project + * @description Updates the [project details](https://confluence.atlassian.com/x/ahLpNw) of a project. + * + * All parameters are optional in the body of the request. Schemes will only be updated if they are included in the request, any omitted schemes will be left unchanged. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). is only needed when changing the schemes or project key. Otherwise you will only need *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) + */ + put: operations["updateProject"]; + /** + * Delete project + * @description Deletes a project. + * + * You can't delete a project if it's archived. To delete an archived project, restore the project and then delete it. To restore a project, use the Jira UI. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteProject"]; + }; + "/rest/api/3/project/{projectIdOrKey}/archive": { + /** + * Archive project + * @description Archives a project. You can't delete a project if it's archived. To delete an archived project, restore the project and then delete it. To restore a project, use the Jira UI. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["archiveProject"]; + }; + "/rest/api/3/project/{projectIdOrKey}/avatar": { + /** + * Set project avatar + * @description Sets the avatar displayed for a project. + * + * Use [Load project avatar](#api-rest-api-3-project-projectIdOrKey-avatar2-post) to store avatars against the project, before using this operation to set the displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + put: operations["updateProjectAvatar"]; + }; + "/rest/api/3/project/{projectIdOrKey}/avatar/{id}": { + /** + * Delete project avatar + * @description Deletes a custom avatar from a project. Note that system avatars cannot be deleted. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + delete: operations["deleteProjectAvatar"]; + }; + "/rest/api/3/project/{projectIdOrKey}/avatar2": { + /** + * Load project avatar + * @description Loads an avatar for a project. + * + * Specify the avatar's local file location in the body of the request. Also, include the following headers: + * + * * `X-Atlassian-Token: no-check` To prevent XSRF protection blocking the request, for more information see [Special Headers](#special-request-headers). + * * `Content-Type: image/image type` Valid image types are JPEG, GIF, or PNG. + * + * For example: + * `curl --request POST ` + * + * `--user email@example.com: ` + * + * `--header 'X-Atlassian-Token: no-check' ` + * + * `--header 'Content-Type: image/< image_type>' ` + * + * `--data-binary "<@/path/to/file/with/your/avatar>" ` + * + * `--url 'https://your-domain.atlassian.net/rest/api/3/project/{projectIdOrKey}/avatar2'` + * + * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of the image. The length of the square's sides is set to the smaller of the height or width of the image. + * + * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size. + * + * After creating the avatar use [Set project avatar](#api-rest-api-3-project-projectIdOrKey-avatar-put) to set it as the project's displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + post: operations["createProjectAvatar"]; + }; + "/rest/api/3/project/{projectIdOrKey}/avatars": { + /** + * Get all project avatars + * @description Returns all project avatars, grouped by system and custom avatars. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getAllProjectAvatars"]; + }; + "/rest/api/3/project/{projectIdOrKey}/component": { + /** + * Get project components paginated + * @description Returns a [paginated](#pagination) list of all components in a project. See the [Get project components](#api-rest-api-3-project-projectIdOrKey-components-get) resource if you want to get a full list of versions without pagination. + * + * If your project uses Compass components, this API will return a list of Compass components that are linked to issues in that project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectComponentsPaginated"]; + }; + "/rest/api/3/project/{projectIdOrKey}/components": { + /** + * Get project components + * @description Returns all components in a project. See the [Get project components paginated](#api-rest-api-3-project-projectIdOrKey-component-get) resource if you want to get a full list of components with pagination. + * + * If your project uses Compass components, this API will return a paginated list of Compass components that are linked to issues in that project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectComponents"]; + }; + "/rest/api/3/project/{projectIdOrKey}/delete": { + /** + * Delete project asynchronously + * @description Deletes a project asynchronously. + * + * This operation is: + * + * * transactional, that is, if part of the delete fails the project is not deleted. + * * [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["deleteProjectAsynchronously"]; + }; + "/rest/api/3/project/{projectIdOrKey}/features": { + /** + * Get project features + * @description Returns the list of features for a project. + */ + get: operations["getFeaturesForProject"]; + }; + "/rest/api/3/project/{projectIdOrKey}/features/{featureKey}": { + /** + * Set project feature state + * @description Sets the state of a project feature. + */ + put: operations["toggleFeatureForProject"]; + }; + "/rest/api/3/project/{projectIdOrKey}/properties": { + /** + * Get project property keys + * @description Returns all [project property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties) keys for the project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectPropertyKeys"]; + }; + "/rest/api/3/project/{projectIdOrKey}/properties/{propertyKey}": { + /** + * Get project property + * @description Returns the value of a [project property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property. + */ + get: operations["getProjectProperty"]; + /** + * Set project property + * @description Sets the value of the [project property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). You can use project properties to store custom data against the project. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the property is created. + */ + put: operations["setProjectProperty"]; + /** + * Delete project property + * @description Deletes the [property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties) from a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property. + */ + delete: operations["deleteProjectProperty"]; + }; + "/rest/api/3/project/{projectIdOrKey}/restore": { + /** + * Restore deleted or archived project + * @description Restores a project that has been archived or placed in the Jira recycle bin. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg)for Company managed projects. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project for Team managed projects. + */ + post: operations["restore"]; + }; + "/rest/api/3/project/{projectIdOrKey}/role": { + /** + * Get project roles for project + * @description Returns a list of [project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) for the project returning the name and self URL for each role. + * + * Note that all project roles are shared with all projects in Jira Cloud. See [Get all project roles](#api-rest-api-3-role-get) for more information. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for any project on the site or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getProjectRoles"]; + }; + "/rest/api/3/project/{projectIdOrKey}/role/{id}": { + /** + * Get project role for project + * @description Returns a project role's details and actors associated with the project. The list of actors is sorted by display name. + * + * To check whether a user belongs to a role based on their group memberships, use [Get user](#api-rest-api-3-user-get) with the `groups` expand parameter selected. Then check whether the user keys and groups match with the actors returned for the project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getProjectRole"]; + /** + * Set actors for project role + * @description Sets the actors for a project role for a project, replacing all existing actors. + * + * To add actors to the project without overwriting the existing list, use [Add actors to project role](#api-rest-api-3-project-projectIdOrKey-role-id-post). + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setActors"]; + /** + * Add actors to project role + * @description Adds actors to a project role for the project. + * + * To replace all actors for the project, use [Set actors for project role](#api-rest-api-3-project-projectIdOrKey-role-id-put). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["addActorUsers"]; + /** + * Delete actors from project role + * @description Deletes actors from a project role for the project. + * + * To remove default actors from the project role, use [Delete default actors from project role](#api-rest-api-3-role-id-actors-delete). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteActor"]; + }; + "/rest/api/3/project/{projectIdOrKey}/roledetails": { + /** + * Get project role details + * @description Returns all [project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) and the details for each role. Note that the list of project roles is common to all projects. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectRoleDetails"]; + }; + "/rest/api/3/project/{projectIdOrKey}/statuses": { + /** + * Get all statuses for project + * @description Returns the valid statuses for a project. The statuses are grouped by issue type, as each project has a set of valid issue types and each issue type has a set of valid statuses. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getAllStatuses"]; + }; + "/rest/api/3/project/{projectIdOrKey}/version": { + /** + * Get project versions paginated + * @description Returns a [paginated](#pagination) list of all versions in a project. See the [Get project versions](#api-rest-api-3-project-projectIdOrKey-versions-get) resource if you want to get a full list of versions without pagination. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectVersionsPaginated"]; + }; + "/rest/api/3/project/{projectIdOrKey}/versions": { + /** + * Get project versions + * @description Returns all versions in a project. The response is not paginated. Use [Get project versions paginated](#api-rest-api-3-project-projectIdOrKey-version-get) if you want to get the versions in a project with pagination. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectVersions"]; + }; + "/rest/api/3/project/{projectId}/email": { + /** + * Get project's sender email + * @description Returns the [project's sender email address](https://confluence.atlassian.com/x/dolKLg). + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectEmail"]; + /** + * Set project's sender email + * @description Sets the [project's sender email address](https://confluence.atlassian.com/x/dolKLg). + * + * If `emailAddress` is an empty string, the default email address is restored. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + put: operations["updateProjectEmail"]; + }; + "/rest/api/3/project/{projectId}/hierarchy": { + /** + * Get project issue type hierarchy + * @deprecated + * @description Get the issue type hierarchy for a next-gen project. + * + * The issue type hierarchy for a project consists of: + * + * * *Epic* at level 1 (optional). + * * One or more issue types at level 0 such as *Story*, *Task*, or *Bug*. Where the issue type *Epic* is defined, these issue types are used to break down the content of an epic. + * * *Subtask* at level -1 (optional). This issue type enables level 0 issue types to be broken down into components. Issues based on a level -1 issue type must have a parent issue. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getHierarchy"]; + }; + "/rest/api/3/project/{projectKeyOrId}/issuesecuritylevelscheme": { + /** + * Get project issue security scheme + * @description Returns the [issue security scheme](https://confluence.atlassian.com/x/J4lKLg) associated with the project. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or the *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + get: operations["getProjectIssueSecurityScheme"]; + }; + "/rest/api/3/project/{projectKeyOrId}/notificationscheme": { + /** + * Get project notification scheme + * @description Gets a [notification scheme](https://confluence.atlassian.com/x/8YdKLg) associated with the project. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + get: operations["getNotificationSchemeForProject"]; + }; + "/rest/api/3/project/{projectKeyOrId}/permissionscheme": { + /** + * Get assigned permission scheme + * @description Gets the [permission scheme](https://confluence.atlassian.com/x/yodKLg) associated with the project. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + get: operations["getAssignedPermissionScheme"]; + /** + * Assign permission scheme + * @description Assigns a permission scheme with a project. See [Managing project permissions](https://confluence.atlassian.com/x/yodKLg) for more information about permission schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) + */ + put: operations["assignPermissionScheme"]; + }; + "/rest/api/3/project/{projectKeyOrId}/securitylevel": { + /** + * Get project issue security levels + * @description Returns all [issue security](https://confluence.atlassian.com/x/J4lKLg) levels for the project that the user has access to. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project, however, issue security levels are only returned for authenticated user with *Set Issue Security* [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project. + */ + get: operations["getSecurityLevelsForProject"]; + }; + "/rest/api/3/projectCategory": { + /** + * Get all project categories + * @description Returns all project categories. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getAllProjectCategories"]; + /** + * Create project category + * @description Creates a project category. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createProjectCategory"]; + }; + "/rest/api/3/projectCategory/{id}": { + /** + * Get project category by ID + * @description Returns a project category. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getProjectCategoryById"]; + /** + * Update project category + * @description Updates a project category. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateProjectCategory"]; + /** + * Delete project category + * @description Deletes a project category. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["removeProjectCategory"]; + }; + "/rest/api/3/projectvalidate/key": { + /** + * Validate project key + * @description Validates a project key by confirming the key is a valid string and not in use. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["validateProjectKey"]; + }; + "/rest/api/3/projectvalidate/validProjectKey": { + /** + * Get valid project key + * @description Validates a project key and, if the key is invalid or in use, generates a valid random string for the project key. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getValidProjectKey"]; + }; + "/rest/api/3/projectvalidate/validProjectName": { + /** + * Get valid project name + * @description Checks that a project name isn't in use. If the name isn't in use, the passed string is returned. If the name is in use, this operation attempts to generate a valid project name based on the one supplied, usually by adding a sequence number. If a valid project name cannot be generated, a 404 response is returned. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getValidProjectName"]; + }; + "/rest/api/3/resolution": { + /** + * Get resolutions + * @deprecated + * @description Returns a list of all issue resolution values. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getResolutions"]; + /** + * Create resolution + * @description Creates an issue resolution. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createResolution"]; + }; + "/rest/api/3/resolution/default": { + /** + * Set default resolution + * @description Sets default issue resolution. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setDefaultResolution"]; + }; + "/rest/api/3/resolution/move": { + /** + * Move resolutions + * @description Changes the order of issue resolutions. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["moveResolutions"]; + }; + "/rest/api/3/resolution/search": { + /** + * Search resolutions + * @description Returns a [paginated](#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](#permissions) required:** Permission to access Jira. + */ + get: operations["searchResolutions"]; + }; + "/rest/api/3/resolution/{id}": { + /** + * Get resolution + * @description Returns an issue resolution value. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getResolution"]; + /** + * Update resolution + * @description Updates an issue resolution. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateResolution"]; + /** + * Delete resolution + * @description Deletes an issue resolution. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteResolution"]; + }; + "/rest/api/3/role": { + /** + * Get all project roles + * @description Gets a list of all project roles, complete with project role details and default actors. + * + * ### About project roles ### + * + * [Project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) are a flexible way to to associate users and groups with projects. In Jira Cloud, the list of project roles is shared globally with all projects, but each project can have a different set of actors associated with it (unlike groups, which have the same membership throughout all Jira applications). + * + * Project roles are used in [permission schemes](#api-rest-api-3-permissionscheme-get), [email notification schemes](#api-rest-api-3-notificationscheme-get), [issue security levels](#api-rest-api-3-issuesecurityschemes-get), [comment visibility](#api-rest-api-3-comment-list-post), and workflow conditions. + * + * #### Members and actors #### + * + * In the Jira REST API, a member of a project role is called an *actor*. An *actor* is a group or user associated with a project role. + * + * Actors may be set as [default members](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/#Specifying-'default-members'-for-a-project-role) of the project role or set at the project level: + * + * * Default actors: Users and groups that are assigned to the project role for all newly created projects. The default actors can be removed at the project level later if desired. + * * Actors: Users and groups that are associated with a project role for a project, which may differ from the default actors. This enables you to assign a user to different roles in different projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllProjectRoles"]; + /** + * Create project role + * @description Creates a new project role with no [default actors](#api-rest-api-3-resolution-get). You can use the [Add default actors to project role](#api-rest-api-3-role-id-actors-post) operation to add default actors to the project role after creating it. + * + * *Note that although a new project role is available to all projects upon creation, any default actors that are associated with the project role are not added to projects that existed prior to the role being created.*< + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createProjectRole"]; + }; + "/rest/api/3/role/{id}": { + /** + * Get project role by ID + * @description Gets the project role details and the default actors associated with the role. The list of default actors is sorted by display name. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getProjectRoleById"]; + /** + * Fully update project role + * @description Updates the project role's name and description. You must include both a name and a description in the request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["fullyUpdateProjectRole"]; + /** + * Partial update project role + * @description Updates either the project role's name or its description. + * + * You cannot update both the name and description at the same time using this operation. If you send a request with a name and a description only the name is updated. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["partialUpdateProjectRole"]; + /** + * Delete project role + * @description Deletes a project role. You must specify a replacement project role if you wish to delete a project role that is in use. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteProjectRole"]; + }; + "/rest/api/3/role/{id}/actors": { + /** + * Get default actors for project role + * @description Returns the [default actors](#api-rest-api-3-resolution-get) for the project role. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getProjectRoleActorsForRole"]; + /** + * Add default actors to project role + * @description Adds [default actors](#api-rest-api-3-resolution-get) to a role. You may add groups or users, but you cannot add groups and users in the same request. + * + * Changing a project role's default actors does not affect project role members for projects already created. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["addProjectRoleActorsToRole"]; + /** + * Delete default actors from project role + * @description Deletes the [default actors](#api-rest-api-3-resolution-get) from a project role. You may delete a group or user, but you cannot delete a group and a user in the same request. + * + * Changing a project role's default actors does not affect project role members for projects already created. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteProjectRoleActorsFromRole"]; + }; + "/rest/api/3/screens": { + /** + * Get screens + * @description Returns a [paginated](#pagination) list of all screens or those specified by one or more screen IDs. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getScreens"]; + /** + * Create screen + * @description Creates a screen with a default field tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createScreen"]; + }; + "/rest/api/3/screens/addToDefault/{fieldId}": { + /** + * Add field to default screen + * @description Adds a field to the default tab of the default screen. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["addFieldToDefaultScreen"]; + }; + "/rest/api/3/screens/tabs": { + /** + * Get bulk screen tabs + * @description Returns the list of tabs for a bulk of screens. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getBulkScreenTabs"]; + }; + "/rest/api/3/screens/{screenId}": { + /** + * Update screen + * @description Updates a screen. Only screens used in classic projects can be updated. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateScreen"]; + /** + * Delete screen + * @description Deletes a screen. A screen cannot be deleted if it is used in a screen scheme, workflow, or workflow draft. + * + * Only screens used in classic projects can be deleted. + */ + delete: operations["deleteScreen"]; + }; + "/rest/api/3/screens/{screenId}/availableFields": { + /** + * Get available screen fields + * @description Returns the fields that can be added to a tab on a screen. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAvailableScreenFields"]; + }; + "/rest/api/3/screens/{screenId}/tabs": { + /** + * Get all screen tabs + * @description Returns the list of tabs for a screen. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen Scheme. + */ + get: operations["getAllScreenTabs"]; + /** + * Create screen tab + * @description Creates a tab for a screen. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["addScreenTab"]; + }; + "/rest/api/3/screens/{screenId}/tabs/{tabId}": { + /** + * Update screen tab + * @description Updates the name of a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["renameScreenTab"]; + /** + * Delete screen tab + * @description Deletes a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteScreenTab"]; + }; + "/rest/api/3/screens/{screenId}/tabs/{tabId}/fields": { + /** + * Get all screen tab fields + * @description Returns all fields for a screen tab. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen Scheme. + */ + get: operations["getAllScreenTabFields"]; + /** + * Add screen tab field + * @description Adds a field to a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["addScreenTabField"]; + }; + "/rest/api/3/screens/{screenId}/tabs/{tabId}/fields/{id}": { + /** + * Remove screen tab field + * @description Removes a field from a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["removeScreenTabField"]; + }; + "/rest/api/3/screens/{screenId}/tabs/{tabId}/fields/{id}/move": { + /** + * Move screen tab field + * @description Moves a screen tab field. + * + * If `after` and `position` are provided in the request, `position` is ignored. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["moveScreenTabField"]; + }; + "/rest/api/3/screens/{screenId}/tabs/{tabId}/move/{pos}": { + /** + * Move screen tab + * @description Moves a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["moveScreenTab"]; + }; + "/rest/api/3/screenscheme": { + /** + * Get screen schemes + * @description Returns a [paginated](#pagination) list of screen schemes. + * + * Only screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getScreenSchemes"]; + /** + * Create screen scheme + * @description Creates a screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createScreenScheme"]; + }; + "/rest/api/3/screenscheme/{screenSchemeId}": { + /** + * Update screen scheme + * @description Updates a screen scheme. Only screen schemes used in classic projects can be updated. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateScreenScheme"]; + /** + * Delete screen scheme + * @description Deletes a screen scheme. A screen scheme cannot be deleted if it is used in an issue type screen scheme. + * + * Only screens schemes used in classic projects can be deleted. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteScreenScheme"]; + }; + "/rest/api/3/search": { + /** + * Search for issues using JQL (GET) + * @description Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). + * + * If the JQL query expression is too large to be encoded as a query parameter, use the [POST](#api-rest-api-3-search-post) version of this resource. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Issues are included in the response where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + get: operations["searchForIssuesUsingJql"]; + /** + * Search for issues using JQL (POST) + * @description Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). + * + * There is a [GET](#api-rest-api-3-search-get) version of this resource that can be used for smaller JQL query expressions. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Issues are included in the response where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + post: operations["searchForIssuesUsingJqlPost"]; + }; + "/rest/api/3/securitylevel/{id}": { + /** + * Get issue security level + * @description Returns details of an issue security level. + * + * Use [Get issue security scheme](#api-rest-api-3-issuesecurityschemes-id-get) to obtain the IDs of issue security levels associated with the issue security scheme. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getIssueSecurityLevel"]; + }; + "/rest/api/3/serverInfo": { + /** + * Get Jira instance info + * @description Returns information about the Jira instance. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getServerInfo"]; + }; + "/rest/api/3/settings/columns": { + /** + * Get issue navigator default columns + * @description Returns the default issue navigator columns. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueNavigatorDefaultColumns"]; + /** + * Set issue navigator default columns + * @description Sets the default issue navigator columns. + * + * The `columns` parameter accepts a navigable field value and is expressed as HTML form data. To specify multiple columns, pass multiple `columns` parameters. For example, in curl: + * + * `curl -X PUT -d columns=summary -d columns=description https://your-domain.atlassian.net/rest/api/3/settings/columns` + * + * If no column details are sent, then all default columns are removed. + * + * A navigable field is one that can be used as a column on the issue navigator. Find details of navigable issue columns using [Get fields](#api-rest-api-3-field-get). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setIssueNavigatorDefaultColumns"]; + }; + "/rest/api/3/status": { + /** + * Get all statuses + * @description Returns a list of all statuses associated with active workflows. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getStatuses"]; + }; + "/rest/api/3/status/{idOrName}": { + /** + * Get status + * @description Returns a status. The status must be associated with an active workflow to be returned. + * + * If a name is used on more than one status, only the status found first is returned. Therefore, identifying the status by its ID may be preferable. + * + * This operation can be accessed anonymously. + * + * [Permissions](#permissions) required: None. + */ + get: operations["getStatus"]; + }; + "/rest/api/3/statuscategory": { + /** + * Get all status categories + * @description Returns a list of all status categories. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getStatusCategories"]; + }; + "/rest/api/3/statuscategory/{idOrKey}": { + /** + * Get status category + * @description Returns a status category. Status categories provided a mechanism for categorizing [statuses](#api-rest-api-3-status-idOrName-get). + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getStatusCategory"]; + }; + "/rest/api/3/statuses": { + /** + * Bulk get statuses + * @description Returns a list of the statuses specified by one or more status IDs. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + get: operations["getStatusesById"]; + /** + * Bulk update statuses + * @description Updates statuses by ID. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + put: operations["updateStatuses"]; + /** + * Bulk create statuses + * @description Creates statuses for a global or project scope. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + post: operations["createStatuses"]; + /** + * Bulk delete Statuses + * @description Deletes statuses by ID. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + delete: operations["deleteStatusesById"]; + }; + "/rest/api/3/statuses/search": { + /** + * Search statuses paginated + * @description Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of statuses that match a search on name or project. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + get: operations["search"]; + }; + "/rest/api/3/task/{taskId}": { + /** + * Get task + * @description Returns the status of a [long-running asynchronous task](#async). + * + * When a task has finished, this operation returns the JSON blob applicable to the task. See the documentation of the operation that created the task for details. Task details are not permanently retained. As of September 2019, details are retained for 14 days although this period may change without notice. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024. + * + * * `read:jira-work` + * + * **[Permissions](#permissions) required:** either of: + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * Creator of the task. + */ + get: operations["getTask"]; + }; + "/rest/api/3/task/{taskId}/cancel": { + /** + * Cancel task + * @description Cancels a task. + * + * **[Permissions](#permissions) required:** either of: + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * Creator of the task. + */ + post: operations["cancelTask"]; + }; + "/rest/api/3/uiModifications": { + /** + * Get UI modifications + * @description Gets UI modifications. UI modifications can only be retrieved by Forge apps. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getUiModifications"]; + /** + * Create UI modification + * @description Creates a UI modification. UI modification can only be created by Forge apps. + * + * Each app can define up to 3000 UI modifications. Each UI modification can define up to 1000 contexts. The same context can be assigned to maximum 100 UI modifications. + * + * **[Permissions](#permissions) required:** + * + * * *None* if the UI modification is created without contexts. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the UI modification is created with contexts. + */ + post: operations["createUiModification"]; + }; + "/rest/api/3/uiModifications/{uiModificationId}": { + /** + * Update UI modification + * @description Updates a UI modification. UI modification can only be updated by Forge apps. + * + * Each UI modification can define up to 1000 contexts. The same context can be assigned to maximum 100 UI modifications. + * + * **[Permissions](#permissions) required:** + * + * * *None* if the UI modification is created without contexts. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the UI modification is created with contexts. + */ + put: operations["updateUiModification"]; + /** + * Delete UI modification + * @description Deletes a UI modification. All the contexts that belong to the UI modification are deleted too. UI modification can only be deleted by Forge apps. + * + * **[Permissions](#permissions) required:** None. + */ + delete: operations["deleteUiModification"]; + }; + "/rest/api/3/universal_avatar/type/{type}/owner/{entityId}": { + /** + * Get avatars + * @description Returns the system and custom avatars for a project or issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * for custom project avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the avatar belongs to. + * * for custom issue type avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the issue type is used in. + * * for system avatars, none. + */ + get: operations["getAvatars"]; + /** + * Load avatar + * @description Loads a custom avatar for a project or issue type. + * + * Specify the avatar's local file location in the body of the request. Also, include the following headers: + * + * * `X-Atlassian-Token: no-check` To prevent XSRF protection blocking the request, for more information see [Special Headers](#special-request-headers). + * * `Content-Type: image/image type` Valid image types are JPEG, GIF, or PNG. + * + * For example: + * `curl --request POST ` + * + * `--user email@example.com: ` + * + * `--header 'X-Atlassian-Token: no-check' ` + * + * `--header 'Content-Type: image/< image_type>' ` + * + * `--data-binary "<@/path/to/file/with/your/avatar>" ` + * + * `--url 'https://your-domain.atlassian.net/rest/api/3/universal_avatar/type/{type}/owner/{entityId}'` + * + * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of the image. The length of the square's sides is set to the smaller of the height or width of the image. + * + * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size. + * + * After creating the avatar use: + * + * * [Update issue type](#api-rest-api-3-issuetype-id-put) to set it as the issue type's displayed avatar. + * * [Set project avatar](#api-rest-api-3-project-projectIdOrKey-avatar-put) to set it as the project's displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["storeAvatar"]; + }; + "/rest/api/3/universal_avatar/type/{type}/owner/{owningObjectId}/avatar/{id}": { + /** + * Delete avatar + * @description Deletes an avatar from a project or issue type. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteAvatar"]; + }; + "/rest/api/3/universal_avatar/view/type/{type}": { + /** + * Get avatar image by type + * @description Returns the default project or issue type avatar image. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAvatarImageByType"]; + }; + "/rest/api/3/universal_avatar/view/type/{type}/avatar/{id}": { + /** + * Get avatar image by ID + * @description Returns a project or issue type avatar image by ID. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * For system avatars, none. + * * For custom project avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the avatar belongs to. + * * For custom issue type avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the issue type is used in. + */ + get: operations["getAvatarImageByID"]; + }; + "/rest/api/3/universal_avatar/view/type/{type}/owner/{entityId}": { + /** + * Get avatar image by owner + * @description Returns the avatar image for a project or issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * For system avatars, none. + * * For custom project avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the avatar belongs to. + * * For custom issue type avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the issue type is used in. + */ + get: operations["getAvatarImageByOwner"]; + }; + "/rest/api/3/user": { + /** + * Get user + * @description Returns a user. + * + * Privacy controls are applied to the response based on the user's preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getUser"]; + /** + * Create user + * @description Creates a user. This resource is retained for legacy compatibility. As soon as a more suitable alternative is available this resource will be deprecated. + * + * If the user exists and has access to Jira, the operation returns a 201 status. If the user exists but does not have access to Jira, the operation returns a 400 status. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createUser"]; + /** + * Delete user + * @description Deletes a user. If the operation completes successfully then the user is removed from Jira's user base. This operation does not delete the user's Atlassian account. + * + * **[Permissions](#permissions) required:** Site administration (that is, membership of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + delete: operations["removeUser"]; + }; + "/rest/api/3/user/assignable/multiProjectSearch": { + /** + * Find users assignable to projects + * @description Returns a list of users who can be assigned issues in one or more projects. The list may be restricted to users whose attributes match a string. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that can be assigned issues in the projects. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who can be assigned issues in the projects, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["findBulkAssignableUsers"]; + }; + "/rest/api/3/user/assignable/search": { + /** + * Find users assignable to issues + * @description Returns a list of users that can be assigned to an issue. Use this operation to find the list of users who can be assigned to: + * + * * a new issue, by providing the `projectKeyOrId`. + * * an updated issue, by providing the `issueKey`. + * * to an issue during a transition (workflow action), by providing the `issueKey` and the transition id in `actionDescriptorId`. You can obtain the IDs of an issue's valid transitions using the `transitions` option in the `expand` parameter of [ Get issue](#api-rest-api-3-issue-issueIdOrKey-get). + * + * In all these cases, you can pass an account ID to determine if a user can be assigned to an issue. The user is returned in the response if they can be assigned to the issue or issue transition. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that can be assigned the issue. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who can be assigned the issue, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Assign issues* [project permission](https://confluence.atlassian.com/x/yodKLg) + */ + get: operations["findAssignableUsers"]; + }; + "/rest/api/3/user/bulk": { + /** + * Bulk get users + * @description Returns a [paginated](#pagination) list of the users specified by one or more account IDs. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["bulkGetUsers"]; + }; + "/rest/api/3/user/bulk/migration": { + /** + * Get account IDs for users + * @description Returns the account IDs for the users specified in the `key` or `username` parameters. Note that multiple `key` or `username` parameters can be specified. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["bulkGetUsersMigration"]; + }; + "/rest/api/3/user/columns": { + /** + * Get user default columns + * @description Returns the default [issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If `accountId` is not passed in the request, the calling user's details are returned. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLgl), to get the column details for any user. + * * Permission to access Jira, to get the calling user's column details. + */ + get: operations["getUserDefaultColumns"]; + /** + * Set user default columns + * @description Sets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If an account ID is not passed, the calling user's default columns are set. If no column details are sent, then all default columns are removed. + * + * The parameters for this resource are expressed as HTML form data. For example, in curl: + * + * `curl -X PUT -d columns=summary -d columns=description https://your-domain.atlassian.net/rest/api/3/user/columns?accountId=5b10ac8d82e05b22cc7d4ef5'` + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user. + * * Permission to access Jira, to set the calling user's columns. + */ + put: operations["setUserColumns"]; + /** + * Reset user default columns + * @description Resets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user to the system default. If `accountId` is not passed, the calling user's default columns are reset. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user. + * * Permission to access Jira, to set the calling user's columns. + */ + delete: operations["resetUserColumns"]; + }; + "/rest/api/3/user/email": { + /** + * Get user email + * @description Returns a user's email address. This API is only available to apps approved by Atlassian, according to these [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603). + */ + get: operations["getUserEmail"]; + }; + "/rest/api/3/user/email/bulk": { + /** + * Get user email bulk + * @description Returns a user's email address. This API is only available to apps approved by Atlassian, according to these [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603). + */ + get: operations["getUserEmailBulk"]; + }; + "/rest/api/3/user/groups": { + /** + * Get user groups + * @description Returns the groups to which a user belongs. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getUserGroups"]; + }; + "/rest/api/3/user/permission/search": { + /** + * Find users with permissions + * @description Returns a list of users who fulfill these criteria: + * + * * their user attributes match a search string. + * * they have a set of permissions for a project or issue. + * + * If no search string is provided, a list of all users with the permissions is returned. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the search string and have permission for the project or issue. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the search string and have permission for the project or issue, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to get users for any project. + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project, to get users for that project. + */ + get: operations["findUsersWithAllPermissions"]; + }; + "/rest/api/3/user/picker": { + /** + * Find users for picker + * @description Returns a list of users whose attributes match the query term. The returned object includes the `html` field where the matched query term is highlighted with the HTML strong tag. A list of account IDs can be provided to exclude users from the results. + * + * This operation takes the users in the range defined by `maxResults`, up to the thousandth user, and then returns only the users from that range that match the query term. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the query term, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by users without the required permission return search results for an exact name match only. + */ + get: operations["findUsersForPicker"]; + }; + "/rest/api/3/user/properties": { + /** + * Get user property keys + * @description Returns the keys of all properties for a user. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to access the property keys on any user. + * * Access to Jira, to access the calling user's property keys. + */ + get: operations["getUserPropertyKeys"]; + }; + "/rest/api/3/user/properties/{propertyKey}": { + /** + * Get user property + * @description Returns the value of a user's property. If no property key is provided [Get user property keys](#api-rest-api-3-user-properties-get) is called. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to get a property from any user. + * * Access to Jira, to get a property from the calling user's record. + */ + get: operations["getUserProperty"]; + /** + * Set user property + * @description Sets the value of a user's property. Use this resource to store custom data against a user. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to set a property on any user. + * * Access to Jira, to set a property on the calling user's record. + */ + put: operations["setUserProperty"]; + /** + * Delete user property + * @description Deletes a property from a user. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to delete a property from any user. + * * Access to Jira, to delete a property from the calling user's record. + */ + delete: operations["deleteUserProperty"]; + }; + "/rest/api/3/user/search": { + /** + * Find users + * @description Returns a list of active users that match the search string and property. + * + * This operation first applies a filter to match the search string and property, and then takes the filtered users in the range defined by `startAt` and `maxResults`, up to the thousandth user. To get all the users who match the search string and property, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * This operation can be accessed anonymously. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls or calls by users without the required permission return empty search results. + */ + get: operations["findUsers"]; + }; + "/rest/api/3/user/search/query": { + /** + * Find users by query + * @description Finds users with a structured query and returns a [paginated](#pagination) list of user details. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the structured query. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * + * The query statements are: + * + * * `is assignee of PROJ` Returns the users that are assignees of at least one issue in project *PROJ*. + * * `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues *PROJ-1* or *PROJ-2*. + * * `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues *PROJ-1* or *PROJ-2*. + * * `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues *PROJ-1* or *PROJ-2*. + * * `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues *PROJ-1* or *PROJ-2*. + * * `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues *PROJ-1* or *PROJ-2*. + * * `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues *PROJ-1* or *PROJ-2*. + * * `[propertyKey].entity.property.path is "property value"` Returns users with the entity property value. + * + * The list of issues can be extended as needed, as in *(PROJ-1, PROJ-2, ... PROJ-n)*. Statements can be combined using the `AND` and `OR` operators to form more complex queries. For example: + * + * `is assignee of PROJ AND [propertyKey].entity.property.path is "property value"` + */ + get: operations["findUsersByQuery"]; + }; + "/rest/api/3/user/search/query/key": { + /** + * Find user keys by query + * @description Finds users with a structured query and returns a [paginated](#pagination) list of user keys. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the structured query. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * + * The query statements are: + * + * * `is assignee of PROJ` Returns the users that are assignees of at least one issue in project *PROJ*. + * * `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues *PROJ-1* or *PROJ-2*. + * * `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues *PROJ-1* or *PROJ-2*. + * * `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues *PROJ-1* or *PROJ-2*. + * * `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues *PROJ-1* or *PROJ-2*. + * * `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues *PROJ-1* or *PROJ-2*. + * * `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues *PROJ-1* or *PROJ-2*. + * * `[propertyKey].entity.property.path is "property value"` Returns users with the entity property value. + * + * The list of issues can be extended as needed, as in *(PROJ-1, PROJ-2, ... PROJ-n)*. Statements can be combined using the `AND` and `OR` operators to form more complex queries. For example: + * + * `is assignee of PROJ AND [propertyKey].entity.property.path is "property value"` + */ + get: operations["findUserKeysByQuery"]; + }; + "/rest/api/3/user/viewissue/search": { + /** + * Find users with browse permission + * @description Returns a list of users who fulfill these criteria: + * + * * their user attributes match a search string. + * * they have permission to browse issues. + * + * Use this resource to find users who can browse: + * + * * an issue, by providing the `issueKey`. + * * any issue in a project, by providing the `projectKey`. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the search string and have permission to browse issues. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the search string and have permission to browse issues, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by users without the required permission return empty search results. + */ + get: operations["findUsersWithBrowsePermission"]; + }; + "/rest/api/3/users": { + /** + * Get all users default + * @description Returns a list of all users, including active users, inactive users and previously deleted users that have an Atlassian account. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllUsersDefault"]; + }; + "/rest/api/3/users/search": { + /** + * Get all users + * @description Returns a list of all users, including active users, inactive users and previously deleted users that have an Atlassian account. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllUsers"]; + }; + "/rest/api/3/version": { + /** + * Create version + * @description Creates a project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the version is added to. + */ + post: operations["createVersion"]; + }; + "/rest/api/3/version/{id}": { + /** + * Get version + * @description Returns a project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version. + */ + get: operations["getVersion"]; + /** + * Update version + * @description Updates a project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + put: operations["updateVersion"]; + /** + * Delete version + * @deprecated + * @description Deletes a project version. + * + * Deprecated, use [ Delete and replace version](#api-rest-api-3-version-id-removeAndSwap-post) that supports swapping version values in custom fields, in addition to the swapping for `fixVersion` and `affectedVersion` provided in this resource. + * + * Alternative versions can be provided to update issues that use the deleted version in `fixVersion` or `affectedVersion`. If alternatives are not provided, occurrences of `fixVersion` and `affectedVersion` that contain the deleted version are cleared. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + delete: operations["deleteVersion"]; + }; + "/rest/api/3/version/{id}/mergeto/{moveIssuesTo}": { + /** + * Merge versions + * @description Merges two project versions. The merge is completed by deleting the version specified in `id` and replacing any occurrences of its ID in `fixVersion` with the version ID specified in `moveIssuesTo`. + * + * Consider using [ Delete and replace version](#api-rest-api-3-version-id-removeAndSwap-post) instead. This resource supports swapping version values in `fixVersion`, `affectedVersion`, and custom fields. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + put: operations["mergeVersions"]; + }; + "/rest/api/3/version/{id}/move": { + /** + * Move version + * @description Modifies the version's sequence within the project, which affects the display order of the versions in Jira. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* project permission for the project that contains the version. + */ + post: operations["moveVersion"]; + }; + "/rest/api/3/version/{id}/relatedIssueCounts": { + /** + * Get version's related issues count + * @description Returns the following counts for a version: + * + * * Number of issues where the `fixVersion` is set to the version. + * * Number of issues where the `affectedVersion` is set to the version. + * * Number of issues where a version custom field is set to the version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* project permission for the project that contains the version. + */ + get: operations["getVersionRelatedIssues"]; + }; + "/rest/api/3/version/{id}/relatedwork": { + /** + * Get related work + * @description Returns related work items for the given version id. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version. + */ + get: operations["getRelatedWork"]; + /** + * Update related work + * @description Updates the given related work. You can only update generic link related works via Rest APIs. Any archived version related works can't be edited. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Resolve issues:* and *Edit issues* [Managing project permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the project that contains the version. + */ + put: operations["updateRelatedWork"]; + /** + * Create related work + * @description Creates a related work for the given version. You can only create a generic link type of related works via this API. relatedWorkId will be auto-generated UUID, that does not need to be provided. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Resolve issues:* and *Edit issues* [Managing project permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the project that contains the version. + */ + post: operations["createRelatedWork"]; + }; + "/rest/api/3/version/{id}/removeAndSwap": { + /** + * Delete and replace version + * @description Deletes a project version. + * + * Alternative versions can be provided to update issues that use the deleted version in `fixVersion`, `affectedVersion`, or any version picker custom fields. If alternatives are not provided, occurrences of `fixVersion`, `affectedVersion`, and any version picker custom field, that contain the deleted version, are cleared. Any replacement version must be in the same project as the version being deleted and cannot be the version being deleted. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + post: operations["deleteAndReplaceVersion"]; + }; + "/rest/api/3/version/{id}/unresolvedIssueCount": { + /** + * Get version's unresolved issues count + * @description Returns counts of the issues and unresolved issues for the project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* project permission for the project that contains the version. + */ + get: operations["getVersionUnresolvedIssues"]; + }; + "/rest/api/3/version/{versionId}/relatedwork/{relatedWorkId}": { + /** + * Delete related work + * @description Deletes the given related work for the given version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Resolve issues:* and *Edit issues* [Managing project permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the project that contains the version. + */ + delete: operations["deleteRelatedWork"]; + }; + "/rest/api/3/webhook": { + /** + * Get dynamic webhooks for app + * @description Returns a [paginated](#pagination) list of the webhooks registered by the calling app. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + get: operations["getDynamicWebhooksForApp"]; + /** + * Register dynamic webhooks + * @description Registers webhooks. + * + * **NOTE:** for non-public OAuth apps, webhooks are delivered only if there is a match between the app owner and the user who registered a dynamic webhook. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + post: operations["registerDynamicWebhooks"]; + /** + * Delete webhooks by ID + * @description Removes webhooks by ID. Only webhooks registered by the calling app are removed. If webhooks created by other apps are specified, they are ignored. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + delete: operations["deleteWebhookById"]; + }; + "/rest/api/3/webhook/failed": { + /** + * Get failed webhooks + * @description Returns webhooks that have recently failed to be delivered to the requesting app after the maximum number of retries. + * + * After 72 hours the failure may no longer be returned by this operation. + * + * The oldest failure is returned first. + * + * This method uses a cursor-based pagination. To request the next page use the failure time of the last webhook on the list as the `failedAfter` value or use the URL provided in `next`. + * + * **[Permissions](#permissions) required:** Only [Connect apps](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) can use this operation. + */ + get: operations["getFailedWebhooks"]; + }; + "/rest/api/3/webhook/refresh": { + /** + * Extend webhook life + * @description Extends the life of webhook. Webhooks registered through the REST API expire after 30 days. Call this operation to keep them alive. + * + * Unrecognized webhook IDs (those that are not found or belong to other apps) are ignored. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + put: operations["refreshWebhooks"]; + }; + "/rest/api/3/workflow": { + /** + * Get all workflows + * @deprecated + * @description Returns all workflows in Jira or a workflow. Deprecated, use [Get workflows paginated](#api-rest-api-3-workflow-search-get). + * + * If the `workflowName` parameter is specified, the workflow is returned as an object (not in an array). Otherwise, an array of workflow objects is returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllWorkflows"]; + /** + * Create workflow + * @deprecated + * @description Creates a workflow. You can define transition rules using the shapes detailed in the following sections. If no transitional rules are specified the default system transition rules are used. Note: This only applies to company-managed scoped workflows. Use [bulk create workflows](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflows/#api-rest-api-3-workflows-create-post) to create both team and company-managed scoped workflows. + * + * #### Conditions #### + * + * Conditions enable workflow rules that govern whether a transition can execute. + * + * ##### Always false condition ##### + * + * A condition that always fails. + * + * { + * "type": "AlwaysFalseCondition" + * } + * + * ##### Block transition until approval ##### + * + * A condition that blocks issue transition if there is a pending approval. + * + * { + * "type": "BlockInProgressApprovalCondition" + * } + * + * ##### Compare number custom field condition ##### + * + * A condition that allows transition if a comparison between a number custom field and a value is true. + * + * { + * "type": "CompareNumberCFCondition", + * "configuration": { + * "comparator": "=", + * "fieldId": "customfield_10029", + * "fieldValue": 2 + * } + * } + * + * * `comparator` One of the supported comparator: `=`, `>`, and `<`. + * * `fieldId` The custom numeric field ID. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:float` + * * `com.pyxis.greenhopper.jira:jsw-story-points` + * * `fieldValue` The value for comparison. + * + * ##### Hide from user condition ##### + * + * A condition that hides a transition from users. The transition can only be triggered from a workflow function or REST API operation. + * + * { + * "type": "RemoteOnlyCondition" + * } + * + * ##### Only assignee condition ##### + * + * A condition that allows only the assignee to execute a transition. + * + * { + * "type": "AllowOnlyAssignee" + * } + * + * ##### Only Bamboo notifications workflow condition (deprecated) ##### + * + * A condition that makes the transition available only to Bamboo build notifications. + * + * { + * "type": "OnlyBambooNotificationsCondition" + * } + * + * ##### Only reporter condition ##### + * + * A condition that allows only the reporter to execute a transition. + * + * { + * "type": "AllowOnlyReporter" + * } + * + * ##### Permission condition ##### + * + * A condition that allows only users with a permission to execute a transition. + * + * { + * "type": "PermissionCondition", + * "configuration": { + * "permissionKey": "BROWSE_PROJECTS" + * } + * } + * + * * `permissionKey` The permission required to perform the transition. Allowed values: [built-in](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions) or app defined permissions. + * + * ##### Previous status condition ##### + * + * A condition that allows a transition based on whether an issue has or has not transitioned through a status. + * + * { + * "type": "PreviousStatusCondition", + * "configuration": { + * "ignoreLoopTransitions": true, + * "includeCurrentStatus": true, + * "mostRecentStatusOnly": true, + * "reverseCondition": true, + * "previousStatus": { + * "id": "5" + * } + * } + * } + * + * By default this condition allows the transition if the status, as defined by its ID in the `previousStatus` object, matches any previous issue status, unless: + * + * * `ignoreLoopTransitions` is `true`, then loop transitions (from and to the same status) are ignored. + * * `includeCurrentStatus` is `true`, then the current issue status is also checked. + * * `mostRecentStatusOnly` is `true`, then only the issue's preceding status (the one immediately before the current status) is checked. + * * `reverseCondition` is `true`, then the status must not be present. + * + * ##### Separation of duties condition ##### + * + * A condition that prevents a user to perform the transition, if the user has already performed a transition on the issue. + * + * { + * "type": "SeparationOfDutiesCondition", + * "configuration": { + * "fromStatus": { + * "id": "5" + * }, + * "toStatus": { + * "id": "6" + * } + * } + * } + * + * * `fromStatus` OPTIONAL. An object containing the ID of the source status of the transition that is blocked. If omitted any transition to `toStatus` is blocked. + * * `toStatus` An object containing the ID of the target status of the transition that is blocked. + * + * ##### Subtask blocking condition ##### + * + * A condition that blocks transition on a parent issue if any of its subtasks are in any of one or more statuses. + * + * { + * "type": "SubTaskBlockingCondition", + * "configuration": { + * "statuses": [ + * { + * "id": "1" + * }, + * { + * "id": "3" + * } + * ] + * } + * } + * + * * `statuses` A list of objects containing status IDs. + * + * ##### User is in any group condition ##### + * + * A condition that allows users belonging to any group from a list of groups to execute a transition. + * + * { + * "type": "UserInAnyGroupCondition", + * "configuration": { + * "groups": [ + * "administrators", + * "atlassian-addons-admin" + * ] + * } + * } + * + * * `groups` A list of group names. + * + * ##### User is in any project role condition ##### + * + * A condition that allows only users with at least one project roles from a list of project roles to execute a transition. + * + * { + * "type": "InAnyProjectRoleCondition", + * "configuration": { + * "projectRoles": [ + * { + * "id": "10002" + * }, + * { + * "id": "10003" + * }, + * { + * "id": "10012" + * }, + * { + * "id": "10013" + * } + * ] + * } + * } + * + * * `projectRoles` A list of objects containing project role IDs. + * + * ##### User is in custom field condition ##### + * + * A condition that allows only users listed in a given custom field to execute the transition. + * + * { + * "type": "UserIsInCustomFieldCondition", + * "configuration": { + * "allowUserInField": false, + * "fieldId": "customfield_10010" + * } + * } + * + * * `allowUserInField` If `true` only a user who is listed in `fieldId` can perform the transition, otherwise, only a user who is not listed in `fieldId` can perform the transition. + * * `fieldId` The ID of the field containing the list of users. + * + * ##### User is in group condition ##### + * + * A condition that allows users belonging to a group to execute a transition. + * + * { + * "type": "UserInGroupCondition", + * "configuration": { + * "group": "administrators" + * } + * } + * + * * `group` The name of the group. + * + * ##### User is in group custom field condition ##### + * + * A condition that allows users belonging to a group specified in a custom field to execute a transition. + * + * { + * "type": "InGroupCFCondition", + * "configuration": { + * "fieldId": "customfield_10012" + * } + * } + * + * * `fieldId` The ID of the field. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:multigrouppicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:grouppicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:select` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multiselect` + * * `com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes` + * * `com.pyxis.greenhopper.jira:gh-epic-status` + * + * ##### User is in project role condition ##### + * + * A condition that allows users with a project role to execute a transition. + * + * { + * "type": "InProjectRoleCondition", + * "configuration": { + * "projectRole": { + * "id": "10002" + * } + * } + * } + * + * * `projectRole` An object containing the ID of a project role. + * + * ##### Value field condition ##### + * + * A conditions that allows a transition to execute if the value of a field is equal to a constant value or simply set. + * + * { + * "type": "ValueFieldCondition", + * "configuration": { + * "fieldId": "assignee", + * "fieldValue": "qm:6e1ecee6-8e64-4db6-8c85-916bb3275f51:54b56885-2bd2-4381-8239-78263442520f", + * "comparisonType": "NUMBER", + * "comparator": "=" + * } + * } + * + * * `fieldId` The ID of a field used in the comparison. + * * `fieldValue` The expected value of the field. + * * `comparisonType` The type of the comparison. Allowed values: `STRING`, `NUMBER`, `DATE`, `DATE_WITHOUT_TIME`, or `OPTIONID`. + * * `comparator` One of the supported comparator: `>`, `>=`, `=`, `<=`, `<`, `!=`. + * + * **Notes:** + * + * * If you choose the comparison type `STRING`, only `=` and `!=` are valid options. + * * You may leave `fieldValue` empty when comparison type is `!=` to indicate that a value is required in the field. + * * For date fields without time format values as `yyyy-MM-dd`, and for those with time as `yyyy-MM-dd HH:mm`. For example, for July 16 2021 use `2021-07-16`, for 8:05 AM use `2021-07-16 08:05`, and for 4 PM: `2021-07-16 16:00`. + * + * #### Validators #### + * + * Validators check that any input made to the transition is valid before the transition is performed. + * + * ##### Date field validator ##### + * + * A validator that compares two dates. + * + * { + * "type": "DateFieldValidator", + * "configuration": { + * "comparator": ">", + * "date1": "updated", + * "date2": "created", + * "expression": "1d", + * "includeTime": true + * } + * } + * + * * `comparator` One of the supported comparator: `>`, `>=`, `=`, `<=`, `<`, or `!=`. + * * `date1` The date field to validate. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `date2` The second date field. Required, if `expression` is not passed. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `expression` An expression specifying an offset. Required, if `date2` is not passed. Offsets are built with a number, with `-` as prefix for the past, and one of these time units: `d` for day, `w` for week, `m` for month, or `y` for year. For example, -2d means two days into the past and 1w means one week into the future. The `now` keyword enables a comparison with the current date. + * * `includeTime` If `true`, then the time part of the data is included for the comparison. If the field doesn't have a time part, 00:00:00 is used. + * + * ##### Windows date validator ##### + * + * A validator that checks that a date falls on or after a reference date and before or on the reference date plus a number of days. + * + * { + * "type": "WindowsDateValidator", + * "configuration": { + * "date1": "customfield_10009", + * "date2": "created", + * "windowsDays": 5 + * } + * } + * + * * `date1` The date field to validate. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `date2` The reference date. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `windowsDays` A positive integer indicating a number of days. + * + * ##### Field required validator ##### + * + * A validator that checks fields are not empty. By default, if a field is not included in the current context it's ignored and not validated. + * + * { + * "type": "FieldRequiredValidator", + * "configuration": { + * "ignoreContext": true, + * "errorMessage": "Hey", + * "fieldIds": [ + * "versions", + * "customfield_10037", + * "customfield_10003" + * ] + * } + * } + * + * * `ignoreContext` If `true`, then the context is ignored and all the fields are validated. + * * `errorMessage` OPTIONAL. The error message displayed when one or more fields are empty. A default error message is shown if an error message is not provided. + * * `fieldIds` The list of fields to validate. + * + * ##### Field changed validator ##### + * + * A validator that checks that a field value is changed. However, this validation can be ignored for users from a list of groups. + * + * { + * "type": "FieldChangedValidator", + * "configuration": { + * "fieldId": "comment", + * "errorMessage": "Hey", + * "exemptedGroups": [ + * "administrators", + * "atlassian-addons-admin" + * ] + * } + * } + * + * * `fieldId` The ID of a field. + * * `errorMessage` OPTIONAL. The error message displayed if the field is not changed. A default error message is shown if the error message is not provided. + * * `exemptedGroups` OPTIONAL. The list of groups. + * + * ##### Field has single value validator ##### + * + * A validator that checks that a multi-select field has only one value. Optionally, the validation can ignore values copied from subtasks. + * + * { + * "type": "FieldHasSingleValueValidator", + * "configuration": { + * "fieldId": "attachment, + * "excludeSubtasks": true + * } + * } + * + * * `fieldId` The ID of a field. + * * `excludeSubtasks` If `true`, then values copied from subtasks are ignored. + * + * ##### Parent status validator ##### + * + * A validator that checks the status of the parent issue of a subtask. Ìf the issue is not a subtask, no validation is performed. + * + * { + * "type": "ParentStatusValidator", + * "configuration": { + * "parentStatuses": [ + * { + * "id":"1" + * }, + * { + * "id":"2" + * } + * ] + * } + * } + * + * * `parentStatus` The list of required parent issue statuses. + * + * ##### Permission validator ##### + * + * A validator that checks the user has a permission. + * + * { + * "type": "PermissionValidator", + * "configuration": { + * "permissionKey": "ADMINISTER_PROJECTS" + * } + * } + * + * * `permissionKey` The permission required to perform the transition. Allowed values: [built-in](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions) or app defined permissions. + * + * ##### Previous status validator ##### + * + * A validator that checks if the issue has held a status. + * + * { + * "type": "PreviousStatusValidator", + * "configuration": { + * "mostRecentStatusOnly": false, + * "previousStatus": { + * "id": "15" + * } + * } + * } + * + * * `mostRecentStatusOnly` If `true`, then only the issue's preceding status (the one immediately before the current status) is checked. + * * `previousStatus` An object containing the ID of an issue status. + * + * ##### Regular expression validator ##### + * + * A validator that checks the content of a field against a regular expression. + * + * { + * "type": "RegexpFieldValidator", + * "configuration": { + * "regExp": "[0-9]", + * "fieldId": "customfield_10029" + * } + * } + * + * * `regExp`A regular expression. + * * `fieldId` The ID of a field. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:select` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multiselect` + * * `com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes` + * * `com.atlassian.jira.plugin.system.customfieldtypes:textarea` + * * `com.atlassian.jira.plugin.system.customfieldtypes:textfield` + * * `com.atlassian.jira.plugin.system.customfieldtypes:url` + * * `com.atlassian.jira.plugin.system.customfieldtypes:float` + * * `com.pyxis.greenhopper.jira:jsw-story-points` + * * `com.pyxis.greenhopper.jira:gh-epic-status` + * * `description` + * * `summary` + * + * ##### User permission validator ##### + * + * A validator that checks if a user has a permission. Obsolete. You may encounter this validator when getting transition rules and can pass it when updating or creating rules, for example, when you want to duplicate the rules from a workflow on a new workflow. + * + * { + * "type": "UserPermissionValidator", + * "configuration": { + * "permissionKey": "BROWSE_PROJECTS", + * "nullAllowed": false, + * "username": "TestUser" + * } + * } + * + * * `permissionKey` The permission to be validated. Allowed values: [built-in](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions) or app defined permissions. + * * `nullAllowed` If `true`, allows the transition when `username` is empty. + * * `username` The username to validate against the `permissionKey`. + * + * #### Post functions #### + * + * Post functions carry out any additional processing required after a Jira workflow transition is executed. + * + * ##### Fire issue event function ##### + * + * A post function that fires an event that is processed by the listeners. + * + * { + * "type": "FireIssueEventFunction", + * "configuration": { + * "event": { + * "id":"1" + * } + * } + * } + * + * **Note:** If provided, this post function overrides the default `FireIssueEventFunction`. Can be included once in a transition. + * + * * `event` An object containing the ID of the issue event. + * + * ##### Update issue status ##### + * + * A post function that sets issue status to the linked status of the destination workflow status. + * + * { + * "type": "UpdateIssueStatusFunction" + * } + * + * **Note:** This post function is a default function in global and directed transitions. It can only be added to the initial transition and can only be added once. + * + * ##### Create comment ##### + * + * A post function that adds a comment entered during the transition to an issue. + * + * { + * "type": "CreateCommentFunction" + * } + * + * **Note:** This post function is a default function in global and directed transitions. It can only be added to the initial transition and can only be added once. + * + * ##### Store issue ##### + * + * A post function that stores updates to an issue. + * + * { + * "type": "IssueStoreFunction" + * } + * + * **Note:** This post function can only be added to the initial transition and can only be added once. + * + * ##### Assign to current user function ##### + * + * A post function that assigns the issue to the current user if the current user has the `ASSIGNABLE_USER` permission. + * + * { + * "type": "AssignToCurrentUserFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Assign to lead function ##### + * + * A post function that assigns the issue to the project or component lead developer. + * + * { + * "type": "AssignToLeadFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Assign to reporter function ##### + * + * A post function that assigns the issue to the reporter. + * + * { + * "type": "AssignToReporterFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Clear field value function ##### + * + * A post function that clears the value from a field. + * + * { + * "type": "ClearFieldValuePostFunction", + * "configuration": { + * "fieldId": "assignee" + * } + * } + * + * * `fieldId` The ID of the field. + * + * ##### Copy value from other field function ##### + * + * A post function that copies the value of one field to another, either within an issue or from parent to subtask. + * + * { + * "type": "CopyValueFromOtherFieldPostFunction", + * "configuration": { + * "sourceFieldId": "assignee", + * "destinationFieldId": "creator", + * "copyType": "same" + * } + * } + * + * * `sourceFieldId` The ID of the source field. + * * `destinationFieldId` The ID of the destination field. + * * `copyType` Use `same` to copy the value from a field inside the issue, or `parent` to copy the value from the parent issue. + * + * ##### Create Crucible review workflow function (deprecated) ##### + * + * A post function that creates a Crucible review for all unreviewed code for the issue. + * + * { + * "type": "CreateCrucibleReviewWorkflowFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Set issue security level based on user's project role function ##### + * + * A post function that sets the issue's security level if the current user has a project role. + * + * { + * "type": "SetIssueSecurityFromRoleFunction", + * "configuration": { + * "projectRole": { + * "id":"10002" + * }, + * "issueSecurityLevel": { + * "id":"10000" + * } + * } + * } + * + * * `projectRole` An object containing the ID of the project role. + * * `issueSecurityLevel` OPTIONAL. The object containing the ID of the security level. If not passed, then the security level is set to `none`. + * + * ##### Trigger a webhook function ##### + * + * A post function that triggers a webhook. + * + * { + * "type": "TriggerWebhookFunction", + * "configuration": { + * "webhook": { + * "id": "1" + * } + * } + * } + * + * * `webhook` An object containing the ID of the webhook listener to trigger. + * + * ##### Update issue custom field function ##### + * + * A post function that updates the content of an issue custom field. + * + * { + * "type": "UpdateIssueCustomFieldPostFunction", + * "configuration": { + * "mode": "append", + * "fieldId": "customfield_10003", + * "fieldValue": "yikes" + * } + * } + * + * * `mode` Use `replace` to override the field content with `fieldValue` or `append` to add `fieldValue` to the end of the field content. + * * `fieldId` The ID of the field. + * * `fieldValue` The update content. + * + * ##### Update issue field function ##### + * + * A post function that updates a simple issue field. + * + * { + * "type": "UpdateIssueFieldFunction", + * "configuration": { + * "fieldId": "assignee", + * "fieldValue": "5f0c277e70b8a90025a00776" + * } + * } + * + * * `fieldId` The ID of the field. Allowed field types: + * + * * `assignee` + * * `description` + * * `environment` + * * `priority` + * * `resolution` + * * `summary` + * * `timeoriginalestimate` + * * `timeestimate` + * * `timespent` + * * `fieldValue` The update value. + * * If the `fieldId` is `assignee`, the `fieldValue` should be one of these values: + * + * * an account ID. + * * `automatic`. + * * a blank string, which sets the value to `unassigned`. + * + * #### Connect rules #### + * + * Connect rules are conditions, validators, and post functions of a transition that are registered by Connect apps. To create a rule registered by the app, the app must be enabled and the rule's module must exist. + * + * { + * "type": "appKey__moduleKey", + * "configuration": { + * "value":"{\"isValid\":\"true\"}" + * } + * } + * + * * `type` A Connect rule key in a form of `appKey__moduleKey`. + * * `value` The stringified JSON configuration of a Connect rule. + * + * #### Forge rules #### + * + * Forge transition rules are not yet supported. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createWorkflow"]; + }; + "/rest/api/3/workflow/rule/config": { + /** + * Get workflow transition rule configurations + * @description Returns a [paginated](#pagination) list of workflows with transition rules. The workflows can be filtered to return only those containing workflow transition rules: + * + * * of one or more transition rule types, such as [workflow post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/). + * * matching one or more transition rule keys. + * + * Only workflows containing transition rules created by the calling [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app are returned. + * + * Due to server-side optimizations, workflows with an empty list of rules may be returned; these workflows can be ignored. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation. + */ + get: operations["getWorkflowTransitionRuleConfigurations"]; + /** + * Update workflow transition rule configurations + * @description Updates configuration of workflow transition rules. The following rule types are supported: + * + * * [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/) + * * [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/) + * * [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/) + * + * Only rules created by the calling [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app can be updated. + * + * To assist with app migration, this operation can be used to: + * + * * Disable a rule. + * * Add a `tag`. Use this to filter rules in the [Get workflow transition rule configurations](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-transition-rules/#api-rest-api-3-workflow-rule-config-get). + * + * Rules are enabled if the `disabled` parameter is not provided. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation. + */ + put: operations["updateWorkflowTransitionRuleConfigurations"]; + }; + "/rest/api/3/workflow/rule/config/delete": { + /** + * Delete workflow transition rule configurations + * @description Deletes workflow transition rules from one or more workflows. These rule types are supported: + * + * * [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/) + * * [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/) + * * [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/) + * + * Only rules created by the calling Connect app can be deleted. + * + * **[Permissions](#permissions) required:** Only Connect apps can use this operation. + */ + put: operations["deleteWorkflowTransitionRuleConfigurations"]; + }; + "/rest/api/3/workflow/search": { + /** + * Get workflows paginated + * @description Returns a [paginated](#pagination) list of published classic workflows. When workflow names are specified, details of those workflows are returned. Otherwise, all published classic workflows are returned. + * + * This operation does not return next-gen workflows. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowsPaginated"]; + }; + "/rest/api/3/workflow/transitions/{transitionId}/properties": { + /** + * Get workflow transition properties + * @description Returns the properties on a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowTransitionProperties"]; + /** + * Update workflow transition property + * @description Updates a workflow transition by changing the property value. Trying to update a property that does not exist results in a new property being added to the transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateWorkflowTransitionProperty"]; + /** + * Create workflow transition property + * @description Adds a property to a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createWorkflowTransitionProperty"]; + /** + * Delete workflow transition property + * @description Deletes a property from a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteWorkflowTransitionProperty"]; + }; + "/rest/api/3/workflow/{entityId}": { + /** + * Delete inactive workflow + * @description Deletes a workflow. + * + * The workflow cannot be deleted if it is: + * + * * an active workflow. + * * a system workflow. + * * associated with any workflow scheme. + * * associated with any draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteInactiveWorkflow"]; + }; + "/rest/api/3/workflows": { + /** + * Bulk get workflows + * @description Returns a list of workflows and related statuses by providing workflow names, workflow IDs, or project and issue types. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* global permission to access all, including project-scoped, workflows + * * At least one of the *Administer projects* and *View (read-only) workflow* project permissions to access project-scoped workflows + */ + post: operations["readWorkflows"]; + }; + "/rest/api/3/workflows/capabilities": { + /** + * Get available workflow capabilities + * @description Get the list of workflow capabilities for a specific workflow using either the workflow ID, or the project and issue type ID pair. The response includes the scope of the workflow, defined as global/project-based, and a list of project types that the workflow is scoped to. It also includes all rules organised into their broad categories (conditions, validators, actions, triggers, screens) as well as the source location (Atlassian-provided, Connect, Forge). + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to access all, including global-scoped, workflows + * * *Administer projects* project permissions to access project-scoped workflows + * + * The current list of Atlassian-provided rules: + * + * #### Validators #### + * + * A validator rule that checks if a user has the required permissions to execute the transition in the workflow. + * + * ##### Permission validator ##### + * + * A validator rule that checks if a user has the required permissions to execute the transition in the workflow. + * + * { + * "ruleKey": "system:check-permission-validator", + * "parameters": { + * "permissionKey": "ADMINISTER_PROJECTS" + * } + * } + * + * Parameters: + * + * * `permissionKey` The permission required to perform the transition. Allowed values: [built-in Jira permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions). + * + * ##### Parent or child blocking validator ##### + * + * A validator to block the child issue\\u2019s transition depending on the parent issue\\u2019s status. + * + * { + * "ruleKey" : "system:parent-or-child-blocking-validator" + * "parameters" : { + * "blocker" : "PARENT" + * "statusIds" : "1,2,3" + * } + * } + * + * Parameters: + * + * * `blocker` currently only supports `PARENT`. + * * `statusIds` a comma-separated list of status IDs. + * + * ##### Previous status validator ##### + * + * A validator that checks if an issue has transitioned through specified previous status(es) before allowing the current transition to occur. + * + * { + * "ruleKey": "system:previous-status-validator", + * "parameters": { + * "previousStatusIds": "10014", + * "mostRecentStatusOnly": "true" + * } + * } + * + * Parameters: + * + * * `previousStatusIds` a comma-separated list of status IDs, currently only support one ID. + * * `mostRecentStatusOnly` when `true` only considers the most recent status for the condition evaluation. Allowed values: `true`, `false`. + * + * ##### Validate a field value ##### + * + * A validation that ensures a specific field's value meets the defined criteria before allowing an issue to transition in the workflow. + * + * Depending on the rule type, the result will vary: + * + * ###### Field required ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldRequired", + * "fieldsRequired": "assignee", + * "ignoreContext": "true", + * "errorMessage": "An assignee must be set!" + * } + * } + * + * Parameters: + * + * * `fieldsRequired` the ID of the field that is required. For a custom field, it would look like `customfield_123`. + * * `ignoreContext` controls the impact of context settings on field validation. When set to `true`, the validator doesn't check a required field if its context isn't configured for the current issue. When set to `false`, the validator requires a field even if its context is invalid. Allowed values: `true`, `false`. + * * `errorMessage` is the error message to display if the user does not provide a value during the transition. A default error message will be shown if you don't provide one (Optional). + * + * ###### Field changed ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldChanged", + * "groupsExemptFromValidation": "6862ac20-8672-4f68-896d-4854f5efb79e", + * "fieldKey": "versions", + * "errorMessage": "Affect versions must be modified before transition" + * } + * } + * + * Parameters: + * + * * `groupsExemptFromValidation` a comma-separated list of group IDs to be exempt from the validation. + * * `fieldKey` the ID of the field that has changed. For a custom field, it would look like `customfield_123`. + * * `errorMessage` the error message to display if the user does not provide a value during the transition. A default error message will be shown if you don't provide one (Optional). + * + * ###### Field has a single value ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldHasSingleValue", + * "fieldKey": "created", + * "excludeSubtasks": "true" + * } + * } + * + * Parameters: + * + * * `fieldKey` the ID of the field to validate. For a custom field, it would look like `customfield_123`. + * * `excludeSubtasks` Option to exclude values copied from sub-tasks. Allowed values: `true`, `false`. + * + * ###### Field matches regular expression ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldMatchesRegularExpression", + * "regexp": "[0-9]{4}", + * "fieldKey": "description" + * } + * } + * + * Parameters: + * + * * `regexp` the regular expression used to validate the field\\u2019s content. + * * `fieldKey` the ID of the field to validate. For a custom field, it would look like `customfield_123`. + * + * ###### Date field comparison ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "dateFieldComparison", + * "date1FieldKey": "duedate", + * "date2FieldKey": "customfield_10054", + * "includeTime": "true", + * "conditionSelected": ">=" + * } + * } + * + * Parameters: + * + * * `date1FieldKey` the ID of the first field to compare. For a custom field, it would look like `customfield_123`. + * * `date2FieldKey` the ID of the second field to compare. For a custom field, it would look like `customfield_123`. + * * `includeTime` if `true`, compares both date and time. Allowed values: `true`, `false`. + * * `conditionSelected` the condition to compare with. Allowed values: `>`, `>=`, `=`, `<=`, `<`, `!=`. + * + * ###### Date range comparison ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "windowDateComparison", + * "date1FieldKey": "customfield_10009", + * "date2FieldKey": "customfield_10054", + * "numberOfDays": "3" + * } + * } + * + * Parameters: + * + * * `date1FieldKey` the ID of the first field to compare. For a custom field, it would look like `customfield_123`. + * * `date2FieldKey` the ID of the second field to compare. For a custom field, it would look like `customfield_123`. + * * `numberOfDays` maximum number of days past the reference date (`date2FieldKey`) to pass validation. + * + * This rule is composed by aggregating the following legacy rules: + * + * * FieldRequiredValidator + * * FieldChangedValidator + * * FieldHasSingleValueValidator + * * RegexpFieldValidator + * * DateFieldValidator + * * WindowsDateValidator + * + * ##### Proforma: Forms attached validator ##### + * + * Validates that one or more forms are attached to the issue. + * + * { + * "ruleKey" : "system:proforma-forms-attached" + * "parameters" : {} + * } + * + * ##### Proforma: Forms submitted validator ##### + * + * Validates that all forms attached to the issue have been submitted. + * + * { + * "ruleKey" : "system:proforma-forms-submitted" + * "parameters" : {} + * } + * + * #### Conditions #### + * + * Conditions enable workflow rules that govern whether a transition can execute. + * + * ##### Check field value ##### + * + * A condition rule evaluates as true if a specific field's value meets the defined criteria. This rule ensures that an issue can only transition to the next step in the workflow if the field's value matches the desired condition. + * + * { + * "ruleKey": "system:check-field-value", + * "parameters": { + * "fieldId": "description", + * "fieldValue": "[\"Done\"]", + * "comparator": "=", + * "comparisonType": "STRING" + * } + * } + * + * Parameters: + * + * * `fieldId` The ID of the field to check the value of. For non-system fields, it will look like `customfield_123`. Note: `fieldId` is used interchangeably with the idea of `fieldKey` here, they refer to the same field. + * * `fieldValue` the list of values to check against the field\\u2019s value. + * * `comparator` The comparison logic. Allowed values: `>`, `>=`, `=`, `<=`, `<`, `!=`. + * * `comparisonType` The type of data being compared. Allowed values: `STRING`, `NUMBER`, `DATE`, `DATE_WITHOUT_TIME`, `OPTIONID`. + * + * ##### Restrict issue transition ##### + * + * This rule ensures that issue transitions are restricted based on user accounts, roles, group memberships, and permissions, maintaining control over who can transition an issue. This condition evaluates as `true` if any of the following criteria is met. + * + * { + * "ruleKey": "system:restrict-issue-transition", + * "parameters": { + * "accountIds": "allow-reporter,5e68ac137d64450d01a77fa0", + * "roleIds": "10002,10004", + * "groupIds": "703ff44a-7dc8-4f4b-9aa6-a65bf3574fa4", + * "permissionKeys": "ADMINISTER_PROJECTS", + * "groupCustomFields": "customfield_10028", + * "allowUserCustomFields": "customfield_10072,customfield_10144,customfield_10007", + * "denyUserCustomFields": "customfield_10107" + * } + * } + * + * Parameters: + * + * * `accountIds` a comma-separated list of the user account IDs. It also allows generic values like: `allow-assignee`, `allow-reporter`, and `accountIds` Note: This is only supported in team-managed projects + * * `roleIds` a comma-separated list of role IDs. + * * `groupIds` a comma-separated list of group IDs. + * * `permissionKeys` a comma-separated list of permission keys. Allowed values: [built-in Jira permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions). + * * `groupCustomFields` a comma-separated list of group custom field IDs. + * * `allowUserCustomFields` a comma-separated list of user custom field IDs to allow for issue transition. + * * `denyUserCustomFields` a comma-separated list of user custom field IDs to deny for issue transition. + * + * This rule is composed by aggregating the following legacy rules: + * + * * AllowOnlyAssignee + * * AllowOnlyReporter + * * InAnyProjectRoleCondition + * * InProjectRoleCondition + * * UserInAnyGroupCondition + * * UserInGroupCondition + * * PermissionCondtion + * * InGroupCFCondition + * * UserIsInCustomFieldCondition + * + * ##### Previous status condition ##### + * + * A condition that evaluates based on an issue's previous status(es) and specific criteria. + * + * { + * "ruleKey" : "system:previous-status-condition" + * "parameters" : { + * "previousStatusIds" : "10004", + * "not": "true", + * "mostRecentStatusOnly" : "true", + * "includeCurrentStatus": "true", + * "ignoreLoopTransitions": "true" + * } + * } + * + * Parameters: + * + * * `previousStatusIds` a comma-separated list of status IDs, current only support one ID. + * * `not` indicates if the condition should be reversed. When `true` it checks that the issue has not been in the selected statuses. Allowed values: `true`, `false`. + * * `mostRecentStatusOnly` when true only considers the most recent status for the condition evaluation. Allowed values: `true`, `false`. + * * `includeCurrentStatus` includes the current status when evaluating if the issue has been through the selected statuses. Allowed values: `true`, `false`. + * * `ignoreLoopTransitions` ignore loop transitions. Allowed values: `true`, `false`. + * + * ##### Parent or child blocking condition ##### + * + * A condition to block the parent\\u2019s issue transition depending on the child\\u2019s issue status. + * + * { + * "ruleKey" : "system:parent-or-child-blocking-condition" + * "parameters" : { + * "blocker" : "CHILD", + * "statusIds" : "1,2,3" + * } + * } + * + * Parameters: + * + * * `blocker` currently only supports `CHILD`. + * * `statusIds` a comma-separated list of status IDs. + * + * ##### Separation of duties ##### + * + * A condition preventing the user from performing, if the user has already performed a transition on the issue. + * + * { + * "ruleKey": "system:separation-of-duties", + * "parameters": { + * "fromStatusId": "10161", + * "toStatusId": "10160" + * } + * } + * + * Parameters: + * + * * `fromStatusId` represents the status ID from which the issue is transitioning. It ensures that the user performing the current transition has not performed any actions when the issue was in the specified status. + * * `toStatusId` represents the status ID to which the issue is transitioning. It ensures that the user performing the current transition is not the same user who has previously transitioned the issue. + * + * ##### Restrict transitions ##### + * + * A condition preventing all users from transitioning the issue can also optionally include APIs as well. + * + * { + * "ruleKey": "system:restrict-from-all-users", + * "parameters": { + * "restrictMode": "users" + * } + * } + * + * Parameters: + * + * * `restrictMode` restricts the issue transition including/excluding APIs. Allowed values: `"users"`, `"usersAndAPI"`. + * + * ##### Jira Service Management block until approved ##### + * + * Block an issue transition until approval. Note: This is only supported in team-managed projects. + * + * { + * "ruleKey": "system:jsd-approvals-block-until-approved", + * "parameters": { + * "approvalConfigurationJson": "{"statusExternalUuid...}" + * } + * } + * + * Parameters: + * + * * `approvalConfigurationJson` a stringified JSON holding the Jira Service Management approval configuration. + * + * ##### Jira Service Management block until rejected ##### + * + * Block an issue transition until rejected. Note: This is only supported in team-managed projects. + * + * { + * "ruleKey": "system:jsd-approvals-block-until-rejected", + * "parameters": { + * "approvalConfigurationJson": "{"statusExternalUuid...}" + * } + * } + * + * Parameters: + * + * * `approvalConfigurationJson` a stringified JSON holding the Jira Service Management approval configuration. + * + * ##### Block in progress approval ##### + * + * Condition to block issue transition if there is pending approval. Note: This is only supported in company-managed projects. + * + * { + * "ruleKey": "system:block-in-progress-approval", + * "parameters": {} + * } + * + * #### Post functions #### + * + * Post functions carry out any additional processing required after a workflow transition is executed. + * + * ##### Change assignee ##### + * + * A post function rule that changes the assignee of an issue after a transition. + * + * { + * "ruleKey": "system:change-assignee", + * "parameters": { + * "type": "to-selected-user", + * "accountId": "example-account-id" + * } + * } + * + * Parameters: + * + * * `type` the parameter used to determine the new assignee. Allowed values: `to-selected-user`, `to-unassigned`, `to-current-user`, `to-current-user`, `to-default-user`, `to-default-user` + * * `accountId` the account ID of the user to assign the issue to. This parameter is required only when the type is `"to-selected-user"`. + * + * ##### Copy field value ##### + * + * A post function that automates the process of copying values between fields during a specific transition, ensuring data consistency and reducing manual effort. + * + * { + * "ruleKey": "system:copy-value-from-other-field", + * "parameters": { + * "sourceFieldKey": "description", + * "targetFieldKey": "components", + * "issueSource": "SAME" + * } + * } + * + * Parameters: + * + * * `sourceFieldKey` the field key to copy from. For a custom field, it would look like `customfield_123` + * * `targetFieldKey` the field key to copy to. For a custom field, it would look like `customfield_123` + * * `issueSource` `SAME` or `PARENT`. Defaults to `SAME` if no value is provided. + * + * ##### Update field ##### + * + * A post function that updates or appends a specific field with the given value. + * + * { + * "ruleKey": "system:update-field", + * "parameters": { + * "field": "customfield_10056", + * "value": "asdf", + * "mode": "append" + * } + * } + * + * Parameters: + * + * * `field` the ID of the field to update. For a custom field, it would look like `customfield_123` + * * `value` the value to update the field with. + * * `mode` `append` or `replace`. Determines if a value will be appended to the current value, or if the current value will be replaced. + * + * ##### Trigger webhook ##### + * + * A post function that automatically triggers a predefined webhook when a transition occurs in the workflow. + * + * { + * "ruleKey": "system:trigger-webhook", + * "parameters": { + * "webhookId": "1" + * } + * } + * + * Parameters: + * + * * `webhookId` the ID of the webhook. + * + * #### Screen #### + * + * ##### Remind people to update fields ##### + * + * A screen rule that prompts users to update a specific field when they interact with an issue screen during a transition. This rule is useful for ensuring that users provide or modify necessary information before moving an issue to the next step in the workflow. + * + * { + * "ruleKey": "system:remind-people-to-update-fields", + * "params": { + * "remindingFieldIds": "assignee,customfield_10025", + * "remindingMessage": "The message", + * "remindingAlwaysAsk": "true" + * } + * } + * + * Parameters: + * + * * `remindingFieldIds` a comma-separated list of field IDs. Note: `fieldId` is used interchangeably with the idea of `fieldKey` here, they refer to the same field. + * * `remindingMessage` the message to display when prompting the users to update the fields. + * * `remindingAlwaysAsk` always remind to update fields. Allowed values: `true`, `false`. + * + * ##### Shared transition screen ##### + * + * A common screen that is shared between transitions in a workflow. + * + * { + * "ruleKey": "system:transition-screen", + * "params": { + * "screenId": "3" + * } + * } + * + * Parameters: + * + * * `screenId` the ID of the screen. + * + * #### Connect & Forge #### + * + * ##### Connect rules ##### + * + * Validator/Condition/Post function for Connect app. + * + * { + * "ruleKey": "connect:expression-validator", + * "parameters": { + * "appKey": "com.atlassian.app", + * "config": "", + * "id": "90ce590f-e90c-4cd3-8281-165ce41f2ac3", + * "disabled": "false", + * "tag": "" + * } + * } + * + * Parameters: + * + * * `ruleKey` Validator: `connect:expression-validator`, Condition: `connect:expression-condition`, and Post function: `connect:remote-workflow-function` + * * `appKey` the reference to the Connect app + * * `config` a JSON payload string describing the configuration + * * `id` the ID of the rule + * * `disabled` determine if the Connect app is disabled. Allowed values: `true`, `false`. + * * `tag` additional tags for the Connect app + * + * ##### Forge rules ##### + * + * Validator/Condition/Post function for Forge app. + * + * { + * "ruleKey": "forge:expression-validator", + * "parameters": { + * "key": "ari:cloud:ecosystem::extension/{appId}/{environmentId}/static/{moduleKey}", + * "config": "{"searchString":"workflow validator"}", + * "id": "a865ddf6-bb3f-4a7b-9540-c2f8b3f9f6c2" + * } + * } + * + * Parameters: + * + * * `ruleKey` Validator: `forge:expression-validator`, Condition: `forge:expression-condition`, and Post function: `forge:workflow-post-function` + * * `key` the identifier for the Forge app + * * `config` the persistent stringified JSON configuration for the Forge rule + * * `id` the ID of the Forge rule + */ + get: operations["workflowCapabilities"]; + }; + "/rest/api/3/workflows/create": { + /** + * Bulk create workflows + * @description Create workflows and related statuses. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + post: operations["createWorkflows"]; + }; + "/rest/api/3/workflows/create/validation": { + /** + * Validate create workflows + * @description Validate the payload for bulk create workflows. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + post: operations["validateCreateWorkflows"]; + }; + "/rest/api/3/workflows/update": { + /** + * Bulk update workflows + * @description Update workflows and related statuses. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + post: operations["updateWorkflows"]; + }; + "/rest/api/3/workflows/update/validation": { + /** + * Validate update workflows + * @description Validate the payload for bulk update workflows. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + post: operations["validateUpdateWorkflows"]; + }; + "/rest/api/3/workflowscheme": { + /** + * Get all workflow schemes + * @description Returns a [paginated](#pagination) list of all workflow schemes, not including draft workflow schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllWorkflowSchemes"]; + /** + * Create workflow scheme + * @description Creates a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createWorkflowScheme"]; + }; + "/rest/api/3/workflowscheme/project": { + /** + * Get workflow scheme project associations + * @description Returns a list of the workflow schemes associated with a list of projects. Each returned workflow scheme includes a list of the requested projects associated with it. Any team-managed or non-existent projects in the request are ignored and no errors are returned. + * + * If the project is associated with the `Default Workflow Scheme` no ID is returned. This is because the way the `Default Workflow Scheme` is stored means it has no ID. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowSchemeProjectAssociations"]; + /** + * Assign workflow scheme to project + * @description Assigns a workflow scheme to a project. This operation is performed only when there are no issues in the project. + * + * Workflow schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["assignSchemeToProject"]; + }; + "/rest/api/3/workflowscheme/read": { + /** + * Bulk get workflow schemes + * @description Returns a list of workflow schemes by providing workflow scheme IDs or project IDs. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* global permission to access all, including project-scoped, workflow schemes + * * *Administer projects* project permissions to access project-scoped workflow schemes + */ + post: operations["readWorkflowSchemes"]; + }; + "/rest/api/3/workflowscheme/update": { + /** + * Update workflow scheme + * @description Updates company-managed and team-managed project workflow schemes. This API doesn't have a concept of draft, so any changes made to a workflow scheme are immediately available. When changing the available statuses for issue types, an [asynchronous task](#async) migrates the issues as defined in the provided mappings. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to update all, including global-scoped, workflow schemes. + * * *Administer projects* project permission to update project-scoped workflow schemes. + */ + post: operations["updateSchemes"]; + }; + "/rest/api/3/workflowscheme/update/mappings": { + /** + * Get required status mappings for workflow scheme update + * @description Gets the required status mappings for the desired changes to a workflow scheme. The results are provided per issue type and workflow. When updating a workflow scheme, status mappings can be provided per issue type, per workflow, or both. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* permission to update all, including global-scoped, workflow schemes. + * * *Administer projects* project permission to update project-scoped workflow schemes. + */ + post: operations["updateWorkflowSchemeMappings"]; + }; + "/rest/api/3/workflowscheme/{id}": { + /** + * Get workflow scheme + * @description Returns a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowScheme"]; + /** + * Classic update workflow scheme + * @description Updates a company-manged project workflow scheme, including the name, default workflow, issue type to project mappings, and more. If the workflow scheme is active (that is, being used by at least one project), then a draft workflow scheme is created or updated instead, provided that `updateDraftIfNeeded` is set to `true`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateWorkflowScheme"]; + /** + * Delete workflow scheme + * @description Deletes a workflow scheme. Note that a workflow scheme cannot be deleted if it is active (that is, being used by at least one project). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteWorkflowScheme"]; + }; + "/rest/api/3/workflowscheme/{id}/createdraft": { + /** + * Create draft workflow scheme + * @description Create a draft workflow scheme from an active workflow scheme, by copying the active workflow scheme. Note that an active workflow scheme can only have one draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createWorkflowSchemeDraftFromParent"]; + }; + "/rest/api/3/workflowscheme/{id}/default": { + /** + * Get default workflow + * @description Returns the default workflow for a workflow scheme. The default workflow is the workflow that is assigned any issue types that have not been mapped to any other workflow. The default workflow has *All Unassigned Issue Types* listed in its issue types for the workflow scheme in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getDefaultWorkflow"]; + /** + * Update default workflow + * @description Sets the default workflow for a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` in the request object and a draft workflow scheme is created or updated with the new default workflow. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateDefaultWorkflow"]; + /** + * Delete default workflow + * @description Resets the default workflow for a workflow scheme. That is, the default workflow is set to Jira's system workflow (the *jira* workflow). + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` and a draft workflow scheme is created or updated with the default workflow reset. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteDefaultWorkflow"]; + }; + "/rest/api/3/workflowscheme/{id}/draft": { + /** + * Get draft workflow scheme + * @description Returns the draft workflow scheme for an active workflow scheme. Draft workflow schemes allow changes to be made to the active workflow schemes: When an active workflow scheme is updated, a draft copy is created. The draft is modified, then the changes in the draft are copied back to the active workflow scheme. See [Configuring workflow schemes](https://confluence.atlassian.com/x/tohKLg) for more information. + * Note that: + * + * * Only active workflow schemes can have draft workflow schemes. + * * An active workflow scheme can only have one draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowSchemeDraft"]; + /** + * Update draft workflow scheme + * @description Updates a draft workflow scheme. If a draft workflow scheme does not exist for the active workflow scheme, then a draft is created. Note that an active workflow scheme can only have one draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateWorkflowSchemeDraft"]; + /** + * Delete draft workflow scheme + * @description Deletes a draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteWorkflowSchemeDraft"]; + }; + "/rest/api/3/workflowscheme/{id}/draft/default": { + /** + * Get draft default workflow + * @description Returns the default workflow for a workflow scheme's draft. The default workflow is the workflow that is assigned any issue types that have not been mapped to any other workflow. The default workflow has *All Unassigned Issue Types* listed in its issue types for the workflow scheme in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getDraftDefaultWorkflow"]; + /** + * Update draft default workflow + * @description Sets the default workflow for a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateDraftDefaultWorkflow"]; + /** + * Delete draft default workflow + * @description Resets the default workflow for a workflow scheme's draft. That is, the default workflow is set to Jira's system workflow (the *jira* workflow). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteDraftDefaultWorkflow"]; + }; + "/rest/api/3/workflowscheme/{id}/draft/issuetype/{issueType}": { + /** + * Get workflow for issue type in draft workflow scheme + * @description Returns the issue type-workflow mapping for an issue type in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowSchemeDraftIssueType"]; + /** + * Set workflow for issue type in draft workflow scheme + * @description Sets the workflow for an issue type in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setWorkflowSchemeDraftIssueType"]; + /** + * Delete workflow for issue type in draft workflow scheme + * @description Deletes the issue type-workflow mapping for an issue type in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteWorkflowSchemeDraftIssueType"]; + }; + "/rest/api/3/workflowscheme/{id}/draft/publish": { + /** + * Publish draft workflow scheme + * @description Publishes a draft workflow scheme. + * + * Where the draft workflow includes new workflow statuses for an issue type, mappings are provided to update issues with the original workflow status to the new workflow status. + * + * This operation is [asynchronous](#async). 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 updates. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["publishDraftWorkflowScheme"]; + }; + "/rest/api/3/workflowscheme/{id}/draft/workflow": { + /** + * Get issue types for workflows in draft workflow scheme + * @description Returns the workflow-issue type mappings for a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getDraftWorkflow"]; + /** + * Set issue types for workflow in workflow scheme + * @description Sets the issue types for a workflow in a workflow scheme's draft. The workflow can also be set as the default workflow for the draft workflow scheme. Unmapped issues types are mapped to the default workflow. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateDraftWorkflowMapping"]; + /** + * Delete issue types for workflow in draft workflow scheme + * @description Deletes the workflow-issue type mapping for a workflow in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteDraftWorkflowMapping"]; + }; + "/rest/api/3/workflowscheme/{id}/issuetype/{issueType}": { + /** + * Get workflow for issue type in workflow scheme + * @description Returns the issue type-workflow mapping for an issue type in a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowSchemeIssueType"]; + /** + * Set workflow for issue type in workflow scheme + * @description Sets the workflow for an issue type in a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` in the request body and a draft workflow scheme is created or updated with the new issue type-workflow mapping. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setWorkflowSchemeIssueType"]; + /** + * Delete workflow for issue type in workflow scheme + * @description Deletes the issue type-workflow mapping for an issue type in a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` and a draft workflow scheme is created or updated with the issue type-workflow mapping deleted. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteWorkflowSchemeIssueType"]; + }; + "/rest/api/3/workflowscheme/{id}/workflow": { + /** + * Get issue types for workflows in workflow scheme + * @description Returns the workflow-issue type mappings for a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflow"]; + /** + * Set issue types for workflow in workflow scheme + * @description Sets the issue types for a workflow in a workflow scheme. The workflow can also be set as the default workflow for the workflow scheme. Unmapped issues types are mapped to the default workflow. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` in the request body and a draft workflow scheme is created or updated with the new workflow-issue types mappings. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateWorkflowMapping"]; + /** + * Delete issue types for workflow in workflow scheme + * @description Deletes the workflow-issue type mapping for a workflow in a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` and a draft workflow scheme is created or updated with the workflow-issue type mapping deleted. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteWorkflowMapping"]; + }; + "/rest/api/3/worklog/deleted": { + /** + * Get IDs of deleted worklogs + * @description Returns a list of IDs and delete timestamps for worklogs deleted after a date and time. + * + * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set to true on the last page of worklogs. + * + * This resource does not return worklogs deleted during the minute preceding the request. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getIdsOfWorklogsDeletedSince"]; + }; + "/rest/api/3/worklog/list": { + /** + * Get worklogs + * @description Returns worklog details for a list of worklog IDs. + * + * The returned list of worklogs is limited to 1000 items. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, worklogs are only returned where either of the following is true: + * + * * the worklog is set as *Viewable by All Users*. + * * the user is a member of a project role or group with permission to view the worklog. + */ + post: operations["getWorklogsForIds"]; + }; + "/rest/api/3/worklog/updated": { + /** + * Get IDs of updated worklogs + * @description Returns a list of IDs and update timestamps for worklogs updated after a date and time. + * + * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set to true on the last page of worklogs. + * + * This resource does not return worklogs updated during the minute preceding the request. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, worklogs are only returned where either of the following is true: + * + * * the worklog is set as *Viewable by All Users*. + * * the user is a member of a project role or group with permission to view the worklog. + */ + get: operations["getIdsOfWorklogsModifiedSince"]; + }; + "/rest/atlassian-connect/1/addons/{addonKey}/properties": { + /** + * Get app properties + * @description Gets all the properties of an app. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + * Additionally, Forge apps published on the Marketplace can access properties of Connect apps they were [migrated from](https://developer.atlassian.com/platform/forge/build-a-connect-on-forge-app/). + */ + get: operations["AddonPropertiesResource.getAddonProperties_get"]; + }; + "/rest/atlassian-connect/1/addons/{addonKey}/properties/{propertyKey}": { + /** + * Get app property + * @description Returns the key and value of an app's property. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + * Additionally, Forge apps published on the Marketplace can access properties of Connect apps they were [migrated from](https://developer.atlassian.com/platform/forge/build-a-connect-on-forge-app/). + */ + get: operations["AddonPropertiesResource.getAddonProperty_get"]; + /** + * Set app property + * @description Sets the value of an app's property. Use this resource to store custom data for your app. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + */ + put: operations["AddonPropertiesResource.putAddonProperty_put"]; + /** + * Delete app property + * @description Deletes an app's property. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + */ + delete: operations["AddonPropertiesResource.deleteAddonProperty_delete"]; + }; + "/rest/atlassian-connect/1/app/module/dynamic": { + /** + * Get modules + * @description Returns all modules registered dynamically by the calling app. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request. + */ + get: operations["DynamicModulesResource.getModules_get"]; + /** + * Register modules + * @description Registers a list of modules. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request. + */ + post: operations["DynamicModulesResource.registerModules_post"]; + /** + * Remove modules + * @description Remove all or a list of modules registered by the calling app. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request. + */ + delete: operations["DynamicModulesResource.removeModules_delete"]; + }; + "/rest/atlassian-connect/1/migration/field": { + /** + * Bulk update custom field value + * @description Updates the value of a custom field added by Connect apps on one or more issues. + * The values of up to 200 custom fields can be updated. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request + */ + put: operations["AppIssueFieldValueUpdateResource.updateIssueFields_put"]; + }; + "/rest/atlassian-connect/1/migration/properties/{entityType}": { + /** + * Bulk update entity properties + * @description Updates the values of multiple entity properties for an object, up to 50 updates per request. This operation is for use by Connect apps during app migration. + */ + put: operations["MigrationResource.updateEntityPropertiesValue_put"]; + }; + "/rest/atlassian-connect/1/migration/workflow/rule/search": { + /** + * Get workflow transition rule configurations + * @description Returns configurations for workflow transition rules migrated from server to cloud and owned by the calling Connect app. + */ + post: operations["MigrationResource.workflowRuleSearch_post"]; + }; + "/rest/atlassian-connect/1/service-registry": { + /** + * Retrieve the attributes of service registries + * @description Retrieve the attributes of given service registries. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request and the servicesIds belong to the tenant you are requesting + */ + get: operations["ServiceRegistryResource.services_get"]; + }; + "/rest/forge/1/app/properties/{propertyKey}": { + /** + * Set app property (Forge) + * @description Sets the value of a Forge app's property. + * These values can be retrieved in [Jira expressions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) + * through the `app` [context variable](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#context-variables). + * + * For other use cases, use the [Storage API](https://developer.atlassian.com/platform/forge/runtime-reference/storage-api/). + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** Only Forge apps can make this request. + */ + put: operations["AddonPropertiesResource.putAppProperty_put"]; + /** + * Delete app property (Forge) + * @description Deletes a Forge app's property. + * + * **[Permissions](#permissions) required:** Only Forge apps can make this request. + */ + delete: operations["AddonPropertiesResource.deleteAppProperty_delete"]; + }; +} +export type webhooks = Record; +export interface components { + schemas: { + ActorInputBean: { + /** @description The name of the group to add as a default actor. This parameter cannot be used with the `groupId` parameter. As a group's name can change,use of `groupId` is recommended. This parameter accepts a comma-separated list. For example, `"group":["project-admin", "jira-developers"]`. */ + group?: string[]; + /** @description The ID of the group to add as a default actor. This parameter cannot be used with the `group` parameter This parameter accepts a comma-separated list. For example, `"groupId":["77f6ab39-e755-4570-a6ae-2d7a8df0bcb8", "0c011f85-69ed-49c4-a801-3b18d0f771bc"]`. */ + groupId?: string[]; + /** @description The account IDs of the users to add as default actors. This parameter accepts a comma-separated list. For example, `"user":["5b10a2844c20165700ede21g", "5b109f2e9729b51b54dc274d"]`. */ + user?: string[]; + }; + ActorsMap: { + /** @description The name of the group to add. This parameter cannot be used with the `groupId` parameter. As a group's name can change, use of `groupId` is recommended. */ + group?: string[]; + /** @description The ID of the group to add. This parameter cannot be used with the `group` parameter. */ + groupId?: string[]; + /** @description The user account ID of the user to add. */ + user?: string[]; + }; + AddFieldBean: { + /** @description The ID of the field to add. */ + fieldId: string; + }; + AddGroupBean: { + /** @description The name of the group. */ + name: string; + [key: string]: unknown; + }; + /** @description Details of notifications which should be added to the notification scheme. */ + AddNotificationsDetails: { + /** @description The list of notifications which should be added to the notification scheme. */ + notificationSchemeEvents: components["schemas"]["NotificationSchemeEventDetails"][]; + [key: string]: unknown; + }; + AddSecuritySchemeLevelsRequestBean: { + /** @description The list of scheme levels which should be added to the security scheme. */ + levels?: components["schemas"]["SecuritySchemeLevelBean"][]; + }; + /** @description Announcement banner configuration. */ + AnnouncementBannerConfiguration: { + /** @description Hash of the banner data. The client detects updates by comparing hash IDs. */ + hashId?: string; + /** @description Flag indicating if the announcement banner can be dismissed by the user. */ + isDismissible?: boolean; + /** @description Flag indicating if the announcement banner is enabled or not. */ + isEnabled?: boolean; + /** @description The text on the announcement banner. */ + message?: string; + /** + * @description Visibility of the announcement banner. + * @enum {string} + */ + visibility?: "PUBLIC" | "PRIVATE"; + }; + /** @description Configuration of the announcement banner. */ + AnnouncementBannerConfigurationUpdate: { + /** @description Flag indicating if the announcement banner can be dismissed by the user. */ + isDismissible?: boolean; + /** @description Flag indicating if the announcement banner is enabled or not. */ + isEnabled?: boolean; + /** @description The text on the announcement banner. */ + message?: string; + /** @description Visibility of the announcement banner. Can be public or private. */ + visibility?: string; + }; + /** @description A workflow transition rule. */ + AppWorkflowTransitionRule: { + configuration: components["schemas"]["RuleConfiguration"]; + /** @description The ID of the transition rule. */ + id: string; + /** @description The key of the rule, as defined in the Connect or the Forge app descriptor. */ + key: string; + transition?: components["schemas"]["WorkflowTransition"]; + }; + /** @description The application the linked item is in. */ + Application: { + /** @description The name of the application. Used in conjunction with the (remote) object icon title to display a tooltip for the link's icon. The tooltip takes the format "\[application name\] icon title". Blank items are excluded from the tooltip title. If both items are blank, the icon tooltop displays as "Web Link". Grouping and sorting of links may place links without an application name last. */ + name?: string; + /** @description The name-spaced type of the application, used by registered rendering apps. */ + type?: string; + [key: string]: unknown; + }; + /** @description Details of an application property. */ + ApplicationProperty: { + /** @description The allowed values, if applicable. */ + allowedValues?: string[]; + /** @description The default value of the application property. */ + defaultValue?: string; + /** @description The description of the application property. */ + desc?: string; + example?: string; + /** @description The ID of the application property. The ID and key are the same. */ + id?: string; + /** @description The key of the application property. The ID and key are the same. */ + key?: string; + /** @description The name of the application property. */ + name?: string; + /** @description The data type of the application property. */ + type?: string; + /** @description The new value. */ + value?: string; + }; + /** @description Details of an application role. */ + ApplicationRole: { + /** @description The groups that are granted default access for this application role. As a group's name can change, use of `defaultGroupsDetails` is recommended to identify a groups. */ + defaultGroups?: string[]; + /** @description The groups that are granted default access for this application role. */ + defaultGroupsDetails?: components["schemas"]["GroupName"][]; + /** @description Deprecated. */ + defined?: boolean; + /** @description The groups associated with the application role. */ + groupDetails?: components["schemas"]["GroupName"][]; + /** @description The groups associated with the application role. As a group's name can change, use of `groupDetails` is recommended to identify a groups. */ + groups?: string[]; + hasUnlimitedSeats?: boolean; + /** @description The key of the application role. */ + key?: string; + /** @description The display name of the application role. */ + name?: string; + /** + * Format: int32 + * @description The maximum count of users on your license. + */ + numberOfSeats?: number; + /** @description Indicates if the application role belongs to Jira platform (`jira-core`). */ + platform?: boolean; + /** + * Format: int32 + * @description The count of users remaining on your license. + */ + remainingSeats?: number; + /** @description Determines whether this application role should be selected by default on user creation. */ + selectedByDefault?: boolean; + /** + * Format: int32 + * @description The number of users counting against your license. + */ + userCount?: number; + /** @description The [type of users](https://confluence.atlassian.com/x/lRW3Ng) being counted against your license. */ + userCountDescription?: string; + }; + ArchiveIssueAsyncRequest: { + jql?: string; + }; + /** @description Details of a filter for exporting archived issues. */ + ArchivedIssuesFilterRequest: { + /** @description List archived issues archived by a specified account ID. */ + archivedBy?: string[]; + archivedDateRange?: components["schemas"]["DateRangeFilterRequest"]; + /** @description List archived issues with a specified issue type ID. */ + issueTypes?: string[]; + /** @description List archived issues with a specified project key. */ + projects?: string[]; + /** @description List archived issues where the reporter is a specified account ID. */ + reporters?: string[]; + [key: string]: unknown; + }; + /** @description Details of a field configuration to issue type mappings. */ + AssociateFieldConfigurationsWithIssueTypesRequest: { + /** @description Field configuration to issue type mappings. */ + mappings: components["schemas"]["FieldConfigurationToIssueTypeMapping"][]; + }; + /** @description Issue security scheme, project, and remapping details. */ + AssociateSecuritySchemeWithProjectDetails: { + /** @description The list of scheme levels which should be remapped to new levels of the issue security scheme. */ + oldToNewSecurityLevelMappings?: components["schemas"]["OldToNewSecurityLevelMappingsBean"][]; + /** @description The ID of the project. */ + projectId: string; + /** @description The ID of the issue security scheme. Providing null will clear the association with the issue security scheme. */ + schemeId: string; + }; + /** @description Details of an item associated with the changed record. */ + AssociatedItemBean: { + /** @description The ID of the associated record. */ + id?: string; + /** @description The name of the associated record. */ + name?: string; + /** @description The ID of the associated parent record. */ + parentId?: string; + /** @description The name of the associated parent record. */ + parentName?: string; + /** @description The type of the associated record. */ + typeName?: string; + }; + /** @description Details about an attachment. */ + Attachment: { + /** @description Details of the user who added the attachment. */ + author?: components["schemas"]["UserDetails"]; + /** @description The content of the attachment. */ + content?: string; + /** + * Format: date-time + * @description The datetime the attachment was created. + */ + created?: string; + /** @description The file name of the attachment. */ + filename?: string; + /** @description The ID of the attachment. */ + id?: string; + /** @description The MIME type of the attachment. */ + mimeType?: string; + /** @description The URL of the attachment details response. */ + self?: string; + /** + * Format: int64 + * @description The size of the attachment. + */ + size?: number; + /** @description The URL of a thumbnail representing the attachment. */ + thumbnail?: string; + [key: string]: unknown; + }; + AttachmentArchive: { + entries?: components["schemas"]["AttachmentArchiveEntry"][]; + moreAvailable?: boolean; + /** Format: int32 */ + totalEntryCount?: number; + /** Format: int32 */ + totalNumberOfEntriesAvailable?: number; + }; + AttachmentArchiveEntry: { + abbreviatedName?: string; + /** Format: int64 */ + entryIndex?: number; + mediaType?: string; + name?: string; + /** Format: int64 */ + size?: number; + }; + AttachmentArchiveImpl: { + /** @description The list of the items included in the archive. */ + entries?: components["schemas"]["AttachmentArchiveEntry"][]; + /** + * Format: int32 + * @description The number of items in the archive. + */ + totalEntryCount?: number; + }; + /** @description Metadata for an item in an attachment archive. */ + AttachmentArchiveItemReadable: { + /** + * Format: int64 + * @description The position of the item within the archive. + */ + index?: number; + /** @description The label for the archive item. */ + label?: string; + /** @description The MIME type of the archive item. */ + mediaType?: string; + /** @description The path of the archive item. */ + path?: string; + /** @description The size of the archive item. */ + size?: string; + }; + /** @description Metadata for an archive (for example a zip) and its contents. */ + AttachmentArchiveMetadataReadable: { + /** @description The list of the items included in the archive. */ + entries?: readonly components["schemas"]["AttachmentArchiveItemReadable"][]; + /** + * Format: int64 + * @description The ID of the attachment. + */ + id?: number; + /** @description The MIME type of the attachment. */ + mediaType?: string; + /** @description The name of the archive file. */ + name?: string; + /** + * Format: int64 + * @description The number of items included in the archive. + */ + totalEntryCount?: number; + }; + /** @description Metadata for an issue attachment. */ + AttachmentMetadata: { + /** @description Details of the user who attached the file. */ + author?: components["schemas"]["User"]; + /** @description The URL of the attachment. */ + content?: string; + /** + * Format: date-time + * @description The datetime the attachment was created. + */ + created?: string; + /** @description The name of the attachment file. */ + filename?: string; + /** + * Format: int64 + * @description The ID of the attachment. + */ + id?: number; + /** @description The MIME type of the attachment. */ + mimeType?: string; + /** @description Additional properties of the attachment. */ + properties?: { + [key: string]: unknown; + }; + /** + * Format: uri + * @description The URL of the attachment metadata details. + */ + self?: string; + /** + * Format: int64 + * @description The size of the attachment. + */ + size?: number; + /** @description The URL of a thumbnail representing the attachment. */ + thumbnail?: string; + }; + /** @description Details of the instance's attachment settings. */ + AttachmentSettings: { + /** @description Whether the ability to add attachments is enabled. */ + enabled?: boolean; + /** + * Format: int64 + * @description The maximum size of attachments permitted, in bytes. + */ + uploadLimit?: number; + }; + /** @description An audit record. */ + AuditRecordBean: { + /** @description The list of items associated with the changed record. */ + associatedItems?: readonly components["schemas"]["AssociatedItemBean"][]; + /** @description Deprecated, use `authorAccountId` instead. The key of the user who created the audit record. */ + authorKey?: string; + /** @description The category of the audit record. For a list of these categories, see the help article [Auditing in Jira applications](https://confluence.atlassian.com/x/noXKM). */ + category?: string; + /** @description The list of values changed in the record event. */ + changedValues?: readonly components["schemas"]["ChangedValueBean"][]; + /** + * Format: date-time + * @description The date and time on which the audit record was created. + */ + created?: string; + /** @description The description of the audit record. */ + description?: string; + /** @description The event the audit record originated from. */ + eventSource?: string; + /** + * Format: int64 + * @description The ID of the audit record. + */ + id?: number; + objectItem?: components["schemas"]["AssociatedItemBean"]; + /** @description The URL of the computer where the creation of the audit record was initiated. */ + remoteAddress?: string; + /** @description The summary of the audit record. */ + summary?: string; + }; + /** @description Container for a list of audit records. */ + AuditRecords: { + /** + * Format: int32 + * @description The requested or default limit on the number of audit items to be returned. + */ + limit?: number; + /** + * Format: int32 + * @description The number of audit items skipped before the first item in this list. + */ + offset?: number; + /** @description The list of audit items. */ + records?: readonly components["schemas"]["AuditRecordBean"][]; + /** + * Format: int64 + * @description The total number of audit items returned. + */ + total?: number; + }; + /** @description A field auto-complete suggestion. */ + AutoCompleteSuggestion: { + /** @description The display name of a suggested item. If `fieldValue` or `predicateValue` are provided, the matching text is highlighted with the HTML bold tag. */ + displayName?: string; + /** @description The value of a suggested item. */ + value?: string; + }; + /** @description The results from a JQL query. */ + AutoCompleteSuggestions: { + /** @description The list of suggested item. */ + results?: components["schemas"]["AutoCompleteSuggestion"][]; + }; + /** @description The details of the available dashboard gadget. */ + AvailableDashboardGadget: { + /** @description The module key of the gadget type. */ + moduleKey?: string; + /** @description The title of the gadget. */ + title: string; + /** @description The URI of the gadget type. */ + uri?: string; + }; + /** @description The list of available gadgets. */ + AvailableDashboardGadgetsResponse: { + /** @description The list of available gadgets. */ + gadgets: readonly components["schemas"]["AvailableDashboardGadget"][]; + }; + /** @description The Connect provided ecosystem rules available. */ + AvailableWorkflowConnectRule: { + /** @description The add-on providing the rule. */ + addonKey?: string; + /** @description The URL creation path segment defined in the Connect module. */ + createUrl?: string; + /** @description The rule description. */ + description?: string; + /** @description The URL edit path segment defined in the Connect module. */ + editUrl?: string; + /** @description The module providing the rule. */ + moduleKey?: string; + /** @description The rule name. */ + name?: string; + /** @description The rule key. */ + ruleKey?: string; + /** + * @description The rule type. + * @enum {string} + */ + ruleType?: "Condition" | "Validator" | "Function" | "Screen"; + /** @description The URL view path segment defined in the Connect module. */ + viewUrl?: string; + }; + /** @description The Forge provided ecosystem rules available. */ + AvailableWorkflowForgeRule: { + /** @description The rule description. */ + description?: string; + /** @description The unique ARI of the forge rule type. */ + id?: string; + /** @description The rule name. */ + name?: string; + /** @description The rule key. */ + ruleKey?: string; + /** + * @description The rule type. + * @enum {string} + */ + ruleType?: "Condition" | "Validator" | "Function" | "Screen"; + }; + /** @description The Atlassian provided system rules available. */ + AvailableWorkflowSystemRule: { + /** @description The rule description. */ + description: string; + /** @description List of rules that conflict with this one. */ + incompatibleRuleKeys: string[]; + /** @description Whether the rule can be added added to an initial transition. */ + isAvailableForInitialTransition: boolean; + /** @description Whether the rule is visible. */ + isVisible: boolean; + /** @description The rule name. */ + name: string; + /** @description The rule key. */ + ruleKey: string; + /** + * @description The rule type. + * @enum {string} + */ + ruleType: "Condition" | "Validator" | "Function" | "Screen"; + }; + /** @description The list of available trigger types. */ + AvailableWorkflowTriggerTypes: { + /** @description The description of the trigger rule. */ + description?: string; + /** @description The name of the trigger rule. */ + name?: string; + /** @description The type identifier of trigger rule. */ + type?: string; + }; + /** @description The trigger rules available. */ + AvailableWorkflowTriggers: { + /** @description The list of available trigger types. */ + availableTypes: components["schemas"]["AvailableWorkflowTriggerTypes"][]; + /** @description The rule key of the rule. */ + ruleKey: string; + }; + /** @description Details of an avatar. */ + Avatar: { + /** @description The file name of the avatar icon. Returned for system avatars. */ + fileName?: string; + /** @description The ID of the avatar. */ + id: string; + /** @description Whether the avatar can be deleted. */ + isDeletable?: boolean; + /** @description Whether the avatar is used in Jira. For example, shown as a project's avatar. */ + isSelected?: boolean; + /** @description Whether the avatar is a system avatar. */ + isSystemAvatar?: boolean; + /** @description The owner of the avatar. For a system avatar the owner is null (and nothing is returned). For non-system avatars this is the appropriate identifier, such as the ID for a project or the account ID for a user. */ + owner?: string; + /** @description The list of avatar icon URLs. */ + urls?: { + [key: string]: string; + }; + [key: string]: unknown; + }; + AvatarUrlsBean: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + /** @description Details about system and custom avatars. */ + Avatars: { + /** @description Custom avatars list. */ + custom?: readonly components["schemas"]["Avatar"][]; + /** @description System avatars list. */ + system?: readonly components["schemas"]["Avatar"][]; + }; + /** @description Details for changing owners of shareable entities */ + BulkChangeOwnerDetails: { + /** @description Whether the name is fixed automatically if it's duplicated after changing owner. */ + autofixName: boolean; + /** @description The account id of the new owner. */ + newOwner: string; + }; + /** @description Details of the options to create for a custom field. */ + BulkCustomFieldOptionCreateRequest: { + /** @description Details of options to create. */ + options?: components["schemas"]["CustomFieldOptionCreate"][]; + }; + /** @description Details of the options to update for a custom field. */ + BulkCustomFieldOptionUpdateRequest: { + /** @description Details of the options to update. */ + options?: components["schemas"]["CustomFieldOptionUpdate"][]; + }; + /** @description Errors of bulk edit action. */ + BulkEditActionError: { + /** @description The error messages. */ + errorMessages: string[]; + /** @description The errors. */ + errors: { + [key: string]: string; + }; + }; + /** @description Details of a request to bulk edit shareable entity. */ + BulkEditShareableEntityRequest: { + /** + * @description Allowed action for bulk edit shareable entity + * @enum {string} + */ + action: "changeOwner" | "changePermission" | "addPermission" | "removePermission"; + /** @description The details of change owner action. */ + changeOwnerDetails?: components["schemas"]["BulkChangeOwnerDetails"]; + /** @description The id list of shareable entities to be changed. */ + entityIds: number[]; + /** @description Whether the actions are executed by users with Administer Jira global permission. */ + extendAdminPermissions?: boolean; + /** @description The permission details to be changed. */ + permissionDetails?: components["schemas"]["PermissionDetails"]; + }; + /** @description Details of a request to bulk edit shareable entity. */ + BulkEditShareableEntityResponse: { + /** + * @description Allowed action for bulk edit shareable entity + * @enum {string} + */ + action: "changeOwner" | "changePermission" | "addPermission" | "removePermission"; + /** @description The mapping dashboard id to errors if any. */ + entityErrors?: { + [key: string]: components["schemas"]["BulkEditActionError"]; + }; + }; + /** @description A container for the watch status of a list of issues. */ + BulkIssueIsWatching: { + /** @description The map of issue ID to boolean watch status. */ + issuesIsWatching?: { + [key: string]: boolean; + }; + }; + /** @description Bulk issue property update request details. */ + BulkIssuePropertyUpdateRequest: { + /** @description EXPERIMENTAL. The Jira expression to calculate the value of the property. The value of the expression must be an object that can be converted to JSON, such as a number, boolean, string, list, or map. The context variables available to the expression are `issue` and `user`. Issues for which the expression returns a value whose JSON representation is longer than 32768 characters are ignored. */ + expression?: string; + /** @description The bulk operation filter. */ + filter?: components["schemas"]["IssueFilterForBulkPropertySet"]; + /** @description The value of the property. The value must be a [valid](https://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. */ + value?: unknown; + }; + BulkOperationErrorResult: { + elementErrors?: components["schemas"]["ErrorCollection"]; + /** Format: int32 */ + failedElementNumber?: number; + /** Format: int32 */ + status?: number; + }; + /** @description Details of global and project permissions granted to the user. */ + BulkPermissionGrants: { + /** @description List of permissions granted to the user. */ + globalPermissions: string[]; + /** @description List of project permissions and the projects and issues those permissions provide access to. */ + projectPermissions: components["schemas"]["BulkProjectPermissionGrants"][]; + }; + /** @description Details of global permissions to look up and project permissions with associated projects and issues to look up. */ + BulkPermissionsRequestBean: { + /** @description The account ID of a user. */ + accountId?: string; + /** @description Global permissions to look up. */ + globalPermissions?: string[]; + /** @description Project permissions with associated projects and issues to look up. */ + projectPermissions?: components["schemas"]["BulkProjectPermissions"][]; + }; + /** @description List of project permissions and the projects and issues those permissions grant access to. */ + BulkProjectPermissionGrants: { + /** @description IDs of the issues the user has the permission for. */ + issues: number[]; + /** @description A project permission, */ + permission: string; + /** @description IDs of the projects the user has the permission for. */ + projects: number[]; + }; + /** @description Details of project permissions and associated issues and projects to look up. */ + BulkProjectPermissions: { + /** @description List of issue IDs. */ + issues?: number[]; + /** @description List of project permissions. */ + permissions: string[]; + /** @description List of project IDs. */ + projects?: number[]; + }; + /** @description A change item. */ + ChangeDetails: { + /** @description The name of the field changed. */ + field?: string; + /** @description The ID of the field changed. */ + fieldId?: string; + /** @description The type of the field changed. */ + fieldtype?: string; + /** @description The details of the original value. */ + from?: string; + /** @description The details of the original value as a string. */ + fromString?: string; + /** @description The details of the new value. */ + to?: string; + /** @description The details of the new value as a string. */ + toString?: string; + }; + /** @description The account ID of the new owner. */ + ChangeFilterOwner: { + /** @description The account ID of the new owner. */ + accountId: string; + }; + /** @description Details of names changed in the record event. */ + ChangedValueBean: { + /** @description The value of the field before the change. */ + changedFrom?: string; + /** @description The value of the field after the change. */ + changedTo?: string; + /** @description The name of the field changed. */ + fieldName?: string; + }; + /** @description Details of a changed worklog. */ + ChangedWorklog: { + /** @description Details of properties associated with the change. */ + properties?: readonly components["schemas"]["EntityProperty"][]; + /** + * Format: int64 + * @description The datetime of the change. + */ + updatedTime?: number; + /** + * Format: int64 + * @description The ID of the worklog. + */ + worklogId?: number; + }; + /** @description List of changed worklogs. */ + ChangedWorklogs: { + lastPage?: boolean; + /** + * Format: uri + * @description The URL of the next list of changed worklogs. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of this changed worklogs list. + */ + self?: string; + /** + * Format: int64 + * @description The datetime of the first worklog item in the list. + */ + since?: number; + /** + * Format: int64 + * @description The datetime of the last worklog item in the list. + */ + until?: number; + /** @description Changed worklog list. */ + values?: readonly components["schemas"]["ChangedWorklog"][]; + }; + /** @description A log of changes made to issue fields. Changelogs related to workflow associations are currently being deprecated. */ + Changelog: { + /** @description The user who made the change. */ + author?: components["schemas"]["UserDetails"]; + /** + * Format: date-time + * @description The date on which the change took place. + */ + created?: string; + /** @description The history metadata associated with the changed. */ + historyMetadata?: components["schemas"]["HistoryMetadata"]; + /** @description The ID of the changelog. */ + id?: string; + /** @description The list of items changed. */ + items?: readonly components["schemas"]["ChangeDetails"][]; + }; + /** @description Details of an issue navigator column item. */ + ColumnItem: { + /** @description The issue navigator column label. */ + label?: string; + /** @description The issue navigator column value. */ + value?: string; + }; + ColumnRequestBody: { + columns?: string[]; + }; + /** @description A comment. */ + Comment: { + /** @description The ID of the user who created the comment. */ + author?: components["schemas"]["UserDetails"]; + /** @description The comment text in [Atlassian Document Format](https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/). */ + body?: unknown; + /** + * Format: date-time + * @description The date and time at which the comment was created. + */ + created?: string; + /** @description The ID of the comment. */ + id?: string; + /** @description Whether the comment was added from an email sent by a person who is not part of the issue. See [Allow external emails to be added as comments on issues](https://support.atlassian.com/jira-service-management-cloud/docs/allow-external-emails-to-be-added-as-comments-on-issues/)for information on setting up this feature. */ + jsdAuthorCanSeeRequest?: boolean; + /** @description Whether the comment is visible in Jira Service Desk. Defaults to true when comments are created in the Jira Cloud Platform. This includes when the site doesn't use Jira Service Desk or the project isn't a Jira Service Desk project and, therefore, there is no Jira Service Desk for the issue to be visible on. To create a comment with its visibility in Jira Service Desk set to false, use the Jira Service Desk REST API [Create request comment](https://developer.atlassian.com/cloud/jira/service-desk/rest/#api-rest-servicedeskapi-request-issueIdOrKey-comment-post) operation. */ + jsdPublic?: boolean; + /** @description A list of comment properties. Optional on create and update. */ + properties?: components["schemas"]["EntityProperty"][]; + /** @description The rendered version of the comment. */ + renderedBody?: string; + /** @description The URL of the comment. */ + self?: string; + /** @description The ID of the user who updated the comment last. */ + updateAuthor?: components["schemas"]["UserDetails"]; + /** + * Format: date-time + * @description The date and time at which the comment was updated last. + */ + updated?: string; + /** @description The group or role to which this comment is visible. Optional on create and update. */ + visibility?: components["schemas"]["Visibility"]; + [key: string]: unknown; + }; + /** @description Count of issues assigned to a component. */ + ComponentIssuesCount: { + /** + * Format: int64 + * @description The count of issues assigned to a component. + */ + issueCount?: number; + /** + * Format: uri + * @description The URL for this count of issues for a component. + */ + self?: string; + }; + /** @description Details about a component with a count of the issues it contains. */ + ComponentWithIssueCount: { + /** @description The details of the user associated with `assigneeType`, if any. See `realAssignee` for details of the user assigned to issues created with this component. */ + assignee?: components["schemas"]["User"]; + /** + * @description The nominal user type used to determine the assignee for issues created with this component. See `realAssigneeType` for details on how the type of the user, and hence the user, assigned to issues is determined. Takes the following values: + * + * * `PROJECT_LEAD` the assignee to any issues created with this component is nominally the lead for the project the component is in. + * * `COMPONENT_LEAD` the assignee to any issues created with this component is nominally the lead for the component. + * * `UNASSIGNED` an assignee is not set for issues created with this component. + * * `PROJECT_DEFAULT` the assignee to any issues created with this component is nominally the default assignee for the project that the component is in. + * @enum {string} + */ + assigneeType?: "PROJECT_DEFAULT" | "COMPONENT_LEAD" | "PROJECT_LEAD" | "UNASSIGNED"; + /** @description The description for the component. */ + description?: string; + /** @description The unique identifier for the component. */ + id?: string; + /** @description Whether a user is associated with `assigneeType`. For example, if the `assigneeType` is set to `COMPONENT_LEAD` but the component lead is not set, then `false` is returned. */ + isAssigneeTypeValid?: boolean; + /** + * Format: int64 + * @description Count of issues for the component. + */ + issueCount?: number; + /** @description The user details for the component's lead user. */ + lead?: components["schemas"]["User"]; + /** @description The name for the component. */ + name?: string; + /** @description The key of the project to which the component is assigned. */ + project?: string; + /** + * Format: int64 + * @description Not used. + */ + projectId?: number; + /** @description The user assigned to issues created with this component, when `assigneeType` does not identify a valid assignee. */ + realAssignee?: components["schemas"]["User"]; + /** + * @description The type of the assignee that is assigned to issues created with this component, when an assignee cannot be set from the `assigneeType`. For example, `assigneeType` is set to `COMPONENT_LEAD` but no component lead is set. This property is set to one of the following values: + * + * * `PROJECT_LEAD` when `assigneeType` is `PROJECT_LEAD` and the project lead has permission to be assigned issues in the project that the component is in. + * * `COMPONENT_LEAD` when `assignee`Type is `COMPONENT_LEAD` and the component lead has permission to be assigned issues in the project that the component is in. + * * `UNASSIGNED` when `assigneeType` is `UNASSIGNED` and Jira is configured to allow unassigned issues. + * * `PROJECT_DEFAULT` when none of the preceding cases are true. + * @enum {string} + */ + realAssigneeType?: "PROJECT_DEFAULT" | "COMPONENT_LEAD" | "PROJECT_LEAD" | "UNASSIGNED"; + /** + * Format: uri + * @description The URL for this count of the issues contained in the component. + */ + self?: string; + }; + /** @description A JQL query clause that consists of nested clauses. For example, `(labels in (urgent, blocker) OR lastCommentedBy = currentUser()). Note that, where nesting is not defined, the parser nests JQL clauses based on the operator precedence. For example, "A OR B AND C" is parsed as "(A OR B) AND C". See Setting the precedence of operators for more information about precedence in JQL queries.` */ + CompoundClause: { + /** @description The list of nested clauses. */ + clauses: components["schemas"]["JqlQueryClause"][]; + /** + * @description The operator between the clauses. + * @enum {string} + */ + operator: "and" | "or" | "not"; + }; + /** @description The conditions group associated with the transition. */ + ConditionGroupConfiguration: { + /** @description The nested conditions of the condition group. */ + conditionGroups?: components["schemas"]["ConditionGroupConfiguration"][]; + /** @description The rules for this condition. */ + conditions?: components["schemas"]["WorkflowRuleConfiguration"][]; + /** + * @description Determines how the conditions in the group are evaluated. Accepts either `ANY` or `ALL`. If `ANY` is used, at least one condition in the group must be true for the group to evaluate to true. If `ALL` is used, all conditions in the group must be true for the group to evaluate to true. + * @enum {string} + */ + operation?: "ANY" | "ALL"; + } | null; + /** @description The conditions group associated with the transition. */ + ConditionGroupUpdate: { + /** @description The nested conditions of the condition group. */ + conditionGroups?: components["schemas"]["ConditionGroupUpdate"][]; + /** @description The rules for this condition. */ + conditions?: components["schemas"]["WorkflowRuleConfiguration"][]; + /** + * @description Determines how the conditions in the group are evaluated. Accepts either `ANY` or `ALL`. If `ANY` is used, at least one condition in the group must be true for the group to evaluate to true. If `ALL` is used, all conditions in the group must be true for the group to evaluate to true. + * @enum {string} + */ + operation: "ANY" | "ALL"; + } | null; + /** @description Details about the configuration of Jira. */ + Configuration: { + /** @description Whether the ability to add attachments to issues is enabled. */ + attachmentsEnabled?: boolean; + /** @description Whether the ability to link issues is enabled. */ + issueLinkingEnabled?: boolean; + /** @description Whether the ability to create subtasks for issues is enabled. */ + subTasksEnabled?: boolean; + /** @description The configuration of time tracking. */ + timeTrackingConfiguration?: components["schemas"]["TimeTrackingConfiguration"]; + /** @description Whether the ability to track time is enabled. This property is deprecated. */ + timeTrackingEnabled?: boolean; + /** @description Whether the ability to create unassigned issues is enabled. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. */ + unassignedIssuesAllowed?: boolean; + /** @description Whether the ability for users to vote on issues is enabled. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. */ + votingEnabled?: boolean; + /** @description Whether the ability for users to watch issues is enabled. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. */ + watchingEnabled?: boolean; + }; + /** @description A list of custom field details. */ + ConnectCustomFieldValue: { + /** + * @description The type of custom field. + * @enum {string} + */ + _type: "StringIssueField" | "NumberIssueField" | "RichTextIssueField" | "SingleSelectIssueField" | "MultiSelectIssueField" | "TextIssueField"; + /** @description The custom field ID. */ + fieldID: number; + /** @description The issue ID. */ + issueID: number; + /** @description The value of number type custom field when `_type` is `NumberIssueField`. */ + number?: number; + /** @description The value of single select and multiselect custom field type when `_type` is `SingleSelectIssueField` or `MultiSelectIssueField`. */ + optionID?: string; + /** @description The value of richText type custom field when `_type` is `RichTextIssueField`. */ + richText?: string; + /** @description The value of string type custom field when `_type` is `StringIssueField`. */ + string?: string; + /** @description The value of of text custom field type when `_type` is `TextIssueField`. */ + text?: string; + }; + /** @description Details of updates for a custom field. */ + ConnectCustomFieldValues: { + /** @description The list of custom field update details. */ + updateValueList?: components["schemas"]["ConnectCustomFieldValue"][]; + }; + /** + * @description A [Connect module](https://developer.atlassian.com/cloud/jira/platform/about-jira-modules/) in the same format as in the + * [app descriptor](https://developer.atlassian.com/cloud/jira/platform/app-descriptor/). + * @example { + * "description": { + * "value": "field with team" + * }, + * "type": "single_select", + * "extractions": [ + * { + * "path": "category", + * "type": "text", + * "name": "categoryName" + * } + * ], + * "name": { + * "value": "Team" + * }, + * "key": "team-field" + * } + */ + ConnectModule: Record; + /** + * @example { + * "jiraEntityProperties": [ + * { + * "keyConfigurations": [ + * { + * "extractions": [ + * { + * "objectName": "extension", + * "type": "text", + * "alias": "attachmentExtension" + * } + * ], + * "propertyKey": "attachment" + * } + * ], + * "entityType": "issue", + * "name": { + * "value": "Attachment Index Document" + * }, + * "key": "dynamic-attachment-entity-property" + * } + * ], + * "jiraIssueFields": [ + * { + * "description": { + * "value": "A dynamically added single-select field" + * }, + * "type": "single_select", + * "extractions": [ + * { + * "path": "category", + * "type": "text", + * "name": "categoryName" + * } + * ], + * "name": { + * "value": "Dynamic single select" + * }, + * "key": "dynamic-select-field" + * } + * ] + * } + */ + ConnectModules: { + /** + * @description A list of app modules in the same format as the `modules` property in the + * [app descriptor](https://developer.atlassian.com/cloud/jira/platform/app-descriptor/). + */ + modules: components["schemas"]["ConnectModule"][]; + }; + /** @description A workflow transition rule. */ + ConnectWorkflowTransitionRule: { + configuration: components["schemas"]["RuleConfiguration"]; + /** + * @description The ID of the transition rule. + * @example 123 + */ + id: string; + /** + * @description The key of the rule, as defined in the Connect app descriptor. + * @example WorkflowKey + */ + key: string; + transition?: components["schemas"]["WorkflowTransition"]; + }; + /** @description The list of features on a project. */ + ContainerForProjectFeatures: { + /** @description The project features. */ + features?: components["schemas"]["ProjectFeature"][]; + }; + /** @description Container for a list of registered webhooks. Webhook details are returned in the same order as the request. */ + ContainerForRegisteredWebhooks: { + /** @description A list of registered webhooks. */ + webhookRegistrationResult?: components["schemas"]["RegisteredWebhook"][]; + }; + /** @description Container for a list of webhook IDs. */ + ContainerForWebhookIDs: { + /** @description A list of webhook IDs. */ + webhookIds: number[]; + }; + /** @description A container for a list of workflow schemes together with the projects they are associated with. */ + ContainerOfWorkflowSchemeAssociations: { + /** @description A list of workflow schemes together with projects they are associated with. */ + values: components["schemas"]["WorkflowSchemeAssociations"][]; + }; + /** @description A context. */ + Context: { + /** + * Format: int64 + * @description The ID of the context. + */ + id?: number; + /** @description The name of the context. */ + name?: string; + /** @description The scope of the context. */ + scope?: components["schemas"]["Scope"]; + }; + /** @description The project and issue type mapping with a matching custom field context. */ + ContextForProjectAndIssueType: { + /** @description The ID of the custom field context. */ + contextId: string; + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The ID of the project. */ + projectId: string; + }; + /** @description Details of the contextual configuration for a custom field. */ + ContextualConfiguration: { + /** @description The field configuration. */ + configuration?: unknown; + /** @description The ID of the field context the configuration is associated with. */ + fieldContextId: string; + /** @description The ID of the configuration. */ + id: string; + /** @description The field value schema. */ + schema?: unknown; + }; + /** @description The converted JQL queries. */ + ConvertedJQLQueries: { + /** @description List of queries containing user information that could not be mapped to an existing user */ + queriesWithUnknownUsers?: components["schemas"]["JQLQueryWithUnknownUsers"][]; + /** @description The list of converted query strings with account IDs in place of user identifiers. */ + queryStrings?: string[]; + }; + /** @description The details of a created custom field context. */ + CreateCustomFieldContext: { + /** @description The description of the context. */ + description?: string; + /** @description The ID of the context. */ + id?: string; + /** @description The list of issue types IDs for the context. If the list is empty, the context refers to all issue types. */ + issueTypeIds?: string[]; + /** @description The name of the context. */ + name: string; + /** @description The list of project IDs associated with the context. If the list is empty, the context is global. */ + projectIds?: string[]; + }; + /** @description Issue security scheme and it's details */ + CreateIssueSecuritySchemeDetails: { + /** @description The description of the issue security scheme. */ + description?: string; + /** @description The list of scheme levels which should be added to the security scheme. */ + levels?: components["schemas"]["SecuritySchemeLevelBean"][]; + /** @description The name of the issue security scheme. Must be unique (case-insensitive). */ + name: string; + [key: string]: unknown; + }; + /** @description Details of an notification scheme. */ + CreateNotificationSchemeDetails: { + /** @description The description of the notification scheme. */ + description?: string; + /** @description The name of the notification scheme. Must be unique (case-insensitive). */ + name: string; + /** @description The list of notifications which should be added to the notification scheme. */ + notificationSchemeEvents?: components["schemas"]["NotificationSchemeEventDetails"][]; + [key: string]: unknown; + }; + /** @description Details of an issue priority. */ + CreatePriorityDetails: { + /** @description The description of the priority. */ + description?: string; + /** + * @description The URL of an icon for the priority. Accepted protocols are HTTP and HTTPS. Built in icons can also be used. + * @enum {string} + */ + iconUrl?: "/images/icons/priorities/blocker.png" | "/images/icons/priorities/critical.png" | "/images/icons/priorities/high.png" | "/images/icons/priorities/highest.png" | "/images/icons/priorities/low.png" | "/images/icons/priorities/lowest.png" | "/images/icons/priorities/major.png" | "/images/icons/priorities/medium.png" | "/images/icons/priorities/minor.png" | "/images/icons/priorities/trivial.png"; + /** @description The name of the priority. Must be unique. */ + name: string; + /** @description The status color of the priority in 3-digit or 6-digit hexadecimal format. */ + statusColor: string; + [key: string]: unknown; + }; + /** @description Details about the project. */ + CreateProjectDetails: { + /** + * @description The default assignee when creating issues for this project. + * @enum {string} + */ + assigneeType?: "PROJECT_LEAD" | "UNASSIGNED"; + /** + * Format: int64 + * @description An integer value for the project's avatar. + */ + avatarId?: number; + /** + * Format: int64 + * @description The ID of the project's category. A complete list of category IDs is found using the [Get all project categories](#api-rest-api-3-projectCategory-get) operation. + */ + categoryId?: number; + /** @description A brief description of the project. */ + description?: string; + /** + * Format: int64 + * @description The ID of the field configuration scheme for the project. Use the [Get all field configuration schemes](#api-rest-api-3-fieldconfigurationscheme-get) operation to get a list of field configuration scheme IDs. If you specify the field configuration scheme you cannot specify the project template key. + */ + fieldConfigurationScheme?: number; + /** + * Format: int64 + * @description The ID of the issue security scheme for the project, which enables you to control who can and cannot view issues. Use the [Get issue security schemes](#api-rest-api-3-issuesecurityschemes-get) resource to get all issue security scheme IDs. + */ + issueSecurityScheme?: number; + /** + * Format: int64 + * @description The ID of the issue type scheme for the project. Use the [Get all issue type schemes](#api-rest-api-3-issuetypescheme-get) operation to get a list of issue type scheme IDs. If you specify the issue type scheme you cannot specify the project template key. + */ + issueTypeScheme?: number; + /** + * Format: int64 + * @description The ID of the issue type screen scheme for the project. Use the [Get all issue type screen schemes](#api-rest-api-3-issuetypescreenscheme-get) operation to get a list of issue type screen scheme IDs. If you specify the issue type screen scheme you cannot specify the project template key. + */ + issueTypeScreenScheme?: number; + /** @description Project keys must be unique and start with an uppercase letter followed by one or more uppercase alphanumeric characters. The maximum length is 10 characters. */ + key: string; + /** @description This parameter is deprecated because of privacy changes. Use `leadAccountId` instead. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. The user name of the project lead. Either `lead` or `leadAccountId` must be set when creating a project. Cannot be provided with `leadAccountId`. */ + lead?: string; + /** @description The account ID of the project lead. Either `lead` or `leadAccountId` must be set when creating a project. Cannot be provided with `lead`. */ + leadAccountId?: string; + /** @description The name of the project. */ + name: string; + /** + * Format: int64 + * @description The ID of the notification scheme for the project. Use the [Get notification schemes](#api-rest-api-3-notificationscheme-get) resource to get a list of notification scheme IDs. + */ + notificationScheme?: number; + /** + * Format: int64 + * @description The ID of the permission scheme for the project. Use the [Get all permission schemes](#api-rest-api-3-permissionscheme-get) resource to see a list of all permission scheme IDs. + */ + permissionScheme?: number; + /** + * @description A predefined configuration for a project. The type of the `projectTemplateKey` must match with the type of the `projectTypeKey`. + * @enum {string} + */ + projectTemplateKey?: "com.pyxis.greenhopper.jira:gh-simplified-agility-kanban" | "com.pyxis.greenhopper.jira:gh-simplified-agility-scrum" | "com.pyxis.greenhopper.jira:gh-simplified-basic" | "com.pyxis.greenhopper.jira:gh-simplified-kanban-classic" | "com.pyxis.greenhopper.jira:gh-simplified-scrum-classic" | "com.pyxis.greenhopper.jira:gh-cross-team-template" | "com.pyxis.greenhopper.jira:gh-cross-team-planning-template" | "com.atlassian.servicedesk:simplified-it-service-management" | "com.atlassian.servicedesk:simplified-general-service-desk" | "com.atlassian.servicedesk:simplified-general-service-desk-it" | "com.atlassian.servicedesk:simplified-general-service-desk-business" | "com.atlassian.servicedesk:simplified-internal-service-desk" | "com.atlassian.servicedesk:simplified-external-service-desk" | "com.atlassian.servicedesk:simplified-hr-service-desk" | "com.atlassian.servicedesk:simplified-facilities-service-desk" | "com.atlassian.servicedesk:simplified-legal-service-desk" | "com.atlassian.servicedesk:simplified-marketing-service-desk" | "com.atlassian.servicedesk:simplified-finance-service-desk" | "com.atlassian.servicedesk:simplified-analytics-service-desk" | "com.atlassian.servicedesk:simplified-design-service-desk" | "com.atlassian.servicedesk:simplified-sales-service-desk" | "com.atlassian.servicedesk:simplified-halp-service-desk" | "com.atlassian.servicedesk:simplified-blank-project-it" | "com.atlassian.servicedesk:simplified-blank-project-business" | "com.atlassian.servicedesk:next-gen-it-service-desk" | "com.atlassian.servicedesk:next-gen-hr-service-desk" | "com.atlassian.servicedesk:next-gen-legal-service-desk" | "com.atlassian.servicedesk:next-gen-marketing-service-desk" | "com.atlassian.servicedesk:next-gen-facilities-service-desk" | "com.atlassian.servicedesk:next-gen-general-service-desk" | "com.atlassian.servicedesk:next-gen-general-it-service-desk" | "com.atlassian.servicedesk:next-gen-general-business-service-desk" | "com.atlassian.servicedesk:next-gen-analytics-service-desk" | "com.atlassian.servicedesk:next-gen-finance-service-desk" | "com.atlassian.servicedesk:next-gen-design-service-desk" | "com.atlassian.servicedesk:next-gen-sales-service-desk" | "com.atlassian.jira-core-project-templates:jira-core-simplified-content-management" | "com.atlassian.jira-core-project-templates:jira-core-simplified-document-approval" | "com.atlassian.jira-core-project-templates:jira-core-simplified-lead-tracking" | "com.atlassian.jira-core-project-templates:jira-core-simplified-process-control" | "com.atlassian.jira-core-project-templates:jira-core-simplified-procurement" | "com.atlassian.jira-core-project-templates:jira-core-simplified-project-management" | "com.atlassian.jira-core-project-templates:jira-core-simplified-recruitment" | "com.atlassian.jira-core-project-templates:jira-core-simplified-task-"; + /** + * @description The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes), which defines the application-specific feature set. If you don't specify the project template you have to specify the project type. + * @enum {string} + */ + projectTypeKey?: "software" | "service_desk" | "business"; + /** @description A link to information about this project, such as project documentation */ + url?: string; + /** + * Format: int64 + * @description The ID of the workflow scheme for the project. Use the [Get all workflow schemes](#api-rest-api-3-workflowscheme-get) operation to get a list of workflow scheme IDs. If you specify the workflow scheme you cannot specify the project template key. + */ + workflowScheme?: number; + }; + /** @description Details of an issue resolution. */ + CreateResolutionDetails: { + /** @description The description of the resolution. */ + description?: string; + /** @description The name of the resolution. Must be unique (case-insensitive). */ + name: string; + [key: string]: unknown; + }; + /** @description The details of a UI modification. */ + CreateUiModificationDetails: { + /** @description List of contexts of the UI modification. The maximum number of contexts is 1000. */ + contexts?: components["schemas"]["UiModificationContextDetails"][]; + /** @description The data of the UI modification. The maximum size of the data is 50000 characters. */ + data?: string; + /** @description The description of the UI modification. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the UI modification. The maximum length is 255 characters. */ + name: string; + }; + CreateUpdateRoleRequestBean: { + /** @description A description of the project role. Required when fully updating a project role. Optional when creating or partially updating a project role. */ + description?: string; + /** @description The name of the project role. Must be unique. Cannot begin or end with whitespace. The maximum length is 255 characters. Required when creating a project role. Optional when partially updating a project role. */ + name?: string; + }; + /** @description A workflow transition condition. */ + CreateWorkflowCondition: { + /** @description The list of workflow conditions. */ + conditions?: components["schemas"]["CreateWorkflowCondition"][]; + /** @description EXPERIMENTAL. The configuration of the transition rule. */ + configuration?: { + [key: string]: unknown; + }; + /** + * @description The compound condition operator. + * @enum {string} + */ + operator?: "AND" | "OR"; + /** @description The type of the transition rule. */ + type?: string; + }; + /** @description The details of a workflow. */ + CreateWorkflowDetails: { + /** @description The description of the workflow. The maximum length is 1000 characters. */ + description?: string; + /** @description The name of the workflow. The name must be unique. The maximum length is 255 characters. Characters can be separated by a whitespace but the name cannot start or end with a whitespace. */ + name: string; + /** @description The statuses of the workflow. Any status that does not include a transition is added to the workflow without a transition. */ + statuses: components["schemas"]["CreateWorkflowStatusDetails"][]; + /** + * @description The transitions of the workflow. For the request to be valid, these transitions must: + * + * * include one *initial* transition. + * * not use the same name for a *global* and *directed* transition. + * * have a unique name for each *global* transition. + * * have a unique 'to' status for each *global* transition. + * * have unique names for each transition from a status. + * * not have a 'from' status on *initial* and *global* transitions. + * * have a 'from' status on *directed* transitions. + * + * All the transition statuses must be included in `statuses`. + */ + transitions: components["schemas"]["CreateWorkflowTransitionDetails"][]; + }; + /** @description The details of a transition status. */ + CreateWorkflowStatusDetails: { + /** @description The ID of the status. */ + id: string; + /** @description The properties of the status. */ + properties?: { + [key: string]: string; + }; + }; + /** @description The details of a workflow transition. */ + CreateWorkflowTransitionDetails: { + /** @description The description of the transition. The maximum length is 1000 characters. */ + description?: string; + /** @description The statuses the transition can start from. */ + from?: string[]; + /** @description The name of the transition. The maximum length is 60 characters. */ + name: string; + /** @description The properties of the transition. */ + properties?: { + [key: string]: string; + }; + /** @description The rules of the transition. */ + rules?: components["schemas"]["CreateWorkflowTransitionRulesDetails"]; + /** @description The screen of the transition. */ + screen?: components["schemas"]["CreateWorkflowTransitionScreenDetails"]; + /** @description The status the transition goes to. */ + to: string; + /** + * @description The type of the transition. + * @enum {string} + */ + type: "global" | "initial" | "directed"; + }; + /** @description A workflow transition rule. */ + CreateWorkflowTransitionRule: { + /** @description EXPERIMENTAL. The configuration of the transition rule. */ + configuration?: { + [key: string]: unknown; + }; + /** @description The type of the transition rule. */ + type: string; + }; + /** @description The details of a workflow transition rules. */ + CreateWorkflowTransitionRulesDetails: { + /** @description The workflow conditions. */ + conditions?: components["schemas"]["CreateWorkflowCondition"]; + /** + * @description The workflow post functions. + * + * **Note:** The default post functions are always added to the *initial* transition, as in: + * + * "postFunctions": [ + * { + * "type": "IssueCreateFunction" + * }, + * { + * "type": "IssueReindexFunction" + * }, + * { + * "type": "FireIssueEventFunction", + * "configuration": { + * "event": { + * "id": "1", + * "name": "issue_created" + * } + * } + * } + * ] + * + * **Note:** The default post functions are always added to the *global* and *directed* transitions, as in: + * + * "postFunctions": [ + * { + * "type": "UpdateIssueStatusFunction" + * }, + * { + * "type": "CreateCommentFunction" + * }, + * { + * "type": "GenerateChangeHistoryFunction" + * }, + * { + * "type": "IssueReindexFunction" + * }, + * { + * "type": "FireIssueEventFunction", + * "configuration": { + * "event": { + * "id": "13", + * "name": "issue_generic" + * } + * } + * } + * ] + */ + postFunctions?: components["schemas"]["CreateWorkflowTransitionRule"][]; + /** + * @description The workflow validators. + * + * **Note:** The default permission validator is always added to the *initial* transition, as in: + * + * "validators": [ + * { + * "type": "PermissionValidator", + * "configuration": { + * "permissionKey": "CREATE_ISSUES" + * } + * } + * ] + */ + validators?: components["schemas"]["CreateWorkflowTransitionRule"][]; + }; + /** @description The details of a transition screen. */ + CreateWorkflowTransitionScreenDetails: { + /** @description The ID of the screen. */ + id: string; + }; + /** @description Details about a created issue or subtask. */ + CreatedIssue: { + /** @description The ID of the created issue or subtask. */ + id?: string; + /** @description The key of the created issue or subtask. */ + key?: string; + /** @description The URL of the created issue or subtask. */ + self?: string; + /** @description The response code and messages related to any requested transition. */ + transition?: components["schemas"]["NestedResponse"]; + /** @description The response code and messages related to any requested watchers. */ + watchers?: components["schemas"]["NestedResponse"]; + }; + /** @description Details about the issues created and the errors for requests that failed. */ + CreatedIssues: { + /** @description Error details for failed issue creation requests. */ + errors?: readonly components["schemas"]["BulkOperationErrorResult"][]; + /** @description Details of the issues created. */ + issues?: readonly components["schemas"]["CreatedIssue"][]; + }; + CustomContextVariable: { + /** @description Type of custom context variable. */ + type: string; + } & (components["schemas"]["UserContextVariable"] | components["schemas"]["IssueContextVariable"] | components["schemas"]["JsonContextVariable"]); + /** @description Details of configurations for a custom field. */ + CustomFieldConfigurations: { + /** @description The list of custom field configuration details. */ + configurations: components["schemas"]["ContextualConfiguration"][]; + }; + /** @description The details of a custom field context. */ + CustomFieldContext: { + /** @description The description of the context. */ + description: string; + /** @description The ID of the context. */ + id: string; + /** @description Whether the context apply to all issue types. */ + isAnyIssueType: boolean; + /** @description Whether the context is global. */ + isGlobalContext: boolean; + /** @description The name of the context. */ + name: string; + }; + CustomFieldContextDefaultValue: components["schemas"]["CustomFieldContextDefaultValueCascadingOption"] | components["schemas"]["CustomFieldContextDefaultValueMultipleOption"] | components["schemas"]["CustomFieldContextDefaultValueSingleOption"] | components["schemas"]["CustomFieldContextSingleUserPickerDefaults"] | components["schemas"]["CustomFieldContextDefaultValueMultiUserPicker"] | components["schemas"]["CustomFieldContextDefaultValueSingleGroupPicker"] | components["schemas"]["CustomFieldContextDefaultValueMultipleGroupPicker"] | components["schemas"]["CustomFieldContextDefaultValueDate"] | components["schemas"]["CustomFieldContextDefaultValueDateTime"] | components["schemas"]["CustomFieldContextDefaultValueURL"] | components["schemas"]["CustomFieldContextDefaultValueProject"] | components["schemas"]["CustomFieldContextDefaultValueFloat"] | components["schemas"]["CustomFieldContextDefaultValueLabels"] | components["schemas"]["CustomFieldContextDefaultValueTextField"] | components["schemas"]["CustomFieldContextDefaultValueTextArea"] | components["schemas"]["CustomFieldContextDefaultValueReadOnly"] | components["schemas"]["CustomFieldContextDefaultValueSingleVersionPicker"] | components["schemas"]["CustomFieldContextDefaultValueMultipleVersionPicker"] | components["schemas"]["CustomFieldContextDefaultValueForgeStringField"] | components["schemas"]["CustomFieldContextDefaultValueForgeMultiStringField"] | components["schemas"]["CustomFieldContextDefaultValueForgeObjectField"] | components["schemas"]["CustomFieldContextDefaultValueForgeDateTimeField"] | components["schemas"]["CustomFieldContextDefaultValueForgeGroupField"] | components["schemas"]["CustomFieldContextDefaultValueForgeMultiGroupField"] | components["schemas"]["CustomFieldContextDefaultValueForgeNumberField"] | components["schemas"]["CustomFieldContextDefaultValueForgeUserField"] | components["schemas"]["CustomFieldContextDefaultValueForgeMultiUserField"]; + /** @description The default value for a cascading select custom field. */ + CustomFieldContextDefaultValueCascadingOption: { + /** @description The ID of the default cascading option. */ + cascadingOptionId?: string; + /** @description The ID of the context. */ + contextId: string; + /** @description The ID of the default option. */ + optionId: string; + type: string; + }; + /** @description The default value for a Date custom field. */ + CustomFieldContextDefaultValueDate: { + /** @description The default date in ISO format. Ignored if `useCurrent` is true. */ + date?: string; + type: string; + /** + * @description Whether to use the current date. + * @default false + */ + useCurrent?: boolean; + }; + /** @description The default value for a date time custom field. */ + CustomFieldContextDefaultValueDateTime: { + /** @description The default date-time in ISO format. Ignored if `useCurrent` is true. */ + dateTime?: string; + type: string; + /** + * @description Whether to use the current date. + * @default false + */ + useCurrent?: boolean; + }; + /** @description Default value for a float (number) custom field. */ + CustomFieldContextDefaultValueFloat: { + /** + * Format: double + * @description The default floating-point number. + */ + number: number; + type: string; + }; + /** @description The default value for a Forge date time custom field. */ + CustomFieldContextDefaultValueForgeDateTimeField: { + /** @description The ID of the context. */ + contextId: string; + /** @description The default date-time in ISO format. Ignored if `useCurrent` is true. */ + dateTime?: string; + type: string; + /** + * @description Whether to use the current date. + * @default false + */ + useCurrent?: boolean; + }; + /** @description The default value for a Forge group custom field. */ + CustomFieldContextDefaultValueForgeGroupField: { + /** @description The ID of the context. */ + contextId: string; + /** @description The ID of the the default group. */ + groupId: string; + type: string; + }; + /** @description The default value for a Forge collection of groups custom field. */ + CustomFieldContextDefaultValueForgeMultiGroupField: { + /** @description The ID of the context. */ + contextId: string; + /** @description The IDs of the default groups. */ + groupIds: string[]; + type: string; + }; + /** @description The default text for a Forge collection of strings custom field. */ + CustomFieldContextDefaultValueForgeMultiStringField: { + type: string; + /** @description List of string values. The maximum length for a value is 254 characters. */ + values?: string[]; + }; + /** @description Defaults for a Forge collection of users custom field. */ + CustomFieldContextDefaultValueForgeMultiUserField: { + /** @description The IDs of the default users. */ + accountIds: string[]; + /** @description The ID of the context. */ + contextId: string; + type: string; + }; + /** @description Default value for a Forge number custom field. */ + CustomFieldContextDefaultValueForgeNumberField: { + /** @description The ID of the context. */ + contextId: string; + /** + * Format: double + * @description The default floating-point number. + */ + number: number; + type: string; + }; + /** @description The default value for a Forge object custom field. */ + CustomFieldContextDefaultValueForgeObjectField: { + /** @description The default JSON object. */ + object?: Record; + type: string; + }; + /** @description The default text for a Forge string custom field. */ + CustomFieldContextDefaultValueForgeStringField: { + /** @description The ID of the context. */ + contextId: string; + /** @description The default text. The maximum length is 254 characters. */ + text?: string; + type: string; + }; + /** @description Defaults for a Forge user custom field. */ + CustomFieldContextDefaultValueForgeUserField: { + /** @description The ID of the default user. */ + accountId: string; + /** @description The ID of the context. */ + contextId: string; + type: string; + userFilter: components["schemas"]["UserFilter"]; + }; + /** @description Default value for a labels custom field. */ + CustomFieldContextDefaultValueLabels: { + /** @description The default labels value. */ + labels: string[]; + type: string; + }; + /** @description The default value for a User Picker (multiple) custom field. */ + CustomFieldContextDefaultValueMultiUserPicker: { + /** @description The IDs of the default users. */ + accountIds: string[]; + /** @description The ID of the context. */ + contextId: string; + type: string; + }; + /** @description The default value for a multiple group picker custom field. */ + CustomFieldContextDefaultValueMultipleGroupPicker: { + /** @description The ID of the context. */ + contextId: string; + /** @description The IDs of the default groups. */ + groupIds: string[]; + type: string; + }; + /** @description The default value for a multi-select custom field. */ + CustomFieldContextDefaultValueMultipleOption: { + /** @description The ID of the context. */ + contextId: string; + /** @description The list of IDs of the default options. */ + optionIds: string[]; + type: string; + }; + /** @description The default value for a multiple version picker custom field. */ + CustomFieldContextDefaultValueMultipleVersionPicker: { + type: string; + /** @description The IDs of the default versions. */ + versionIds: string[]; + /** @description The order the pickable versions are displayed in. If not provided, the released-first order is used. Available version orders are `"releasedFirst"` and `"unreleasedFirst"`. */ + versionOrder?: string; + }; + /** @description The default value for a project custom field. */ + CustomFieldContextDefaultValueProject: { + /** @description The ID of the context. */ + contextId: string; + /** @description The ID of the default project. */ + projectId: string; + type: string; + }; + /** @description The default text for a read only custom field. */ + CustomFieldContextDefaultValueReadOnly: { + /** @description The default text. The maximum length is 255 characters. */ + text?: string; + type: string; + }; + /** @description The default value for a group picker custom field. */ + CustomFieldContextDefaultValueSingleGroupPicker: { + /** @description The ID of the context. */ + contextId: string; + /** @description The ID of the the default group. */ + groupId: string; + type: string; + }; + /** @description The default value for a single select custom field. */ + CustomFieldContextDefaultValueSingleOption: { + /** @description The ID of the context. */ + contextId: string; + /** @description The ID of the default option. */ + optionId: string; + type: string; + }; + /** @description The default value for a version picker custom field. */ + CustomFieldContextDefaultValueSingleVersionPicker: { + type: string; + /** @description The ID of the default version. */ + versionId: string; + /** @description The order the pickable versions are displayed in. If not provided, the released-first order is used. Available version orders are `"releasedFirst"` and `"unreleasedFirst"`. */ + versionOrder?: string; + }; + /** @description The default text for a text area custom field. */ + CustomFieldContextDefaultValueTextArea: { + /** @description The default text. The maximum length is 32767 characters. */ + text?: string; + type: string; + }; + /** @description The default text for a text custom field. */ + CustomFieldContextDefaultValueTextField: { + /** @description The default text. The maximum length is 254 characters. */ + text?: string; + type: string; + }; + /** @description The default value for a URL custom field. */ + CustomFieldContextDefaultValueURL: { + /** @description The ID of the context. */ + contextId: string; + type: string; + /** @description The default URL. */ + url: string; + }; + /** @description Default values to update. */ + CustomFieldContextDefaultValueUpdate: { + defaultValues?: components["schemas"]["CustomFieldContextDefaultValue"][]; + }; + /** @description Details of the custom field options for a context. */ + CustomFieldContextOption: { + /** @description Whether the option is disabled. */ + disabled: boolean; + /** @description The ID of the custom field option. */ + id: string; + /** @description For cascading options, the ID of the custom field option containing the cascading option. */ + optionId?: string; + /** @description The value of the custom field option. */ + value: string; + }; + /** @description Details of a context to project association. */ + CustomFieldContextProjectMapping: { + /** @description The ID of the context. */ + contextId: string; + /** @description Whether context is global. */ + isGlobalContext?: boolean; + /** @description The ID of the project. */ + projectId?: string; + }; + /** @description Defaults for a User Picker (single) custom field. */ + CustomFieldContextSingleUserPickerDefaults: { + /** @description The ID of the default user. */ + accountId: string; + /** @description The ID of the context. */ + contextId: string; + type: string; + userFilter: components["schemas"]["UserFilter"]; + }; + /** @description Details of a custom field context. */ + CustomFieldContextUpdateDetails: { + /** @description The description of the custom field context. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the custom field context. The name must be unique. The maximum length is 255 characters. */ + name?: string; + }; + /** @description A list of custom field options for a context. */ + CustomFieldCreatedContextOptionsList: { + /** @description The created custom field options. */ + options?: components["schemas"]["CustomFieldContextOption"][]; + }; + CustomFieldDefinitionJsonBean: { + /** @description The description of the custom field, which is displayed in Jira. */ + description?: string; + /** @description The name of the custom field, which is displayed in Jira. This is not the unique identifier. */ + name: string; + /** + * @description The searcher defines the way the field is searched in Jira. For example, *com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher*. + * The search UI (basic search and JQL search) will display different operations and values for the field, based on the field searcher. You must specify a searcher that is valid for the field type, as listed below (abbreviated values shown): + * + * * `cascadingselect`: `cascadingselectsearcher` + * * `datepicker`: `daterange` + * * `datetime`: `datetimerange` + * * `float`: `exactnumber` or `numberrange` + * * `grouppicker`: `grouppickersearcher` + * * `importid`: `exactnumber` or `numberrange` + * * `labels`: `labelsearcher` + * * `multicheckboxes`: `multiselectsearcher` + * * `multigrouppicker`: `multiselectsearcher` + * * `multiselect`: `multiselectsearcher` + * * `multiuserpicker`: `userpickergroupsearcher` + * * `multiversion`: `versionsearcher` + * * `project`: `projectsearcher` + * * `radiobuttons`: `multiselectsearcher` + * * `readonlyfield`: `textsearcher` + * * `select`: `multiselectsearcher` + * * `textarea`: `textsearcher` + * * `textfield`: `textsearcher` + * * `url`: `exacttextsearcher` + * * `userpicker`: `userpickergroupsearcher` + * * `version`: `versionsearcher` + * + * If no searcher is provided, the field isn't searchable. However, [Forge custom fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/#jira-custom-field-type--beta-) have a searcher set automatically, so are always searchable. + * @enum {string} + */ + searcherKey?: "com.atlassian.jira.plugin.system.customfieldtypes:cascadingselectsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:daterange" | "com.atlassian.jira.plugin.system.customfieldtypes:datetimerange" | "com.atlassian.jira.plugin.system.customfieldtypes:exactnumber" | "com.atlassian.jira.plugin.system.customfieldtypes:exacttextsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:labelsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:multiselectsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:numberrange" | "com.atlassian.jira.plugin.system.customfieldtypes:projectsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:textsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:userpickergroupsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:versionsearcher"; + /** + * @description The type of the custom field. These built-in custom field types are available: + * + * * `cascadingselect`: Enables values to be selected from two levels of select lists (value: `com.atlassian.jira.plugin.system.customfieldtypes:cascadingselect`) + * * `datepicker`: Stores a date using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:datepicker`) + * * `datetime`: Stores a date with a time component (value: `com.atlassian.jira.plugin.system.customfieldtypes:datetime`) + * * `float`: Stores and validates a numeric (floating point) input (value: `com.atlassian.jira.plugin.system.customfieldtypes:float`) + * * `grouppicker`: Stores a user group using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:grouppicker`) + * * `importid`: A read-only field that stores the ID the issue had in the system it was imported from (value: `com.atlassian.jira.plugin.system.customfieldtypes:importid`) + * * `labels`: Stores labels (value: `com.atlassian.jira.plugin.system.customfieldtypes:labels`) + * * `multicheckboxes`: Stores multiple values using checkboxes (value: ``) + * * `multigrouppicker`: Stores multiple user groups using a picker control (value: ``) + * * `multiselect`: Stores multiple values using a select list (value: `com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes`) + * * `multiuserpicker`: Stores multiple users using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:multigrouppicker`) + * * `multiversion`: Stores multiple versions from the versions available in a project using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:multiversion`) + * * `project`: Stores a project from a list of projects that the user is permitted to view (value: `com.atlassian.jira.plugin.system.customfieldtypes:project`) + * * `radiobuttons`: Stores a value using radio buttons (value: `com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons`) + * * `readonlyfield`: Stores a read-only text value, which can only be populated via the API (value: `com.atlassian.jira.plugin.system.customfieldtypes:readonlyfield`) + * * `select`: Stores a value from a configurable list of options (value: `com.atlassian.jira.plugin.system.customfieldtypes:select`) + * * `textarea`: Stores a long text string using a multiline text area (value: `com.atlassian.jira.plugin.system.customfieldtypes:textarea`) + * * `textfield`: Stores a text string using a single-line text box (value: `com.atlassian.jira.plugin.system.customfieldtypes:textfield`) + * * `url`: Stores a URL (value: `com.atlassian.jira.plugin.system.customfieldtypes:url`) + * * `userpicker`: Stores a user using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:userpicker`) + * * `version`: Stores a version using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:version`) + * + * To create a field based on a [Forge custom field type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/#jira-custom-field-type--beta-), use the ID of the Forge custom field type as the value. For example, `ari:cloud:ecosystem::extension/e62f20a2-4b61-4dbe-bfb9-9a88b5e3ac84/548c5df1-24aa-4f7c-bbbb-3038d947cb05/static/my-cf-type-key`. + */ + type: string; + }; + /** @description Details of a custom option for a field. */ + CustomFieldOption: { + /** + * Format: uri + * @description The URL of these custom field option details. + */ + self?: string; + /** @description The value of the custom field option. */ + value?: string; + }; + /** @description Details of a custom field option to create. */ + CustomFieldOptionCreate: { + /** @description Whether the option is disabled. */ + disabled?: boolean; + /** @description For cascading options, the ID of the custom field object containing the cascading option. */ + optionId?: string; + /** @description The value of the custom field option. */ + value: string; + }; + /** @description Details of a custom field option for a context. */ + CustomFieldOptionUpdate: { + /** @description Whether the option is disabled. */ + disabled?: boolean; + /** @description The ID of the custom field option. */ + id: string; + /** @description The value of the custom field option. */ + value?: string; + }; + /** @description Details about the replacement for a deleted version. */ + CustomFieldReplacement: { + /** + * Format: int64 + * @description The ID of the custom field in which to replace the version number. + */ + customFieldId?: number; + /** + * Format: int64 + * @description The version number to use as a replacement for the deleted version. + */ + moveTo?: number; + }; + /** @description A list of custom field options for a context. */ + CustomFieldUpdatedContextOptionsList: { + /** @description The updated custom field options. */ + options?: components["schemas"]["CustomFieldOptionUpdate"][]; + }; + /** @description A list of issue IDs and the value to update a custom field to. */ + CustomFieldValueUpdate: { + /** @description The list of issue IDs. */ + issueIds: number[]; + /** + * @description The value for the custom field. The value must be compatible with the [custom field type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/#data-types) as follows: + * + * * `string` the value must be a string. + * * `number` the value must be a number. + * * `datetime` the value must be a string that represents a date in the ISO format or the simplified extended ISO format. For example, `"2023-01-18T12:00:00-03:00"` or `"2023-01-18T12:00:00.000Z"`. However, the milliseconds part is ignored. + * * `user` the value must be an object that contains the `accountId` field. + * * `group` the value must be an object that contains the group `name` or `groupId` field. Because group names can change, we recommend using `groupId`. + * + * A list of appropriate values must be provided if the field is of the `list` [collection type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/#collection-types). + */ + value: unknown; + }; + /** @description Details of updates for a custom field. */ + CustomFieldValueUpdateDetails: { + /** @description The list of custom field update details. */ + updates?: components["schemas"]["CustomFieldValueUpdate"][]; + }; + /** @description Details of a dashboard. */ + Dashboard: { + /** + * Format: int32 + * @description The automatic refresh interval for the dashboard in milliseconds. + */ + automaticRefreshMs?: number; + description?: string; + /** @description The details of any edit share permissions for the dashboard. */ + editPermissions?: readonly components["schemas"]["SharePermission"][]; + /** @description The ID of the dashboard. */ + id?: string; + /** @description Whether the dashboard is selected as a favorite by the user. */ + isFavourite?: boolean; + /** @description Whether the current user has permission to edit the dashboard. */ + isWritable?: boolean; + /** @description The name of the dashboard. */ + name?: string; + /** @description The owner of the dashboard. */ + owner?: components["schemas"]["UserBean"]; + /** + * Format: int64 + * @description The number of users who have this dashboard as a favorite. + */ + popularity?: number; + /** + * Format: int32 + * @description The rank of this dashboard. + */ + rank?: number; + /** + * Format: uri + * @description The URL of these dashboard details. + */ + self?: string; + /** @description The details of any view share permissions for the dashboard. */ + sharePermissions?: readonly components["schemas"]["SharePermission"][]; + /** @description Whether the current dashboard is system dashboard. */ + systemDashboard?: boolean; + /** @description The URL of the dashboard. */ + view?: string; + }; + /** @description Details of a dashboard. */ + DashboardDetails: { + /** @description The description of the dashboard. */ + description?: string; + /** @description The edit permissions for the dashboard. */ + editPermissions: components["schemas"]["SharePermission"][]; + /** @description The name of the dashboard. */ + name: string; + /** @description The share permissions for the dashboard. */ + sharePermissions: components["schemas"]["SharePermission"][]; + }; + /** @description Details of a gadget. */ + DashboardGadget: { + /** + * @description The color of the gadget. Should be one of `blue`, `red`, `yellow`, `green`, `cyan`, `purple`, `gray`, or `white`. + * @enum {string} + */ + color: "blue" | "red" | "yellow" | "green" | "cyan" | "purple" | "gray" | "white"; + /** + * Format: int64 + * @description The ID of the gadget instance. + */ + id: number; + /** @description The module key of the gadget type. */ + moduleKey?: string; + /** @description The position of the gadget. */ + position: components["schemas"]["DashboardGadgetPosition"]; + /** @description The title of the gadget. */ + title: string; + /** @description The URI of the gadget type. */ + uri?: string; + }; + /** @description Details of a gadget position. */ + DashboardGadgetPosition: { + /** Format: int32 */ + "The column position of the gadget.": number; + /** Format: int32 */ + "The row position of the gadget.": number; + }; + /** @description The list of gadgets on the dashboard. */ + DashboardGadgetResponse: { + /** @description The list of gadgets. */ + gadgets: readonly components["schemas"]["DashboardGadget"][]; + }; + /** @description Details of the settings for a dashboard gadget. */ + DashboardGadgetSettings: { + /** @description The color of the gadget. Should be one of `blue`, `red`, `yellow`, `green`, `cyan`, `purple`, `gray`, or `white`. */ + color?: string; + /** @description Whether to ignore the validation of module key and URI. For example, when a gadget is created that is a part of an application that isn't installed. */ + ignoreUriAndModuleKeyValidation?: boolean; + /** @description The module key of the gadget type. Can't be provided with `uri`. */ + moduleKey?: string; + /** @description The position of the gadget. When the gadget is placed into the position, other gadgets in the same column are moved down to accommodate it. */ + position?: components["schemas"]["DashboardGadgetPosition"]; + /** @description The title of the gadget. */ + title?: string; + /** @description The URI of the gadget type. Can't be provided with `moduleKey`. */ + uri?: string; + }; + /** @description The details of the gadget to update. */ + DashboardGadgetUpdateRequest: { + /** @description The color of the gadget. Should be one of `blue`, `red`, `yellow`, `green`, `cyan`, `purple`, `gray`, or `white`. */ + color?: string; + /** @description The position of the gadget. */ + position?: components["schemas"]["DashboardGadgetPosition"]; + /** @description The title of the gadget. */ + title?: string; + }; + /** @description List issues archived within a specified date range. */ + DateRangeFilterRequest: { + /** @description List issues archived after a specified date, passed in the YYYY-MM-DD format. */ + dateAfter: string; + /** @description List issues archived before a specified date provided in the YYYY-MM-DD format. */ + dateBefore: string; + }; + /** @description Details of scheme and new default level. */ + DefaultLevelValue: { + /** @description The ID of the issue security level to set as default for the specified scheme. Providing null will reset the default level. */ + defaultLevelId: string; + /** @description The ID of the issue security scheme to set default level for. */ + issueSecuritySchemeId: string; + [key: string]: unknown; + }; + /** @description Details of the scope of the default sharing for new filters and dashboards. */ + DefaultShareScope: { + /** + * @description The scope of the default sharing for new filters and dashboards: + * + * * `AUTHENTICATED` Shared with all logged-in users. + * * `GLOBAL` Shared with all logged-in users. This shows as `AUTHENTICATED` in the response. + * * `PRIVATE` Not shared with any users. + * @enum {string} + */ + scope: "GLOBAL" | "AUTHENTICATED" | "PRIVATE"; + }; + /** @description Details about the default workflow. */ + DefaultWorkflow: { + /** @description Whether a draft workflow scheme is created or updated when updating an active workflow scheme. The draft is updated with the new default workflow. Defaults to `false`. */ + updateDraftIfNeeded?: boolean; + /** @description The name of the workflow to set as the default workflow. */ + workflow: string; + }; + DeleteAndReplaceVersionBean: { + /** @description An array of custom field IDs (`customFieldId`) and version IDs (`moveTo`) to update when the fields contain the deleted version. */ + customFieldReplacementList?: components["schemas"]["CustomFieldReplacement"][]; + /** + * Format: int64 + * @description The ID of the version to update `affectedVersion` to when the field contains the deleted version. + */ + moveAffectedIssuesTo?: number; + /** + * Format: int64 + * @description The ID of the version to update `fixVersion` to when the field contains the deleted version. + */ + moveFixIssuesTo?: number; + }; + /** @description Details about a workflow. */ + DeprecatedWorkflow: { + default?: boolean; + /** @description The description of the workflow. */ + description?: string; + /** @description The datetime the workflow was last modified. */ + lastModifiedDate?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + lastModifiedUser?: string; + /** @description The account ID of the user that last modified the workflow. */ + lastModifiedUserAccountId?: string; + /** @description The name of the workflow. */ + name?: string; + /** @description The scope where this workflow applies */ + scope?: components["schemas"]["Scope"]; + /** + * Format: int32 + * @description The number of steps included in the workflow. + */ + steps?: number; + }; + DetailedErrorCollection: { + /** @description Map of objects representing additional details for an error */ + details?: { + [key: string]: unknown; + }; + /** @description The list of error messages produced by this operation. For example, "input parameter 'key' must be provided" */ + errorMessages?: string[]; + /** @description The list of errors by parameter returned by the operation. For example,"projectKey": "Project keys must start with an uppercase letter, followed by one or more uppercase alphanumeric characters." */ + errors?: { + [key: string]: string; + }; + }; + /** @description The current version details of this workflow scheme. */ + DocumentVersion: { + /** @description The version UUID. */ + id: string; + /** + * Format: int64 + * @description The version number. + */ + versionNumber: number; + }; + /** @description An entity property, for more information see [Entity properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/). */ + EntityProperty: { + /** @description The key of the property. Required on create and update. */ + key?: string; + /** @description The value of the property. Required on create and update. */ + value?: unknown; + }; + EntityPropertyDetails: { + /** + * @description The entity property ID. + * @example 123 + */ + entityId: number; + /** + * @description The entity property key. + * @example mykey + */ + key: string; + /** + * @description The new value of the entity property. + * @example newValue + */ + value: string; + }; + Error: { + /** Format: int64 */ + count?: number; + issueIdsOrKeys?: string[]; + message?: string; + }; + /** @description Error messages from an operation. */ + ErrorCollection: { + /** @description The list of error messages produced by this operation. For example, "input parameter 'key' must be provided" */ + errorMessages?: string[]; + /** @description The list of errors by parameter returned by the operation. For example,"projectKey": "Project keys must start with an uppercase letter, followed by one or more uppercase alphanumeric characters." */ + errors?: { + [key: string]: string; + }; + /** Format: int32 */ + status?: number; + }; + ErrorCollections: Record; + /** + * @example { + * "message": "The request is not from a Connect app." + * } + */ + ErrorMessage: { + /** @description The error message. */ + message: string; + }; + Errors: { + issueIsSubtask?: components["schemas"]["Error"]; + issuesInArchivedProjects?: components["schemas"]["Error"]; + issuesInUnlicensedProjects?: components["schemas"]["Error"]; + issuesNotFound?: components["schemas"]["Error"]; + }; + /** @description Details about a notification associated with an event. */ + EventNotification: { + /** @description The email address. */ + emailAddress?: string; + /** @description Expand options that include additional event notification details in the response. */ + expand?: string; + /** @description The custom user or group field. */ + field?: components["schemas"]["FieldDetails"]; + /** @description The specified group. */ + group?: components["schemas"]["GroupName"]; + /** + * Format: int64 + * @description The ID of the notification. + */ + id?: number; + /** + * @description Identifies the recipients of the notification. + * @enum {string} + */ + notificationType?: "CurrentAssignee" | "Reporter" | "CurrentUser" | "ProjectLead" | "ComponentLead" | "User" | "Group" | "ProjectRole" | "EmailAddress" | "AllWatchers" | "UserCustomField" | "GroupCustomField"; + /** + * @description As a group's name can change, use of `recipient` is recommended. The identifier associated with the `notificationType` value that defines the receiver of the notification, where the receiver isn't implied by `notificationType` value. So, when `notificationType` is: + * + * * `User` The `parameter` is the user account ID. + * * `Group` The `parameter` is the group name. + * * `ProjectRole` The `parameter` is the project role ID. + * * `UserCustomField` The `parameter` is the ID of the custom field. + * * `GroupCustomField` The `parameter` is the ID of the custom field. + */ + parameter?: string; + /** @description The specified project role. */ + projectRole?: components["schemas"]["ProjectRole"]; + /** + * @description The identifier associated with the `notificationType` value that defines the receiver of the notification, where the receiver isn't implied by the `notificationType` value. So, when `notificationType` is: + * + * * `User`, `recipient` is the user account ID. + * * `Group`, `recipient` is the group ID. + * * `ProjectRole`, `recipient` is the project role ID. + * * `UserCustomField`, `recipient` is the ID of the custom field. + * * `GroupCustomField`, `recipient` is the ID of the custom field. + */ + recipient?: string; + /** @description The specified user. */ + user?: components["schemas"]["UserDetails"]; + }; + /** @description The response for status request for a running/completed export task. */ + ExportArchivedIssuesTaskProgressResponse: { + fileUrl?: string; + payload?: string; + /** Format: int64 */ + progress?: number; + status?: string; + /** Format: date-time */ + submittedTime?: string; + taskId?: string; + }; + /** @description Details about a failed webhook. */ + FailedWebhook: { + /** @description The webhook body. */ + body?: string; + /** + * Format: int64 + * @description The time the webhook was added to the list of failed webhooks (that is, the time of the last failed retry). + */ + failureTime: number; + /** @description The webhook ID, as sent in the `X-Atlassian-Webhook-Identifier` header with the webhook. */ + id: string; + /** @description The original webhook destination. */ + url: string; + }; + /** @description A page of failed webhooks. */ + FailedWebhooks: { + /** + * Format: int32 + * @description The maximum number of items on the page. If the list of values is shorter than this number, then there are no more pages. + */ + maxResults: number; + /** + * Format: uri + * @description The URL to the next page of results. Present only if the request returned at least one result.The next page may be empty at the time of receiving the response, but new failed webhooks may appear in time. You can save the URL to the next page and query for new results periodically (for example, every hour). + */ + next?: string; + /** @description The list of webhooks. */ + values: components["schemas"]["FailedWebhook"][]; + }; + /** @description Details of a field. */ + Field: { + /** + * Format: int64 + * @description Number of contexts where the field is used. + */ + contextsCount?: number; + /** @description The description of the field. */ + description?: string; + /** @description The ID of the field. */ + id: string; + /** @description Whether the field is locked. */ + isLocked?: boolean; + /** @description Whether the field is shown on screen or not. */ + isUnscreenable?: boolean; + /** @description The key of the field. */ + key?: string; + lastUsed?: components["schemas"]["FieldLastUsed"]; + /** @description The name of the field. */ + name: string; + /** + * Format: int64 + * @description Number of projects where the field is used. + */ + projectsCount?: number; + schema: components["schemas"]["JsonTypeBean"]; + /** + * Format: int64 + * @description Number of screens where the field is used. + */ + screensCount?: number; + /** @description The searcher key of the field. Returned for custom fields. */ + searcherKey?: string; + }; + /** @description A clause that asserts whether a field was changed. For example, `status CHANGED AFTER startOfMonth(-1M)`.See [CHANGED](https://confluence.atlassian.com/x/dgiiLQ#Advancedsearching-operatorsreference-CHANGEDCHANGED) for more information about the CHANGED operator. */ + FieldChangedClause: { + field: components["schemas"]["JqlQueryField"]; + /** + * @description The operator applied to the field. + * @enum {string} + */ + operator: "changed"; + /** @description The list of time predicates. */ + predicates: components["schemas"]["JqlQueryClauseTimePredicate"][]; + }; + /** @description Details of a field configuration. */ + FieldConfiguration: { + /** @description The description of the field configuration. */ + description: string; + /** + * Format: int64 + * @description The ID of the field configuration. + */ + id: number; + /** @description Whether the field configuration is the default. */ + isDefault?: boolean; + /** @description The name of the field configuration. */ + name: string; + }; + /** @description Details of a field configuration. */ + FieldConfigurationDetails: { + /** @description The description of the field configuration. */ + description?: string; + /** @description The name of the field configuration. Must be unique. */ + name: string; + }; + /** @description The field configuration for an issue type. */ + FieldConfigurationIssueTypeItem: { + /** @description The ID of the field configuration. */ + fieldConfigurationId: string; + /** @description The ID of the field configuration scheme. */ + fieldConfigurationSchemeId: string; + /** @description The ID of the issue type or *default*. When set to *default* this field configuration issue type item applies to all issue types without a field configuration. */ + issueTypeId: string; + }; + /** @description A field within a field configuration. */ + FieldConfigurationItem: { + /** @description The description of the field within the field configuration. */ + description?: string; + /** @description The ID of the field within the field configuration. */ + id: string; + /** @description Whether the field is hidden in the field configuration. */ + isHidden?: boolean; + /** @description Whether the field is required in the field configuration. */ + isRequired?: boolean; + /** @description The renderer type for the field within the field configuration. */ + renderer?: string; + }; + /** @description Details of field configuration items. */ + FieldConfigurationItemsDetails: { + /** @description Details of fields in a field configuration. */ + fieldConfigurationItems: components["schemas"]["FieldConfigurationItem"][]; + }; + /** @description Details of a field configuration scheme. */ + FieldConfigurationScheme: { + /** @description The description of the field configuration scheme. */ + description?: string; + /** @description The ID of the field configuration scheme. */ + id: string; + /** @description The name of the field configuration scheme. */ + name: string; + }; + /** @description Associated field configuration scheme and project. */ + FieldConfigurationSchemeProjectAssociation: { + /** @description The ID of the field configuration scheme. If the field configuration scheme ID is `null`, the operation assigns the default field configuration scheme. */ + fieldConfigurationSchemeId?: string; + /** @description The ID of the project. */ + projectId: string; + }; + /** @description Project list with assigned field configuration schema. */ + FieldConfigurationSchemeProjects: { + fieldConfigurationScheme?: components["schemas"]["FieldConfigurationScheme"]; + /** @description The IDs of projects using the field configuration scheme. */ + projectIds: string[]; + }; + /** @description The field configuration to issue type mapping. */ + FieldConfigurationToIssueTypeMapping: { + /** @description The ID of the field configuration. */ + fieldConfigurationId: string; + /** @description The ID of the issue type or *default*. When set to *default* this field configuration issue type item applies to all issue types without a field configuration. An issue type can be included only once in a request. */ + issueTypeId: string; + }; + /** @description The metadata describing an issue field for createmeta. */ + FieldCreateMetadata: { + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description The field id. */ + fieldId: string; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The key of the field. */ + key: string; + /** @description The name of the field. */ + name: string; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: components["schemas"]["JsonTypeBean"]; + }; + /** @description Details about a field. */ + FieldDetails: { + /** @description The names that can be used to reference the field in an advanced search. For more information, see [Advanced searching - fields reference](https://confluence.atlassian.com/x/gwORLQ). */ + clauseNames?: string[]; + /** @description Whether the field is a custom field. */ + custom?: boolean; + /** @description The ID of the field. */ + id?: string; + /** @description The key of the field. */ + key?: string; + /** @description The name of the field. */ + name?: string; + /** @description Whether the field can be used as a column on the issue navigator. */ + navigable?: boolean; + /** @description Whether the content of the field can be used to order lists. */ + orderable?: boolean; + /** @description The data schema for the field. */ + schema?: components["schemas"]["JsonTypeBean"]; + /** @description The scope of the field. */ + scope?: components["schemas"]["Scope"]; + /** @description Whether the content of the field can be searched. */ + searchable?: boolean; + }; + /** @description Information about the most recent use of a field. */ + FieldLastUsed: { + /** + * @description Last used value type: + * + * * *TRACKED*: field is tracked and a last used date is available. + * * *NOT\_TRACKED*: field is not tracked, last used date is not available. + * * *NO\_INFORMATION*: field is tracked, but no last used date is available. + * @enum {string} + */ + type?: "TRACKED" | "NOT_TRACKED" | "NO_INFORMATION"; + /** + * Format: date-time + * @description The date when the value of the field last changed. + */ + value?: string; + }; + /** @description The metadata describing an issue field. */ + FieldMetadata: { + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The key of the field. */ + key: string; + /** @description The name of the field. */ + name: string; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: components["schemas"]["JsonTypeBean"]; + }; + /** @description Details of a field that can be used in advanced searches. */ + FieldReferenceData: { + /** + * @description Whether the field provide auto-complete suggestions. + * @enum {string} + */ + auto?: "true" | "false"; + /** @description If the item is a custom field, the ID of the custom field. */ + cfid?: string; + /** + * @description Whether this field has been deprecated. + * @enum {string} + */ + deprecated?: "true" | "false"; + /** @description The searcher key of the field, only passed when the field is deprecated. */ + deprecatedSearcherKey?: string; + /** + * @description The display name contains the following: + * + * * for system fields, the field name. For example, `Summary`. + * * for collapsed custom fields, the field name followed by a hyphen and then the field name and field type. For example, `Component - Component[Dropdown]`. + * * for other custom fields, the field name followed by a hyphen and then the custom field ID. For example, `Component - cf[10061]`. + */ + displayName?: string; + /** @description The valid search operators for the field. */ + operators?: string[]; + /** + * @description Whether the field can be used in a query's `ORDER BY` clause. + * @enum {string} + */ + orderable?: "true" | "false"; + /** + * @description Whether the content of this field can be searched. + * @enum {string} + */ + searchable?: "true" | "false"; + /** @description The data types of items in the field. */ + types?: string[]; + /** @description The field identifier. */ + value?: string; + }; + /** @description Details of an operation to perform on a field. */ + FieldUpdateOperation: { + /** + * @description The value to add to the field. + * @example triaged + */ + add?: unknown; + /** + * @description The field value to copy from another issue. + * @example { + * "issuelinks": { + * "sourceIssues": [ + * { + * "key": "FP-5" + * } + * ] + * } + * } + */ + copy?: unknown; + /** + * @description The value to edit in the field. + * @example { + * "originalEstimate": "1w 1d", + * "remainingEstimate": "4d" + * } + */ + edit?: unknown; + /** + * @description The value to removed from the field. + * @example blocker + */ + remove?: unknown; + /** + * @description The value to set in the field. + * @example A new summary + */ + set?: unknown; + }; + /** @description A clause that asserts the current value of a field. For example, `summary ~ test`. */ + FieldValueClause: { + field: components["schemas"]["JqlQueryField"]; + operand: components["schemas"]["JqlQueryClauseOperand"]; + /** + * @description The operator between the field and operand. + * @enum {string} + */ + operator: "=" | "!=" | ">" | "<" | ">=" | "<=" | "in" | "not in" | "~" | "~=" | "is" | "is not"; + }; + /** @description A clause that asserts a previous value of a field. For example, `status WAS "Resolved" BY currentUser() BEFORE "2019/02/02"`. See [WAS](https://confluence.atlassian.com/x/dgiiLQ#Advancedsearching-operatorsreference-WASWAS) for more information about the WAS operator. */ + FieldWasClause: { + field: components["schemas"]["JqlQueryField"]; + operand: components["schemas"]["JqlQueryClauseOperand"]; + /** + * @description The operator between the field and operand. + * @enum {string} + */ + operator: "was" | "was in" | "was not in" | "was not"; + /** @description The list of time predicates. */ + predicates: components["schemas"]["JqlQueryClauseTimePredicate"][]; + }; + /** @description Key fields from the linked issue. */ + Fields: { + /** @description The assignee of the linked issue. */ + assignee?: components["schemas"]["UserDetails"]; + /** @description The type of the linked issue. */ + issueType?: components["schemas"]["IssueTypeDetails"]; + /** @description The type of the linked issue. */ + issuetype?: components["schemas"]["IssueTypeDetails"]; + /** @description The priority of the linked issue. */ + priority?: components["schemas"]["Priority"]; + /** @description The status of the linked issue. */ + status?: components["schemas"]["StatusDetails"]; + /** @description The summary description of the linked issue. */ + summary?: string; + /** @description The time tracking of the linked issue. */ + timetracking?: components["schemas"]["TimeTrackingDetails"]; + }; + /** @description Details about a filter. */ + Filter: { + /** @description A description of the filter. */ + description?: string; + /** @description The groups and projects that can edit the filter. */ + editPermissions?: components["schemas"]["SharePermission"][]; + /** @description Whether the filter is selected as a favorite. */ + favourite?: boolean; + /** + * Format: int64 + * @description The count of how many users have selected this filter as a favorite, including the filter owner. + */ + favouritedCount?: number; + /** @description The unique identifier for the filter. */ + id?: string; + /** @description The JQL query for the filter. For example, *project = SSP AND issuetype = Bug*. */ + jql?: string; + /** @description The name of the filter. Must be unique. */ + name: string; + /** @description The user who owns the filter. This is defaulted to the creator of the filter, however Jira administrators can change the owner of a shared filter in the admin settings. */ + owner?: components["schemas"]["User"]; + /** + * Format: uri + * @description A URL to view the filter results in Jira, using the [Search for issues using JQL](#api-rest-api-3-filter-search-get) operation with the filter's JQL string to return the filter results. For example, *https://your-domain.atlassian.net/rest/api/3/search?jql=project+%3D+SSP+AND+issuetype+%3D+Bug*. + */ + searchUrl?: string; + /** + * Format: uri + * @description The URL of the filter. + */ + self?: string; + /** @description The groups and projects that the filter is shared with. */ + sharePermissions?: components["schemas"]["SharePermission"][]; + /** @description A paginated list of the users that the filter is shared with. This includes users that are members of the groups or can browse the projects that the filter is shared with. */ + sharedUsers?: components["schemas"]["UserList"]; + /** @description A paginated list of the users that are subscribed to the filter. */ + subscriptions?: components["schemas"]["FilterSubscriptionsList"]; + /** + * Format: uri + * @description A URL to view the filter results in Jira, using the ID of the filter. For example, *https://your-domain.atlassian.net/issues/?filter=10100*. + */ + viewUrl?: string; + }; + /** @description Details of a filter. */ + FilterDetails: { + /** @description The description of the filter. */ + description?: string; + /** @description The groups and projects that can edit the filter. This can be specified when updating a filter, but not when creating a filter. */ + editPermissions?: components["schemas"]["SharePermission"][]; + /** @description Expand options that include additional filter details in the response. */ + expand?: string; + /** @description Whether the filter is selected as a favorite by any users, not including the filter owner. */ + favourite?: boolean; + /** + * Format: int64 + * @description The count of how many users have selected this filter as a favorite, including the filter owner. + */ + favouritedCount?: number; + /** @description The unique identifier for the filter. */ + id?: string; + /** @description The JQL query for the filter. For example, *project = SSP AND issuetype = Bug*. */ + jql?: string; + /** @description The name of the filter. */ + name: string; + /** @description The user who owns the filter. Defaults to the creator of the filter, however, Jira administrators can change the owner of a shared filter in the admin settings. */ + owner?: components["schemas"]["User"]; + /** + * Format: uri + * @description A URL to view the filter results in Jira, using the [Search for issues using JQL](#api-rest-api-3-filter-search-get) operation with the filter's JQL string to return the filter results. For example, *https://your-domain.atlassian.net/rest/api/3/search?jql=project+%3D+SSP+AND+issuetype+%3D+Bug*. + */ + searchUrl?: string; + /** + * Format: uri + * @description The URL of the filter. + */ + self?: string; + /** @description The groups and projects that the filter is shared with. This can be specified when updating a filter, but not when creating a filter. */ + sharePermissions?: components["schemas"]["SharePermission"][]; + /** @description The users that are subscribed to the filter. */ + subscriptions?: readonly components["schemas"]["FilterSubscription"][]; + /** + * Format: uri + * @description A URL to view the filter results in Jira, using the ID of the filter. For example, *https://your-domain.atlassian.net/issues/?filter=10100*. + */ + viewUrl?: string; + }; + /** @description Details of a user or group subscribing to a filter. */ + FilterSubscription: { + /** @description The group subscribing to filter. */ + group?: components["schemas"]["GroupName"]; + /** + * Format: int64 + * @description The ID of the filter subscription. + */ + id?: number; + /** @description The user subscribing to filter. */ + user?: components["schemas"]["User"]; + }; + /** @description A paginated list of subscriptions to a filter. */ + FilterSubscriptionsList: { + /** + * Format: int32 + * @description The index of the last item returned on the page. + */ + "end-index"?: number; + /** @description The list of items. */ + items?: readonly components["schemas"]["FilterSubscription"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + "max-results"?: number; + /** + * Format: int32 + * @description The number of items on the page. + */ + size?: number; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + "start-index"?: number; + }; + /** @description A group found in a search. */ + FoundGroup: { + /** @description The ID of the group, which uniquely identifies the group across all Atlassian products. For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*. */ + groupId?: string; + /** @description The group name with the matched query string highlighted with the HTML bold tag. */ + html?: string; + labels?: components["schemas"]["GroupLabel"][]; + /** @description The name of the group. The name of a group is mutable, to reliably identify a group use ``groupId`.` */ + name?: string; + }; + /** @description The list of groups found in a search, including header text (Showing X of Y matching groups) and total of matched groups. */ + FoundGroups: { + groups?: components["schemas"]["FoundGroup"][]; + /** @description Header text indicating the number of groups in the response and the total number of groups found in the search. */ + header?: string; + /** + * Format: int32 + * @description The total number of groups found in the search. + */ + total?: number; + }; + /** @description The list of users found in a search, including header text (Showing X of Y matching users) and total of matched users. */ + FoundUsers: { + /** @description Header text indicating the number of users in the response and the total number of users found in the search. */ + header?: string; + /** + * Format: int32 + * @description The total number of users found in the search. + */ + total?: number; + users?: components["schemas"]["UserPickerUser"][]; + }; + /** @description List of users and groups found in a search. */ + FoundUsersAndGroups: { + groups?: components["schemas"]["FoundGroups"]; + users?: components["schemas"]["FoundUsers"]; + }; + /** @description An operand that is a function. See [Advanced searching - functions reference](https://confluence.atlassian.com/x/dwiiLQ) for more information about JQL functions. */ + FunctionOperand: { + /** @description The list of function arguments. */ + arguments: string[]; + /** @description Encoded operand, which can be used directly in a JQL query. */ + encodedOperand?: string; + /** @description The name of the function. */ + function: string; + }; + /** @description Details of functions that can be used in advanced searches. */ + FunctionReferenceData: { + /** @description The display name of the function. */ + displayName?: string; + /** + * @description Whether the function can take a list of arguments. + * @enum {string} + */ + isList?: "true" | "false"; + /** + * @description Whether the function supports both single and list value operators. + * @enum {string} + */ + supportsListAndSingleValueOperators?: "true" | "false"; + /** @description The data types returned by the function. */ + types?: string[]; + /** @description The function identifier. */ + value?: string; + }; + GlobalScopeBean: { + /** @description Defines the behavior of the option in the global context.If notSelectable is set, the option cannot be set as the field's value. This is useful for archiving an option that has previously been selected but shouldn't be used anymore.If defaultValue is set, the option is selected by default. */ + attributes?: ("notSelectable" | "defaultValue")[]; + }; + Group: { + /** @description Expand options that include additional group details in the response. */ + expand?: string; + /** @description The ID of the group, which uniquely identifies the group across all Atlassian products. For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*. */ + groupId?: string | null; + /** @description The name of group. */ + name?: string; + /** + * Format: uri + * @description The URL for these group details. + */ + self?: string; + /** @description A paginated list of the users that are members of the group. A maximum of 50 users is returned in the list, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 50 users, use`?expand=users[51:100]`. */ + users?: components["schemas"]["PagedListUserDetailsApplicationUser"]; + }; + /** @description Details about a group. */ + GroupDetails: { + /** @description The ID of the group, which uniquely identifies the group across all Atlassian products. For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*. */ + groupId?: string | null; + /** @description The name of the group. */ + name?: string; + }; + /** @description A group label. */ + GroupLabel: { + /** @description The group label name. */ + text?: string; + /** @description The title of the group label. */ + title?: string; + /** + * @description The type of the group label. + * @enum {string} + */ + type?: "ADMIN" | "SINGLE" | "MULTIPLE"; + }; + /** @description Details about a group. */ + GroupName: { + /** @description The ID of the group, which uniquely identifies the group across all Atlassian products. For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*. */ + groupId?: string | null; + /** @description The name of group. */ + name?: string; + /** + * Format: uri + * @description The URL for these group details. + */ + self?: string; + }; + /** @description Jira instance health check results. Deprecated and no longer returned. */ + HealthCheckResult: { + /** @description The description of the Jira health check item. */ + description?: string; + /** @description The name of the Jira health check item. */ + name?: string; + /** @description Whether the Jira health check item passed or failed. */ + passed?: boolean; + }; + /** @description The project issue type hierarchy. */ + Hierarchy: { + /** + * Format: int64 + * @description The ID of the base level. This property is deprecated, see [Change notice: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + baseLevelId?: number; + /** @description Details about the hierarchy level. */ + levels?: readonly components["schemas"]["SimplifiedHierarchyLevel"][]; + }; + /** @description Details of issue history metadata. */ + HistoryMetadata: { + /** @description The activity described in the history record. */ + activityDescription?: string; + /** @description The key of the activity described in the history record. */ + activityDescriptionKey?: string; + /** @description Details of the user whose action created the history record. */ + actor?: components["schemas"]["HistoryMetadataParticipant"]; + /** @description Details of the cause that triggered the creation the history record. */ + cause?: components["schemas"]["HistoryMetadataParticipant"]; + /** @description The description of the history record. */ + description?: string; + /** @description The description key of the history record. */ + descriptionKey?: string; + /** @description The description of the email address associated the history record. */ + emailDescription?: string; + /** @description The description key of the email address associated the history record. */ + emailDescriptionKey?: string; + /** @description Additional arbitrary information about the history record. */ + extraData?: { + [key: string]: string; + }; + /** @description Details of the system that generated the history record. */ + generator?: components["schemas"]["HistoryMetadataParticipant"]; + /** @description The type of the history record. */ + type?: string; + [key: string]: unknown; + }; + /** @description Details of user or system associated with a issue history metadata item. */ + HistoryMetadataParticipant: { + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** + * @description An icon. If no icon is defined: + * + * * for a status icon, no status icon displays in Jira. + * * for the remote object icon, the default link icon displays in Jira. + */ + Icon: { + /** @description The URL of the tooltip, used only for a status icon. If not set, the status icon in Jira is not clickable. */ + link?: string; + /** + * @description The title of the icon. This is used as follows: + * + * * For a status icon it is used as a tooltip on the icon. If not set, the status icon doesn't display a tooltip in Jira. + * * For the remote object icon it is used in conjunction with the application name to display a tooltip for the link's icon. The tooltip takes the format "\[application name\] icon title". Blank itemsare excluded from the tooltip title. If both items are blank, the icon tooltop displays as "Web Link". + */ + title?: string; + /** @description The URL of an icon that displays at 16x16 pixel in Jira. */ + url16x16?: string; + [key: string]: unknown; + }; + /** @description An icon. */ + IconBean: { + /** @description The URL of the tooltip, used only for a status icon. */ + link?: string; + /** @description The title of the icon, for use as a tooltip on the icon. */ + title?: string; + /** @description The URL of a 16x16 pixel icon. */ + url16x16?: string; + }; + IdBean: { + /** + * Format: int64 + * @description The ID of the permission scheme to associate with the project. Use the [Get all permission schemes](#api-rest-api-3-permissionscheme-get) resource to get a list of permission scheme IDs. + */ + id: number; + }; + IdOrKeyBean: { + /** + * Format: int64 + * @description The ID of the referenced item. + */ + id?: number; + /** @description The key of the referenced item. */ + key?: string; + }; + IncludedFields: { + actuallyIncluded?: string[]; + excluded?: string[]; + included?: string[]; + }; + InputStreamSource: { + inputStream?: Record; + }; + /** @description List of Issue Ids Or Keys that are to be archived or unarchived */ + IssueArchivalSyncRequest: { + issueIdsOrKeys?: string[]; + }; + /** @description Number of archived/unarchived issues and list of errors that occurred during the action, if any. */ + IssueArchivalSyncResponse: { + errors?: components["schemas"]["Errors"]; + /** Format: int64 */ + numberOfIssuesUpdated?: number; + }; + /** @description Details about an issue. */ + IssueBean: { + /** @description Details of changelogs associated with the issue. */ + changelog?: components["schemas"]["PageOfChangelogs"]; + /** @description The metadata for the fields on the issue that can be amended. */ + editmeta?: components["schemas"]["IssueUpdateMetadata"]; + /** @description Expand options that include additional issue details in the response. */ + expand?: string; + fields?: { + [key: string]: unknown; + }; + fieldsToInclude?: components["schemas"]["IncludedFields"]; + /** @description The ID of the issue. */ + id?: string; + /** @description The key of the issue. */ + key?: string; + /** @description The ID and name of each field present on the issue. */ + names?: { + [key: string]: string; + }; + /** @description The operations that can be performed on the issue. */ + operations?: components["schemas"]["Operations"]; + /** @description Details of the issue properties identified in the request. */ + properties?: { + [key: string]: unknown; + }; + /** @description The rendered value of each field present on the issue. */ + renderedFields?: { + [key: string]: unknown; + }; + /** @description The schema describing each field present on the issue. */ + schema?: { + [key: string]: components["schemas"]["JsonTypeBean"]; + }; + /** + * Format: uri + * @description The URL of the issue details. + */ + self?: string; + /** @description The transitions that can be performed on the issue. */ + transitions?: readonly components["schemas"]["IssueTransition"][]; + /** @description The versions of each field on the issue. */ + versionedRepresentations?: { + [key: string]: { + [key: string]: unknown; + }; + }; + }; + /** @description A list of changelog IDs. */ + IssueChangelogIds: { + /** @description The list of changelog IDs. */ + changelogIds: number[]; + }; + IssueCommentListRequestBean: { + /** @description The list of comment IDs. A maximum of 1000 IDs can be specified. */ + ids: number[]; + }; + /** @description 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. */ + IssueContextVariable: { + /** + * Format: int64 + * @description The issue ID. + */ + id?: number; + /** @description The issue key. */ + key?: string; + /** @description Type of custom context variable. */ + type: string; + }; + /** @description The wrapper for the issue creation metadata for a list of projects. */ + IssueCreateMetadata: { + /** @description Expand options that include additional project details in the response. */ + expand?: string; + /** @description List of projects and their issue creation metadata. */ + projects?: readonly components["schemas"]["ProjectIssueCreateMetadata"][]; + }; + /** @description Lists of issues and entity properties. See [Entity properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/) for more information. */ + IssueEntityProperties: { + /** @description A list of entity property IDs. */ + entitiesIds?: number[]; + /** @description A list of entity property keys and values. */ + properties?: { + [key: string]: components["schemas"]["JsonNode"]; + }; + }; + /** @description An issue ID with entity property values. See [Entity properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/) for more information. */ + IssueEntityPropertiesForMultiUpdate: { + /** + * Format: int64 + * @description The ID of the issue. + */ + issueID?: number; + /** @description Entity properties to set on the issue. The maximum length of an issue property value is 32768 characters. */ + properties?: { + [key: string]: components["schemas"]["JsonNode"]; + }; + }; + /** @description Details about an issue event. */ + IssueEvent: { + /** + * Format: int64 + * @description The ID of the event. + */ + id?: number; + /** @description The name of the event. */ + name?: string; + }; + /** @description Details of the options for a select list issue field. */ + IssueFieldOption: { + config?: components["schemas"]["IssueFieldOptionConfiguration"]; + /** + * Format: int64 + * @description The unique identifier for the option. This is only unique within the select field's set of options. + */ + id: number; + /** @description The properties of the object, as arbitrary key-value pairs. These properties can be searched using JQL, if the extractions (see [Issue Field Option Property Index](https://developer.atlassian.com/cloud/jira/platform/modules/issue-field-option-property-index/)) are defined in the descriptor for the issue field module. */ + properties?: { + [key: string]: unknown; + }; + /** @description The option's name, which is displayed in Jira. */ + value: string; + }; + /** @description Details of the projects the option is available in. */ + IssueFieldOptionConfiguration: { + /** @description DEPRECATED */ + attributes?: ("notSelectable" | "defaultValue")[]; + /** @description Defines the projects that the option is available in. If the scope is not defined, then the option is available in all projects. */ + scope?: components["schemas"]["IssueFieldOptionScopeBean"]; + }; + IssueFieldOptionCreateBean: { + config?: components["schemas"]["IssueFieldOptionConfiguration"]; + /** @description The properties of the option as arbitrary key-value pairs. These properties can be searched using JQL, if the extractions (see https://developer.atlassian.com/cloud/jira/platform/modules/issue-field-option-property-index/) are defined in the descriptor for the issue field module. */ + properties?: { + [key: string]: unknown; + }; + /** @description The option's name, which is displayed in Jira. */ + value: string; + [key: string]: unknown; + }; + IssueFieldOptionScopeBean: { + /** @description Defines the behavior of the option within the global context. If this property is set, even if set to an empty object, then the option is available in all projects. */ + global?: components["schemas"]["GlobalScopeBean"]; + /** @description DEPRECATED */ + projects?: number[]; + /** @description Defines the projects in which the option is available and the behavior of the option within each project. Specify one object per project. The behavior of the option in a project context overrides the behavior in the global context. */ + projects2?: components["schemas"]["ProjectScopeBean"][]; + }; + /** @description Bulk operation filter details. */ + IssueFilterForBulkPropertyDelete: { + /** @description The value of properties to perform the bulk operation on. */ + currentValue?: unknown; + /** @description List of issues to perform the bulk delete operation on. */ + entityIds?: number[]; + }; + /** @description Bulk operation filter details. */ + IssueFilterForBulkPropertySet: { + /** @description The value of properties to perform the bulk operation on. */ + currentValue?: unknown; + /** @description List of issues to perform the bulk operation on. */ + entityIds?: number[]; + /** @description Whether the bulk operation occurs only when the property is present on or absent from an issue. */ + hasProperty?: boolean; + }; + /** @description Details of a link between issues. */ + IssueLink: { + /** @description The ID of the issue link. */ + id?: string; + /** @description Provides details about the linked issue. If presenting this link in a user interface, use the `inward` field of the issue link type to label the link. */ + inwardIssue: components["schemas"]["LinkedIssue"]; + /** @description Provides details about the linked issue. If presenting this link in a user interface, use the `outward` field of the issue link type to label the link. */ + outwardIssue: components["schemas"]["LinkedIssue"]; + /** + * Format: uri + * @description The URL of the issue link. + */ + self?: string; + /** @description The type of link between the issues. */ + type: components["schemas"]["IssueLinkType"]; + }; + /** + * @description This object is used as follows: + * + * * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it defines and reports on the type of link between the issues. Find a list of issue link types with [Get issue link types](#api-rest-api-3-issueLinkType-get). + * * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it defines and reports on issue link types. + */ + IssueLinkType: { + /** + * @description The ID of the issue link type and is used as follows: + * + * * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is the type of issue link. Required on create when `name` isn't provided. Otherwise, read only. + * * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is read only. + */ + id?: string; + /** + * @description The description of the issue link type inward link and is used as follows: + * + * * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is read only. + * * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is required on create and optional on update. Otherwise, read only. + */ + inward?: string; + /** + * @description The name of the issue link type and is used as follows: + * + * * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is the type of issue link. Required on create when `id` isn't provided. Otherwise, read only. + * * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is required on create and optional on update. Otherwise, read only. + */ + name?: string; + /** + * @description The description of the issue link type outward link and is used as follows: + * + * * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is read only. + * * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is required on create and optional on update. Otherwise, read only. + */ + outward?: string; + /** + * Format: uri + * @description The URL of the issue link type. Read only. + */ + self?: string; + }; + /** @description A list of issue link type beans. */ + IssueLinkTypes: { + /** @description The issue link type bean. */ + issueLinkTypes?: readonly components["schemas"]["IssueLinkType"][]; + }; + /** @description A list of issue IDs. */ + IssueList: { + /** @description The list of issue IDs. */ + issueIds: string[]; + }; + /** @description A list of matched issues or errors for each JQL query, in the order the JQL queries were passed. */ + IssueMatches: { + matches: components["schemas"]["IssueMatchesForJQL"][]; + }; + /** @description A list of the issues matched to a JQL query or details of errors encountered during matching. */ + IssueMatchesForJQL: { + /** @description A list of errors. */ + errors: string[]; + /** @description A list of issue IDs. */ + matchedIssues: number[]; + }; + /** @description A list of issues suggested for use in auto-completion. */ + IssuePickerSuggestions: { + /** @description A list of issues for an issue type suggested for use in auto-completion. */ + sections?: readonly components["schemas"]["IssuePickerSuggestionsIssueType"][]; + }; + /** @description A type of issue suggested for use in auto-completion. */ + IssuePickerSuggestionsIssueType: { + /** @description The ID of the type of issues suggested for use in auto-completion. */ + id?: string; + /** @description A list of issues suggested for use in auto-completion. */ + issues?: readonly components["schemas"]["SuggestedIssue"][]; + /** @description The label of the type of issues suggested for use in auto-completion. */ + label?: string; + /** @description If no issue suggestions are found, returns a message indicating no suggestions were found, */ + msg?: string; + /** @description If issue suggestions are found, returns a message indicating the number of issues suggestions found and returned. */ + sub?: string; + }; + /** @description Issue security level member. */ + IssueSecurityLevelMember: { + /** @description The user or group being granted the permission. It consists of a `type` and a type-dependent `parameter`. See [Holder object](../api-group-permission-schemes/#holder-object) in *Get all permission schemes* for more information. */ + holder: components["schemas"]["PermissionHolder"]; + /** + * Format: int64 + * @description The ID of the issue security level member. + */ + id: number; + /** + * Format: int64 + * @description The ID of the issue security level. + */ + issueSecurityLevelId: number; + managed?: boolean; + }; + /** @description Details about an project using security scheme mapping. */ + IssueSecuritySchemeToProjectMapping: { + issueSecuritySchemeId?: string; + projectId?: string; + [key: string]: unknown; + }; + /** @description Details of an issue transition. */ + IssueTransition: { + /** @description Expand options that include additional transition details in the response. */ + expand?: string; + /** @description Details of the fields associated with the issue transition screen. Use this information to populate `fields` and `update` in a transition request. */ + fields?: { + [key: string]: components["schemas"]["FieldMetadata"]; + }; + /** @description Whether there is a screen associated with the issue transition. */ + hasScreen?: boolean; + /** @description The ID of the issue transition. Required when specifying a transition to undertake. */ + id?: string; + /** @description Whether the transition is available to be performed. */ + isAvailable?: boolean; + /** @description Whether the issue has to meet criteria before the issue transition is applied. */ + isConditional?: boolean; + /** @description Whether the issue transition is global, that is, the transition is applied to issues regardless of their status. */ + isGlobal?: boolean; + /** @description Whether this is the initial issue transition for the workflow. */ + isInitial?: boolean; + looped?: boolean; + /** @description The name of the issue transition. */ + name?: string; + /** @description Details of the issue status after the transition. */ + to?: components["schemas"]["StatusDetails"]; + [key: string]: unknown; + }; + IssueTypeCreateBean: { + /** @description The description of the issue type. */ + description?: string; + /** + * Format: int32 + * @description The hierarchy level of the issue type. Use: + * + * * `-1` for Subtask. + * * `0` for Base. + * + * Defaults to `0`. + */ + hierarchyLevel?: number; + /** @description The unique name for the issue type. The maximum length is 60 characters. */ + name: string; + /** + * @description Deprecated. Use `hierarchyLevel` instead. See the [deprecation notice](https://community.developer.atlassian.com/t/deprecation-of-the-epic-link-parent-link-and-other-related-fields-in-rest-apis-and-webhooks/54048) for details. + * + * Whether the issue type is `subtype` or `standard`. Defaults to `standard`. + * @enum {string} + */ + type?: "subtask" | "standard"; + }; + /** @description Details about an issue type. */ + IssueTypeDetails: { + /** + * Format: int64 + * @description The ID of the issue type's avatar. + */ + avatarId?: number; + /** @description The description of the issue type. */ + description?: string; + /** + * Format: uuid + * @description Unique ID for next-gen projects. + */ + entityId?: string; + /** + * Format: int32 + * @description Hierarchy level of the issue type. + */ + hierarchyLevel?: number; + /** @description The URL of the issue type's avatar. */ + iconUrl?: string; + /** @description The ID of the issue type. */ + id?: string; + /** @description The name of the issue type. */ + name?: string; + /** @description Details of the next-gen projects the issue type is available in. */ + scope?: components["schemas"]["Scope"]; + /** @description The URL of these issue type details. */ + self?: string; + /** @description Whether this issue type is used to create subtasks. */ + subtask?: boolean; + }; + /** @description The list of issue type IDs. */ + IssueTypeIds: { + /** @description The list of issue type IDs. */ + issueTypeIds: string[]; + }; + /** @description The list of issue type IDs to be removed from the field configuration scheme. */ + IssueTypeIdsToRemove: { + /** @description The list of issue type IDs. Must contain unique values not longer than 255 characters and not be empty. Maximum of 100 IDs. */ + issueTypeIds: string[]; + }; + /** @description Details of an issue type. */ + IssueTypeInfo: { + /** + * Format: int64 + * @description The avatar of the issue type. + */ + avatarId?: number; + /** + * Format: int64 + * @description The ID of the issue type. + */ + id?: number; + /** @description The name of the issue type. */ + name?: string; + }; + /** @description Details of the issue creation metadata for an issue type. */ + IssueTypeIssueCreateMetadata: { + /** + * Format: int64 + * @description The ID of the issue type's avatar. + */ + avatarId?: number; + /** @description The description of the issue type. */ + description?: string; + /** + * Format: uuid + * @description Unique ID for next-gen projects. + */ + entityId?: string; + /** @description Expand options that include additional issue type metadata details in the response. */ + expand?: string; + /** @description List of the fields available when creating an issue for the issue type. */ + fields?: { + [key: string]: components["schemas"]["FieldMetadata"]; + }; + /** + * Format: int32 + * @description Hierarchy level of the issue type. + */ + hierarchyLevel?: number; + /** @description The URL of the issue type's avatar. */ + iconUrl?: string; + /** @description The ID of the issue type. */ + id?: string; + /** @description The name of the issue type. */ + name?: string; + /** @description Details of the next-gen projects the issue type is available in. */ + scope?: components["schemas"]["Scope"]; + /** @description The URL of these issue type details. */ + self?: string; + /** @description Whether this issue type is used to create subtasks. */ + subtask?: boolean; + }; + /** @description Details of an issue type scheme. */ + IssueTypeScheme: { + /** @description The ID of the default issue type of the issue type scheme. */ + defaultIssueTypeId?: string; + /** @description The description of the issue type scheme. */ + description?: string; + /** @description The ID of the issue type scheme. */ + id: string; + /** @description Whether the issue type scheme is the default. */ + isDefault?: boolean; + /** @description The name of the issue type scheme. */ + name: string; + }; + /** @description Details of an issue type scheme and its associated issue types. */ + IssueTypeSchemeDetails: { + /** @description The ID of the default issue type of the issue type scheme. This ID must be included in `issueTypeIds`. */ + defaultIssueTypeId?: string; + /** @description The description of the issue type scheme. The maximum length is 4000 characters. */ + description?: string; + /** @description The list of issue types IDs of the issue type scheme. At least one standard issue type ID is required. */ + issueTypeIds: string[]; + /** @description The name of the issue type scheme. The name must be unique. The maximum length is 255 characters. */ + name: string; + }; + /** @description The ID of an issue type scheme. */ + IssueTypeSchemeID: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: string; + }; + /** @description Issue type scheme item. */ + IssueTypeSchemeMapping: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: string; + }; + /** @description Details of the association between an issue type scheme and project. */ + IssueTypeSchemeProjectAssociation: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: string; + /** @description The ID of the project. */ + projectId: string; + }; + /** @description Issue type scheme with a list of the projects that use it. */ + IssueTypeSchemeProjects: { + /** @description Details of an issue type scheme. */ + issueTypeScheme: components["schemas"]["IssueTypeScheme"]; + /** @description The IDs of the projects using the issue type scheme. */ + projectIds: string[]; + }; + /** @description Details of the name, description, and default issue type for an issue type scheme. */ + IssueTypeSchemeUpdateDetails: { + /** @description The ID of the default issue type of the issue type scheme. */ + defaultIssueTypeId?: string; + /** @description The description of the issue type scheme. The maximum length is 4000 characters. */ + description?: string; + /** @description The name of the issue type scheme. The name must be unique. The maximum length is 255 characters. */ + name?: string; + }; + /** @description Details of an issue type screen scheme. */ + IssueTypeScreenScheme: { + /** @description The description of the issue type screen scheme. */ + description?: string; + /** @description The ID of the issue type screen scheme. */ + id: string; + /** @description The name of the issue type screen scheme. */ + name: string; + }; + /** @description The details of an issue type screen scheme. */ + IssueTypeScreenSchemeDetails: { + /** @description The description of the issue type screen scheme. The maximum length is 255 characters. */ + description?: string; + /** @description The IDs of the screen schemes for the issue type IDs and *default*. A *default* entry is required to create an issue type screen scheme, it defines the mapping for all issue types without a screen scheme. */ + issueTypeMappings: components["schemas"]["IssueTypeScreenSchemeMapping"][]; + /** @description The name of the issue type screen scheme. The name must be unique. The maximum length is 255 characters. */ + name: string; + }; + /** @description The ID of an issue type screen scheme. */ + IssueTypeScreenSchemeId: { + /** @description The ID of the issue type screen scheme. */ + id: string; + }; + /** @description The screen scheme for an issue type. */ + IssueTypeScreenSchemeItem: { + /** @description The ID of the issue type or *default*. Only issue types used in classic projects are accepted. When creating an issue screen scheme, an entry for *default* must be provided and defines the mapping for all issue types without a screen scheme. Otherwise, a *default* entry can't be provided. */ + issueTypeId: string; + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: string; + /** @description The ID of the screen scheme. */ + screenSchemeId: string; + }; + /** @description The IDs of the screen schemes for the issue type IDs. */ + IssueTypeScreenSchemeMapping: { + /** @description The ID of the issue type or *default*. Only issue types used in classic projects are accepted. An entry for *default* must be provided and defines the mapping for all issue types without a screen scheme. */ + issueTypeId: string; + /** @description The ID of the screen scheme. Only screen schemes used in classic projects are accepted. */ + screenSchemeId: string; + }; + /** @description A list of issue type screen scheme mappings. */ + IssueTypeScreenSchemeMappingDetails: { + /** @description The list of issue type to screen scheme mappings. A *default* entry cannot be specified because a default entry is added when an issue type screen scheme is created. */ + issueTypeMappings: components["schemas"]["IssueTypeScreenSchemeMapping"][]; + }; + /** @description Associated issue type screen scheme and project. */ + IssueTypeScreenSchemeProjectAssociation: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId?: string; + /** @description The ID of the project. */ + projectId?: string; + }; + /** @description Details of an issue type screen scheme. */ + IssueTypeScreenSchemeUpdateDetails: { + /** @description The description of the issue type screen scheme. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the issue type screen scheme. The name must be unique. The maximum length is 255 characters. */ + name?: string; + }; + /** @description Issue type screen scheme with a list of the projects that use it. */ + IssueTypeScreenSchemesProjects: { + /** @description Details of an issue type screen scheme. */ + issueTypeScreenScheme: components["schemas"]["IssueTypeScreenScheme"]; + /** @description The IDs of the projects using the issue type screen scheme. */ + projectIds: string[]; + }; + /** @description Mapping of an issue type to a context. */ + IssueTypeToContextMapping: { + /** @description The ID of the context. */ + contextId: string; + /** @description Whether the context is mapped to any issue type. */ + isAnyIssueType?: boolean; + /** @description The ID of the issue type. */ + issueTypeId?: string; + }; + IssueTypeUpdateBean: { + /** + * Format: int64 + * @description The ID of an issue type avatar. + */ + avatarId?: number; + /** @description The description of the issue type. */ + description?: string; + /** @description The unique name for the issue type. The maximum length is 60 characters. */ + name?: string; + }; + /** @description Status details for an issue type. */ + IssueTypeWithStatus: { + /** @description The ID of the issue type. */ + id: string; + /** @description The name of the issue type. */ + name: string; + /** @description The URL of the issue type's status details. */ + self: string; + /** @description List of status details for the issue type. */ + statuses: readonly components["schemas"]["StatusDetails"][]; + /** @description Whether this issue type represents subtasks. */ + subtask: boolean; + }; + /** @description Details about the mapping between an issue type and a workflow. */ + IssueTypeWorkflowMapping: { + /** @description The ID of the issue type. Not required if updating the issue type-workflow mapping. */ + issueType?: string; + /** @description Set to true to create or update the draft of a workflow scheme and update the mapping in the draft, when the workflow scheme cannot be edited. Defaults to `false`. Only applicable when updating the workflow-issue types mapping. */ + updateDraftIfNeeded?: boolean; + /** @description The name of the workflow. */ + workflow?: string; + }; + /** @description Details about the mapping between issue types and a workflow. */ + IssueTypesWorkflowMapping: { + /** @description Whether the workflow is the default workflow for the workflow scheme. */ + defaultMapping?: boolean; + /** @description The list of issue type IDs. */ + issueTypes?: string[]; + /** @description Whether a draft workflow scheme is created or updated when updating an active workflow scheme. The draft is updated with the new workflow-issue types mapping. Defaults to `false`. */ + updateDraftIfNeeded?: boolean; + /** @description The name of the workflow. Optional if updating the workflow-issue types mapping. */ + workflow?: string; + }; + /** @description Details of an issue update request. */ + IssueUpdateDetails: { + /** @description List of issue screen fields to update, specifying the sub-field to update and its value for each field. This field provides a straightforward option when setting a sub-field. When multiple sub-fields or other operations are required, use `update`. Fields included in here cannot be included in `update`. */ + fields?: { + [key: string]: unknown; + }; + /** @description Additional issue history details. */ + historyMetadata?: components["schemas"]["HistoryMetadata"]; + /** @description Details of issue properties to be add or update. */ + properties?: components["schemas"]["EntityProperty"][]; + /** @description Details of a transition. Required when performing a transition, optional when creating or editing an issue. */ + transition?: components["schemas"]["IssueTransition"]; + /** @description A Map containing the field field name and a list of operations to perform on the issue screen field. Note that fields included in here cannot be included in `fields`. */ + update?: { + [key: string]: components["schemas"]["FieldUpdateOperation"][]; + }; + [key: string]: unknown; + }; + /** @description A list of editable field details. */ + IssueUpdateMetadata: { + fields?: { + [key: string]: components["schemas"]["FieldMetadata"]; + }; + }; + /** @description List of issues and JQL queries. */ + IssuesAndJQLQueries: { + /** @description A list of issue IDs. */ + issueIds: number[]; + /** @description A list of JQL queries. */ + jqls: string[]; + }; + /** @description The description of the page of issues loaded by the provided JQL query. */ + IssuesJqlMetaDataBean: { + /** + * Format: int32 + * @description The number of issues that were loaded in this evaluation. + */ + count: number; + /** + * Format: int32 + * @description The maximum number of issues that could be loaded in this evaluation. + */ + maxResults: number; + /** + * Format: int64 + * @description The index of the first issue. + */ + startAt: number; + /** + * Format: int64 + * @description The total number of issues the JQL returned. + */ + totalCount: number; + /** @description Any warnings related to the JQL query. Present only if the validation mode was set to `warn`. */ + validationWarnings?: string[]; + }; + /** @description Meta data describing the `issues` context variable. */ + IssuesMetaBean: { + jql?: components["schemas"]["IssuesJqlMetaDataBean"]; + }; + IssuesUpdateBean: { + issueUpdates?: components["schemas"]["IssueUpdateDetails"][]; + [key: string]: unknown; + }; + /** @description The JQL queries to be converted. */ + JQLPersonalDataMigrationRequest: { + /** @description A list of queries with user identifiers. Maximum of 100 queries. */ + queryStrings?: string[]; + }; + /** @description JQL queries that contained users that could not be found */ + JQLQueryWithUnknownUsers: { + /** @description The converted query, with accountIDs instead of user identifiers, or 'unknown' for users that could not be found */ + convertedQuery?: string; + /** @description The original query, for reference */ + originalQuery?: string; + }; + /** @description Lists of JQL reference data. */ + JQLReferenceData: { + /** @description List of JQL query reserved words. */ + jqlReservedWords?: string[]; + /** @description List of fields usable in JQL queries. */ + visibleFieldNames?: components["schemas"]["FieldReferenceData"][]; + /** @description List of functions usable in JQL queries. */ + visibleFunctionNames?: components["schemas"]["FunctionReferenceData"][]; + }; + /** @description The JQL specifying the issues available in the evaluated Jira expression under the `issues` context variable. */ + JexpIssues: { + /** @description The JQL query that specifies the set of issues available in the Jira expression. */ + jql?: components["schemas"]["JexpJqlIssues"]; + }; + /** @description The JQL specifying the issues available in the evaluated Jira expression under the `issues` context variable. Not all issues returned by the JQL query are loaded, only those described by the `startAt` and `maxResults` properties. To determine whether it is necessary to iterate to ensure all the issues returned by the JQL query are evaluated, inspect `meta.issues.jql.count` in the response. */ + JexpJqlIssues: { + /** + * Format: int32 + * @description The maximum number of issues to return from the JQL query. Inspect `meta.issues.jql.maxResults` in the response to ensure the maximum value has not been exceeded. + */ + maxResults?: number; + /** @description The JQL query. */ + query?: string; + /** + * Format: int64 + * @description The index of the first issue to return from the JQL query. + */ + startAt?: number; + /** + * @description Determines how to validate the JQL query and treat the validation results. + * @default strict + * @enum {string} + */ + validation?: "strict" | "warn" | "none"; + }; + /** @description Details about the analysed Jira expression. */ + JiraExpressionAnalysis: { + complexity?: components["schemas"]["JiraExpressionComplexity"]; + /** @description A list of validation errors. Not included if the expression is valid. */ + errors?: components["schemas"]["JiraExpressionValidationError"][]; + /** @description The analysed expression. */ + expression: string; + /** @description EXPERIMENTAL. The inferred type of the expression. */ + type?: string; + /** @description Whether the expression is valid and the interpreter will evaluate it. Note that the expression may fail at runtime (for example, if it executes too many expensive operations). */ + valid: boolean; + }; + /** @description Details about the complexity of the analysed Jira expression. */ + JiraExpressionComplexity: { + /** + * @description Information that can be used to determine how many [expensive operations](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#expensive-operations) the evaluation of the expression will perform. This information may be a formula or number. For example: + * + * * `issues.map(i => i.comments)` performs as many expensive operations as there are issues on the issues list. So this parameter returns `N`, where `N` is the size of issue list. + * * `new Issue(10010).comments` gets comments for one issue, so its complexity is `2` (`1` to retrieve issue 10010 from the database plus `1` to get its comments). + */ + expensiveOperations: string; + /** @description Variables used in the formula, mapped to the parts of the expression they refer to. */ + variables?: { + [key: string]: string; + }; + }; + JiraExpressionEvalContextBean: { + /** + * Format: int64 + * @description The ID of the board that is available under the `board` variable when evaluating the expression. + */ + board?: number; + /** + * @description Custom context variables and their types. 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. + */ + custom?: components["schemas"]["CustomContextVariable"][]; + /** + * Format: int64 + * @description The ID of the customer request that is available under the `customerRequest` variable when evaluating the expression. This is the same as the ID of the underlying Jira issue, but the customer request context variable will have a different type. + */ + customerRequest?: number; + /** @description The issue that is available under the `issue` variable when evaluating the expression. */ + issue?: components["schemas"]["IdOrKeyBean"]; + /** @description The collection of issues that is available under the `issues` variable when evaluating the expression. */ + issues?: components["schemas"]["JexpIssues"]; + /** @description The project that is available under the `project` variable when evaluating the expression. */ + project?: components["schemas"]["IdOrKeyBean"]; + /** + * Format: int64 + * @description The ID of the service desk that is available under the `serviceDesk` variable when evaluating the expression. + */ + serviceDesk?: number; + /** + * Format: int64 + * @description The ID of the sprint that is available under the `sprint` variable when evaluating the expression. + */ + sprint?: number; + }; + JiraExpressionEvalRequestBean: { + /** @description The context in which the Jira expression is evaluated. */ + context?: components["schemas"]["JiraExpressionEvalContextBean"]; + /** + * @description The Jira expression to evaluate. + * @example { key: issue.key, type: issue.issueType.name, links: issue.links.map(link => link.linkedIssue.id) } + */ + expression: string; + }; + JiraExpressionEvaluationMetaDataBean: { + /** @description Contains information about the expression complexity. For example, the number of steps it took to evaluate the expression. */ + complexity?: components["schemas"]["JiraExpressionsComplexityBean"]; + /** @description Contains information about the `issues` variable in the context. For example, is the issues were loaded with JQL, information about the page will be included here. */ + issues?: components["schemas"]["IssuesMetaBean"]; + }; + /** @description Details of Jira expressions for analysis. */ + JiraExpressionForAnalysis: { + /** @description Context variables and their types. The type checker assumes that [common context variables](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#context-variables), such as `issue` or `project`, are available in context and sets their type. Use this property to override the default types or provide details of new variables. */ + contextVariables?: { + [key: string]: string; + }; + /** + * @description The list of Jira expressions to analyse. + * @example issues.map(issue => issue.properties['property_key']) + */ + expressions: string[]; + }; + /** @description The result of evaluating a Jira expression. */ + JiraExpressionResult: { + /** @description Contains various characteristics of the performed expression evaluation. */ + meta?: components["schemas"]["JiraExpressionEvaluationMetaDataBean"]; + /** @description The value of the evaluated expression. It may be a primitive JSON value or a Jira REST API object. (Some expressions do not produce any meaningful results—for example, an expression that returns a lambda function—if that's the case a simple string representation is returned. These string representations should not be relied upon and may change without notice.) */ + value: unknown; + }; + /** + * @description Details about syntax and type errors. The error details apply to the entire expression, unless the object includes: + * + * * `line` and `column` + * * `expression` + */ + JiraExpressionValidationError: { + /** + * Format: int32 + * @description The text column in which the error occurred. + */ + column?: number; + /** @description The part of the expression in which the error occurred. */ + expression?: string; + /** + * Format: int32 + * @description The text line in which the error occurred. + */ + line?: number; + /** + * @description Details about the error. + * @example !, -, typeof, (, IDENTIFIER, null, true, false, NUMBER, STRING, TEMPLATE_LITERAL, new, [ or { expected, > encountered. + */ + message: string; + /** + * @description The error type. + * @enum {string} + */ + type: "syntax" | "type" | "other"; + }; + /** @description Details about the analysed Jira expression. */ + JiraExpressionsAnalysis: { + /** @description The results of Jira expressions analysis. */ + results: components["schemas"]["JiraExpressionAnalysis"][]; + }; + JiraExpressionsComplexityBean: { + /** @description The number of Jira REST API beans returned in the response. */ + beans: components["schemas"]["JiraExpressionsComplexityValueBean"]; + /** @description The number of expensive operations executed while evaluating the expression. Expensive operations are those that load additional data, such as entity properties, comments, or custom fields. */ + expensiveOperations: components["schemas"]["JiraExpressionsComplexityValueBean"]; + /** @description The number of primitive values returned in the response. */ + primitiveValues: components["schemas"]["JiraExpressionsComplexityValueBean"]; + /** @description The number of steps it took to evaluate the expression, where a step is a high-level operation performed by the expression. A step is an operation such as arithmetic, accessing a property, accessing a context variable, or calling a function. */ + steps: components["schemas"]["JiraExpressionsComplexityValueBean"]; + }; + JiraExpressionsComplexityValueBean: { + /** + * Format: int32 + * @description The maximum allowed complexity. The evaluation will fail if this value is exceeded. + */ + limit: number; + /** + * Format: int32 + * @description The complexity value of the current expression. + */ + value: number; + }; + /** @description Details of a status. */ + JiraStatus: { + /** @description The description of the status. */ + description?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The name of the status. */ + name?: string; + scope?: components["schemas"]["StatusScope"]; + /** + * @description The category of the status. + * @enum {string} + */ + statusCategory?: "TODO" | "IN_PROGRESS" | "DONE"; + /** @description Projects and issue types where the status is used. Only available if the `usages` expand is requested. */ + usages?: components["schemas"]["ProjectIssueTypes"][]; + /** @description The workflows that use this status. Only available if the `workflowUsages` expand is requested. */ + workflowUsages?: components["schemas"]["WorkflowUsages"][]; + }; + /** @description Details of a workflow. */ + JiraWorkflow: { + /** @description The description of the workflow. */ + description?: string; + /** @description The ID of the workflow. */ + id?: string; + /** @description Indicates if the workflow can be edited. */ + isEditable?: boolean; + /** @description The name of the workflow. */ + name?: string; + scope?: components["schemas"]["WorkflowScope"]; + startPointLayout?: components["schemas"]["WorkflowLayout"]; + /** @description The statuses referenced in this workflow. */ + statuses?: components["schemas"]["WorkflowReferenceStatus"][]; + /** @description If there is a current [asynchronous task](#async-operations) operation for this workflow. */ + taskId?: string | null; + /** @description The transitions of the workflow. */ + transitions?: components["schemas"]["WorkflowTransitions"][]; + /** @description Use the optional `workflows.usages` expand to get additional information about the projects and issue types associated with the requested workflows. */ + usages?: components["schemas"]["ProjectIssueTypes"][]; + version?: components["schemas"]["DocumentVersion"]; + }; + /** @description Details of a status. */ + JiraWorkflowStatus: { + /** @description The description of the status. */ + description?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The name of the status. */ + name?: string; + scope?: components["schemas"]["WorkflowScope"]; + /** + * @description The category of the status. + * @enum {string} + */ + statusCategory?: "TODO" | "IN_PROGRESS" | "DONE"; + /** @description The reference of the status. */ + statusReference?: string; + /** @description The `statuses.usages` expand is an optional parameter that can be used when reading and updating statuses in Jira. It provides additional information about the projects and issue types associated with the requested statuses. */ + usages?: components["schemas"]["ProjectIssueTypes"][]; + }; + /** @description Jql function precomputation. */ + JqlFunctionPrecomputationBean: { + /** @description The list of arguments function was invoked with. */ + arguments?: readonly string[]; + /** + * Format: date-time + * @description The timestamp of the precomputation creation. + */ + created?: string; + /** @description The error message to be displayed to the user. */ + error?: string; + /** @description The field the function was executed against. */ + field?: string; + /** @description The function key. */ + functionKey?: string; + /** @description The name of the function. */ + functionName?: string; + /** @description The id of the precomputation. */ + id?: string; + /** @description The operator in context of which function was executed. */ + operator?: string; + /** + * Format: date-time + * @description The timestamp of the precomputation last update. + */ + updated?: string; + /** + * Format: date-time + * @description The timestamp of the precomputation last usage. + */ + used?: string; + /** @description The JQL fragment stored as the precomputation. */ + value?: string; + }; + /** @description Precomputation id and its new value. */ + JqlFunctionPrecomputationUpdateBean: { + /** @description The error message to be displayed to the user if the given function clause is no longer valid during recalculation of the precomputation. */ + error?: string; + /** @description The id of the precomputation to update. */ + id: string; + /** @description The new value of the precomputation. */ + value?: string; + }; + /** @description List of pairs (id and value) for precomputation updates. */ + JqlFunctionPrecomputationUpdateRequestBean: { + values?: components["schemas"]["JqlFunctionPrecomputationUpdateBean"][]; + }; + /** @description A list of JQL queries to parse. */ + JqlQueriesToParse: { + /** @description A list of queries to parse. */ + queries: string[]; + }; + /** @description The list of JQL queries to sanitize for the given account IDs. */ + JqlQueriesToSanitize: { + /** @description The list of JQL queries to sanitize. Must contain unique values. Maximum of 20 queries. */ + queries: components["schemas"]["JqlQueryToSanitize"][]; + }; + /** @description A parsed JQL query. */ + JqlQuery: { + orderBy?: components["schemas"]["JqlQueryOrderByClause"]; + where?: components["schemas"]["JqlQueryClause"]; + }; + /** @description A JQL query clause. */ + JqlQueryClause: components["schemas"]["CompoundClause"] | components["schemas"]["FieldValueClause"] | components["schemas"]["FieldWasClause"] | components["schemas"]["FieldChangedClause"]; + /** @description Details of an operand in a JQL clause. */ + JqlQueryClauseOperand: components["schemas"]["ListOperand"] | components["schemas"]["ValueOperand"] | components["schemas"]["FunctionOperand"] | components["schemas"]["KeywordOperand"]; + /** @description A time predicate for a temporal JQL clause. */ + JqlQueryClauseTimePredicate: { + operand: components["schemas"]["JqlQueryClauseOperand"]; + /** + * @description The operator between the field and the operand. + * @enum {string} + */ + operator: "before" | "after" | "from" | "to" | "on" | "during" | "by"; + }; + /** @description A field used in a JQL query. See [Advanced searching - fields reference](https://confluence.atlassian.com/x/dAiiLQ) for more information about fields in JQL queries. */ + JqlQueryField: { + /** @description The encoded name of the field, which can be used directly in a JQL query. */ + encodedName?: string; + /** @description The name of the field. */ + name: string; + /** @description When the field refers to a value in an entity property, details of the entity property value. */ + property?: components["schemas"]["JqlQueryFieldEntityProperty"][]; + }; + /** @description Details of an entity property. */ + JqlQueryFieldEntityProperty: { + /** + * @description The object on which the property is set. + * @example issue + */ + entity: string; + /** + * @description The key of the property. + * @example stats + */ + key: string; + /** + * @description The path in the property value to query. + * @example comments.count + */ + path: string; + /** + * @description The type of the property value extraction. Not available if the extraction for the property is not registered on the instance with the [Entity property](https://developer.atlassian.com/cloud/jira/platform/modules/entity-property/) module. + * @example number + * @enum {string} + */ + type?: "number" | "string" | "text" | "date" | "user"; + }; + /** @description Details of the order-by JQL clause. */ + JqlQueryOrderByClause: { + /** @description The list of order-by clause fields and their ordering directives. */ + fields: components["schemas"]["JqlQueryOrderByClauseElement"][]; + }; + /** @description An element of the order-by JQL clause. */ + JqlQueryOrderByClauseElement: { + /** + * @description The direction in which to order the results. + * @enum {string} + */ + direction?: "asc" | "desc"; + field: components["schemas"]["JqlQueryField"]; + }; + /** @description The JQL query to sanitize for the account ID. If the account ID is null, sanitizing is performed for an anonymous user. */ + JqlQueryToSanitize: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string | null; + /** @description The query to sanitize. */ + query: string; + }; + /** @description An operand that can be part of a list operand. */ + JqlQueryUnitaryOperand: components["schemas"]["ValueOperand"] | components["schemas"]["FunctionOperand"] | components["schemas"]["KeywordOperand"]; + /** @description A JSON object with custom content. */ + JsonContextVariable: { + /** @description Type of custom context variable. */ + type: string; + /** @description A JSON object containing custom content. */ + value?: Record; + }; + JsonNode: { + array?: boolean; + bigDecimal?: boolean; + bigInteger?: boolean; + bigIntegerValue?: number; + binary?: boolean; + binaryValue?: string[]; + boolean?: boolean; + booleanValue?: boolean; + containerNode?: boolean; + decimalValue?: number; + double?: boolean; + /** Format: double */ + doubleValue?: number; + elements?: Record; + fieldNames?: Record; + fields?: Record; + floatingPointNumber?: boolean; + int?: boolean; + /** Format: int32 */ + intValue?: number; + integralNumber?: boolean; + long?: boolean; + /** Format: int64 */ + longValue?: number; + missingNode?: boolean; + null?: boolean; + number?: boolean; + /** @enum {string} */ + numberType?: "INT" | "LONG" | "BIG_INTEGER" | "FLOAT" | "DOUBLE" | "BIG_DECIMAL"; + numberValue?: number; + object?: boolean; + pojo?: boolean; + textValue?: string; + textual?: boolean; + valueAsBoolean?: boolean; + /** Format: double */ + valueAsDouble?: number; + /** Format: int32 */ + valueAsInt?: number; + /** Format: int64 */ + valueAsLong?: number; + valueAsText?: string; + valueNode?: boolean; + }; + /** @description The schema of a field. */ + JsonTypeBean: { + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description The data type of the field. */ + type: string; + }; + /** @description An operand that is a JQL keyword. See [Advanced searching - keywords reference](https://confluence.atlassian.com/jiracorecloud/advanced-searching-keywords-reference-765593717.html#Advancedsearching-keywordsreference-EMPTYEMPTY) for more information about operand keywords. */ + KeywordOperand: { + /** + * @description The keyword that is the operand value. + * @enum {string} + */ + keyword: "empty"; + }; + LegacyJackson1ListAttachment: components["schemas"]["Attachment"][]; + LegacyJackson1ListColumnItem: components["schemas"]["ColumnItem"][]; + LegacyJackson1ListIssueEvent: components["schemas"]["IssueEvent"][]; + LegacyJackson1ListIssueTypeWithStatus: components["schemas"]["IssueTypeWithStatus"][]; + LegacyJackson1ListProject: components["schemas"]["Project"][]; + LegacyJackson1ListProjectComponent: components["schemas"]["ProjectComponent"][]; + LegacyJackson1ListProjectRoleDetails: components["schemas"]["ProjectRoleDetails"][]; + LegacyJackson1ListProjectType: components["schemas"]["ProjectType"][]; + LegacyJackson1ListUserMigrationBean: components["schemas"]["UserMigrationBean"][]; + LegacyJackson1ListVersion: components["schemas"]["Version"][]; + LegacyJackson1ListWorklog: components["schemas"]["Worklog"][]; + /** @description Details about a license for the Jira instance. */ + License: { + /** @description The applications under this license. */ + applications: readonly components["schemas"]["LicensedApplication"][]; + }; + /** @description A metric that provides insight into the active licence details */ + LicenseMetric: { + /** @description The key of a specific license metric. */ + key?: string; + /** @description The calculated value of a licence metric linked to the key. An example licence metric is the approximate number of user accounts. */ + value?: string; + }; + /** @description Details about a licensed Jira application. */ + LicensedApplication: { + /** @description The ID of the application. */ + id: string; + /** + * @description The licensing plan. + * @enum {string} + */ + plan: "UNLICENSED" | "FREE" | "PAID"; + }; + /** @description Details a link group, which defines issue operations. */ + LinkGroup: { + groups?: components["schemas"]["LinkGroup"][]; + header?: components["schemas"]["SimpleLink"]; + id?: string; + links?: components["schemas"]["SimpleLink"][]; + styleClass?: string; + /** Format: int32 */ + weight?: number; + }; + LinkIssueRequestJsonBean: { + comment?: components["schemas"]["Comment"]; + inwardIssue: components["schemas"]["LinkedIssue"]; + outwardIssue: components["schemas"]["LinkedIssue"]; + type: components["schemas"]["IssueLinkType"]; + }; + /** @description The ID or key of a linked issue. */ + LinkedIssue: { + /** @description The fields associated with the issue. */ + fields?: components["schemas"]["Fields"]; + /** @description The ID of an issue. Required if `key` isn't provided. */ + id?: string; + /** @description The key of an issue. Required if `id` isn't provided. */ + key?: string; + /** + * Format: uri + * @description The URL of the issue. + */ + self?: string; + }; + /** @description An operand that is a list of values. */ + ListOperand: { + /** @description Encoded operand, which can be used directly in a JQL query. */ + encodedOperand?: string; + /** @description The list of operand values. */ + values: components["schemas"]["JqlQueryUnitaryOperand"][]; + }; + ListWrapperCallbackApplicationRole: Record; + ListWrapperCallbackGroupName: Record; + /** @description Details of a locale. */ + Locale: { + /** @description The locale code. The Java the locale format is used: a two character language code (ISO 639), an underscore, and two letter country code (ISO 3166). For example, en\_US represents a locale of English (United States). Required on create. */ + locale?: string; + }; + /** @description Overrides, for the selected issue types, any status mappings provided in `statusMappingsByWorkflows`. Status mappings are required when the new workflow for an issue type doesn't contain all statuses that the old workflow has. Status mappings can be provided by a combination of `statusMappingsByWorkflows` and `statusMappingsByIssueTypeOverride`. */ + MappingsByIssueTypeOverride: { + /** @description The ID of the issue type for this mapping. */ + issueTypeId: string; + /** @description The list of status mappings. */ + statusMappings: components["schemas"]["WorkflowAssociationStatusMapping"][]; + }; + /** @description The status mappings by workflows. Status mappings are required when the new workflow for an issue type doesn't contain all statuses that the old workflow has. Status mappings can be provided by a combination of `statusMappingsByWorkflows` and `statusMappingsByIssueTypeOverride`. */ + MappingsByWorkflow: { + /** @description The ID of the new workflow. */ + newWorkflowId: string; + /** @description The ID of the old workflow. */ + oldWorkflowId: string; + /** @description The list of status mappings. */ + statusMappings: components["schemas"]["WorkflowAssociationStatusMapping"][]; + }; + MoveFieldBean: { + /** + * Format: uri + * @description The ID of the screen tab field after which to place the moved screen tab field. Required if `position` isn't provided. + */ + after?: string; + /** + * @description The named position to which the screen tab field should be moved. Required if `after` isn't provided. + * @enum {string} + */ + position?: "Earlier" | "Later" | "First" | "Last"; + }; + /** @description A list of issues and their respective properties to set or update. See [Entity properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/) for more information. */ + MultiIssueEntityProperties: { + /** @description A list of issue IDs and their respective properties. */ + issues?: components["schemas"]["IssueEntityPropertiesForMultiUpdate"][]; + }; + MultipartFile: { + bytes?: string[]; + contentType?: string; + empty?: boolean; + inputStream?: Record; + name?: string; + originalFilename?: string; + resource?: components["schemas"]["Resource"]; + /** Format: int64 */ + size?: number; + }; + /** @description A custom field and its new value with a list of issue to update. */ + MultipleCustomFieldValuesUpdate: { + /** @description The ID or key of the custom field. For example, `customfield_10010`. */ + customField: string; + /** @description The list of issue IDs. */ + issueIds: number[]; + /** + * @description The value for the custom field. The value must be compatible with the [custom field type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/#data-types) as follows: + * + * * `string` the value must be a string. + * * `number` the value must be a number. + * * `datetime` the value must be a string that represents a date in the ISO format or the simplified extended ISO format. For example, `"2023-01-18T12:00:00-03:00"` or `"2023-01-18T12:00:00.000Z"`. However, the milliseconds part is ignored. + * * `user` the value must be an object that contains the `accountId` field. + * * `group` the value must be an object that contains the group `name` or `groupId` field. Because group names can change, we recommend using `groupId`. + * + * A list of appropriate values must be provided if the field is of the `list` [collection type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/#collection-types). + */ + value: unknown; + }; + /** @description List of updates for a custom fields. */ + MultipleCustomFieldValuesUpdateDetails: { + updates?: components["schemas"]["MultipleCustomFieldValuesUpdate"][]; + }; + NestedResponse: { + errorCollection?: components["schemas"]["ErrorCollection"]; + /** Format: int32 */ + status?: number; + warningCollection?: components["schemas"]["WarningCollection"]; + }; + /** @description The user details. */ + NewUserDetails: { + /** @description Deprecated, do not use. */ + applicationKeys?: string[]; + /** @description This property is no longer available. If the user has an Atlassian account, their display name is not changed. If the user does not have an Atlassian account, they are sent an email asking them set up an account. */ + displayName?: string; + /** @description The email address for the user. */ + emailAddress: string; + /** @description This property is no longer available. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description This property is no longer available. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description This property is no longer available. If the user has an Atlassian account, their password is not changed. If the user does not have an Atlassian account, they are sent an email asking them set up an account. */ + password?: string; + /** @description Products the new user has access to. Valid products are: jira-core, jira-servicedesk, jira-product-discovery, jira-software. If left empty, the user will get default product access. To create a user without product access, set this field to be an empty array. */ + products?: string[]; + /** @description The URL of the user. */ + self?: string; + [key: string]: unknown; + }; + /** @description Details about a notification. */ + Notification: { + /** @description The HTML body of the email notification for the issue. */ + htmlBody?: string; + /** @description Restricts the notifications to users with the specified permissions. */ + restrict?: components["schemas"]["NotificationRecipientsRestrictions"]; + /** @description The subject of the email notification for the issue. If this is not specified, then the subject is set to the issue key and summary. */ + subject?: string; + /** @description The plain text body of the email notification for the issue. */ + textBody?: string; + /** @description The recipients of the email notification for the issue. */ + to?: components["schemas"]["NotificationRecipients"]; + [key: string]: unknown; + }; + /** @description Details about a notification event. */ + NotificationEvent: { + /** @description The description of the event. */ + description?: string; + /** + * Format: int64 + * @description The ID of the event. The event can be a [Jira system event](https://confluence.atlassian.com/x/8YdKLg#Creatinganotificationscheme-eventsEvents) or a [custom event](https://confluence.atlassian.com/x/AIlKLg). + */ + id?: number; + /** @description The name of the event. */ + name?: string; + /** @description The template of the event. Only custom events configured by Jira administrators have template. */ + templateEvent?: components["schemas"]["NotificationEvent"]; + }; + /** @description Details of the users and groups to receive the notification. */ + NotificationRecipients: { + /** @description Whether the notification should be sent to the issue's assignees. */ + assignee?: boolean; + /** @description List of groupIds to receive the notification. */ + groupIds?: string[]; + /** @description List of groups to receive the notification. */ + groups?: components["schemas"]["GroupName"][]; + /** @description Whether the notification should be sent to the issue's reporter. */ + reporter?: boolean; + /** @description List of users to receive the notification. */ + users?: components["schemas"]["UserDetails"][]; + /** @description Whether the notification should be sent to the issue's voters. */ + voters?: boolean; + /** @description Whether the notification should be sent to the issue's watchers. */ + watchers?: boolean; + [key: string]: unknown; + }; + /** @description Details of the group membership or permissions needed to receive the notification. */ + NotificationRecipientsRestrictions: { + /** @description List of groupId memberships required to receive the notification. */ + groupIds?: string[]; + /** @description List of group memberships required to receive the notification. */ + groups?: components["schemas"]["GroupName"][]; + /** @description List of permissions required to receive the notification. */ + permissions?: components["schemas"]["RestrictedPermission"][]; + }; + /** @description Details about a notification scheme. */ + NotificationScheme: { + /** @description The description of the notification scheme. */ + description?: string; + /** @description Expand options that include additional notification scheme details in the response. */ + expand?: string; + /** + * Format: int64 + * @description The ID of the notification scheme. + */ + id?: number; + /** @description The name of the notification scheme. */ + name?: string; + /** @description The notification events and associated recipients. */ + notificationSchemeEvents?: components["schemas"]["NotificationSchemeEvent"][]; + /** @description The list of project IDs associated with the notification scheme. */ + projects?: number[]; + /** @description The scope of the notification scheme. */ + scope?: components["schemas"]["Scope"]; + self?: string; + }; + NotificationSchemeAndProjectMappingJsonBean: { + notificationSchemeId?: string; + projectId?: string; + }; + /** @description Details about a notification scheme event. */ + NotificationSchemeEvent: { + event?: components["schemas"]["NotificationEvent"]; + notifications?: components["schemas"]["EventNotification"][]; + }; + /** @description Details of a notification scheme event. */ + NotificationSchemeEventDetails: { + /** @description The ID of the event. */ + event: components["schemas"]["NotificationSchemeEventTypeId"]; + /** @description The list of notifications mapped to a specified event. */ + notifications: components["schemas"]["NotificationSchemeNotificationDetails"][]; + [key: string]: unknown; + }; + /** @description The ID of an event that is being mapped to notifications. */ + NotificationSchemeEventTypeId: { + /** @description The ID of the notification scheme event. */ + id: string; + [key: string]: unknown; + }; + /** @description The ID of a notification scheme. */ + NotificationSchemeId: { + /** @description The ID of a notification scheme. */ + id: string; + [key: string]: unknown; + }; + /** @description Details of a notification within a notification scheme. */ + NotificationSchemeNotificationDetails: { + /** @description The notification type, e.g `CurrentAssignee`, `Group`, `EmailAddress`. */ + notificationType: string; + /** @description The value corresponding to the specified notification type. */ + parameter?: string; + [key: string]: unknown; + }; + OldToNewSecurityLevelMappingsBean: { + /** @description The new issue security level ID. Providing null will clear the assigned old level from issues. */ + newLevelId: string; + /** @description The old issue security level ID. Providing null will remap all issues without any assigned levels. */ + oldLevelId: string; + }; + /** + * @example { + * "message": "An example message.", + * "statusCode": 200 + * } + */ + OperationMessage: { + /** @description The human-readable message that describes the result. */ + message: string; + /** @description The status code of the response. */ + statusCode: number; + }; + /** @description Details of the operations that can be performed on the issue. */ + Operations: { + /** @description Details of the link groups defining issue operations. */ + linkGroups?: readonly components["schemas"]["LinkGroup"][]; + [key: string]: unknown; + }; + /** @description An ordered list of custom field option IDs and information on where to move them. */ + OrderOfCustomFieldOptions: { + /** @description The ID of the custom field option or cascading option to place the moved options after. Required if `position` isn't provided. */ + after?: string; + /** @description A list of IDs of custom field options to move. The order of the custom field option IDs in the list is the order they are given after the move. The list must contain custom field options or cascading options, but not both. */ + customFieldOptionIds: string[]; + /** + * @description The position the custom field options should be moved to. Required if `after` isn't provided. + * @enum {string} + */ + position?: "First" | "Last"; + }; + /** @description An ordered list of issue type IDs and information about where to move them. */ + OrderOfIssueTypes: { + /** @description The ID of the issue type to place the moved issue types after. Required if `position` isn't provided. */ + after?: string; + /** @description A list of the issue type IDs to move. The order of the issue type IDs in the list is the order they are given after the move. */ + issueTypeIds: string[]; + /** + * @description The position the issue types should be moved to. Required if `after` isn't provided. + * @enum {string} + */ + position?: "First" | "Last"; + }; + /** @description A page of items. */ + PageBeanChangelog: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Changelog"][]; + }; + /** @description A page of items. */ + PageBeanComment: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Comment"][]; + }; + /** @description A page of items. */ + PageBeanComponentWithIssueCount: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ComponentWithIssueCount"][]; + }; + /** @description A page of items. */ + PageBeanContext: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Context"][]; + }; + /** @description A page of items. */ + PageBeanContextForProjectAndIssueType: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ContextForProjectAndIssueType"][]; + }; + /** @description A page of items. */ + PageBeanContextualConfiguration: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ContextualConfiguration"][]; + }; + /** @description A page of items. */ + PageBeanCustomFieldContext: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["CustomFieldContext"][]; + }; + /** @description A page of items. */ + PageBeanCustomFieldContextDefaultValue: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["CustomFieldContextDefaultValue"][]; + }; + /** @description A page of items. */ + PageBeanCustomFieldContextOption: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["CustomFieldContextOption"][]; + }; + /** @description A page of items. */ + PageBeanCustomFieldContextProjectMapping: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["CustomFieldContextProjectMapping"][]; + }; + /** @description A page of items. */ + PageBeanDashboard: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Dashboard"][]; + }; + /** @description A page of items. */ + PageBeanField: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Field"][]; + }; + /** @description A page of items. */ + PageBeanFieldConfigurationDetails: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["FieldConfigurationDetails"][]; + }; + /** @description A page of items. */ + PageBeanFieldConfigurationIssueTypeItem: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["FieldConfigurationIssueTypeItem"][]; + }; + /** @description A page of items. */ + PageBeanFieldConfigurationItem: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["FieldConfigurationItem"][]; + }; + /** @description A page of items. */ + PageBeanFieldConfigurationScheme: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["FieldConfigurationScheme"][]; + }; + /** @description A page of items. */ + PageBeanFieldConfigurationSchemeProjects: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["FieldConfigurationSchemeProjects"][]; + }; + /** @description A page of items. */ + PageBeanFilterDetails: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["FilterDetails"][]; + }; + /** @description A page of items. */ + PageBeanGroupDetails: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["GroupDetails"][]; + }; + /** @description A page of items. */ + PageBeanIssueFieldOption: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueFieldOption"][]; + }; + /** @description A page of items. */ + PageBeanIssueSecurityLevelMember: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueSecurityLevelMember"][]; + }; + /** @description A page of items. */ + PageBeanIssueSecuritySchemeToProjectMapping: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueSecuritySchemeToProjectMapping"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeScheme: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeScheme"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeSchemeMapping: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeSchemeMapping"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeSchemeProjects: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeSchemeProjects"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeScreenScheme: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeScreenScheme"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeScreenSchemeItem: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeScreenSchemeItem"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeScreenSchemesProjects: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeScreenSchemesProjects"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeToContextMapping: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeToContextMapping"][]; + }; + /** @description A page of items. */ + PageBeanJqlFunctionPrecomputationBean: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["JqlFunctionPrecomputationBean"][]; + }; + /** @description A page of items. */ + PageBeanNotificationScheme: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["NotificationScheme"][]; + }; + /** @description A page of items. */ + PageBeanNotificationSchemeAndProjectMappingJsonBean: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["NotificationSchemeAndProjectMappingJsonBean"][]; + }; + /** @description A page of items. */ + PageBeanPriority: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Priority"][]; + }; + /** @description A page of items. */ + PageBeanProject: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Project"][]; + }; + /** @description A page of items. */ + PageBeanProjectDetails: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ProjectDetails"][]; + }; + /** @description A page of items. */ + PageBeanResolutionJsonBean: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ResolutionJsonBean"][]; + }; + /** @description A page of items. */ + PageBeanScreen: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Screen"][]; + }; + /** @description A page of items. */ + PageBeanScreenScheme: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ScreenScheme"][]; + }; + /** @description A page of items. */ + PageBeanScreenWithTab: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ScreenWithTab"][]; + }; + /** @description A page of items. */ + PageBeanSecurityLevel: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["SecurityLevel"][]; + }; + /** @description A page of items. */ + PageBeanSecurityLevelMember: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["SecurityLevelMember"][]; + }; + /** @description A page of items. */ + PageBeanSecuritySchemeWithProjects: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["SecuritySchemeWithProjects"][]; + }; + /** @description A page of items. */ + PageBeanString: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly string[]; + }; + /** @description A page of items. */ + PageBeanUiModificationDetails: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["UiModificationDetails"][]; + }; + /** @description A page of items. */ + PageBeanUser: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["User"][]; + }; + /** @description A page of items. */ + PageBeanUserDetails: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["UserDetails"][]; + }; + /** @description A page of items. */ + PageBeanUserKey: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["UserKey"][]; + }; + /** @description A page of items. */ + PageBeanVersion: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Version"][]; + }; + /** @description A page of items. */ + PageBeanWebhook: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Webhook"][]; + }; + /** @description A page of items. */ + PageBeanWorkflow: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Workflow"][]; + }; + /** @description A page of items. */ + PageBeanWorkflowScheme: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["WorkflowScheme"][]; + }; + /** @description A page of items. */ + PageBeanWorkflowTransitionRules: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["WorkflowTransitionRules"][]; + }; + /** @description A page of changelogs. */ + PageOfChangelogs: { + /** @description The list of changelogs. */ + histories?: readonly components["schemas"]["Changelog"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + }; + /** @description A page of comments. */ + PageOfComments: { + /** @description The list of comments. */ + comments?: readonly components["schemas"]["Comment"][]; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + [key: string]: unknown; + }; + /** @description A page of CreateMetaIssueType with Field. */ + PageOfCreateMetaIssueTypeWithField: { + /** @description The collection of FieldCreateMetaBeans. */ + fields?: readonly components["schemas"]["FieldCreateMetadata"][]; + /** + * Format: int32 + * @description The maximum number of items to return per page. + */ + maxResults?: number; + results?: components["schemas"]["FieldCreateMetadata"][]; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The total number of items in all pages. + */ + total?: number; + [key: string]: unknown; + }; + /** @description A page of CreateMetaIssueTypes. */ + PageOfCreateMetaIssueTypes: { + createMetaIssueType?: components["schemas"]["IssueTypeIssueCreateMetadata"][]; + /** @description The list of CreateMetaIssueType. */ + issueTypes?: readonly components["schemas"]["IssueTypeIssueCreateMetadata"][]; + /** + * Format: int32 + * @description The maximum number of items to return per page. + */ + maxResults?: number; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The total number of items in all pages. + */ + total?: number; + [key: string]: unknown; + }; + /** @description A page containing dashboard details. */ + PageOfDashboards: { + /** @description List of dashboards. */ + dashboards?: readonly components["schemas"]["Dashboard"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** @description The URL of the next page of results, if any. */ + next?: string; + /** @description The URL of the previous page of results, if any. */ + prev?: string; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + }; + PageOfStatuses: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** @description The URL of the next page of results, if any. */ + nextPage?: string; + /** @description The URL of this page. */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int64 + * @description Number of items that satisfy the search. + */ + total?: number; + /** @description The list of items. */ + values?: components["schemas"]["JiraStatus"][]; + }; + /** @description Paginated list of worklog details */ + PageOfWorklogs: { + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + /** @description List of worklogs. */ + worklogs?: readonly components["schemas"]["Worklog"][]; + [key: string]: unknown; + }; + /** @description A paged list. To access additional details append `[start-index:end-index]` to the expand request. For example, `?expand=sharedUsers[10:40]` returns a list starting at item 10 and finishing at item 40. */ + PagedListUserDetailsApplicationUser: { + /** + * Format: int32 + * @description The index of the last item returned on the page. + */ + "end-index"?: number; + /** @description The list of items. */ + items?: readonly components["schemas"]["UserDetails"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + "max-results"?: number; + /** + * Format: int32 + * @description The number of items on the page. + */ + size?: number; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + "start-index"?: number; + }; + PaginatedResponseComment: { + /** Format: int32 */ + maxResults?: number; + results?: components["schemas"]["Comment"][]; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + }; + PaginatedResponseFieldCreateMetadata: { + /** Format: int32 */ + maxResults?: number; + results?: components["schemas"]["FieldCreateMetadata"][]; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + }; + PaginatedResponseIssueTypeIssueCreateMetadata: { + /** Format: int32 */ + maxResults?: number; + results?: components["schemas"]["IssueTypeIssueCreateMetadata"][]; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + }; + /** @description A list of parsed JQL queries. */ + ParsedJqlQueries: { + /** @description A list of parsed JQL queries. */ + queries: components["schemas"]["ParsedJqlQuery"][]; + }; + /** @description Details of a parsed JQL query. */ + ParsedJqlQuery: { + /** @description The list of syntax or validation errors. */ + errors?: string[]; + /** @description The JQL query that was parsed and validated. */ + query: string; + /** @description The syntax tree of the query. Empty if the query was invalid. */ + structure?: components["schemas"]["JqlQuery"]; + }; + /** @description Details for permissions of shareable entities */ + PermissionDetails: { + /** @description The edit permissions for the shareable entities. */ + editPermissions: components["schemas"]["SharePermission"][]; + /** @description The share permissions for the shareable entities. */ + sharePermissions: components["schemas"]["SharePermission"][]; + }; + /** @description Details about a permission granted to a user or group. */ + PermissionGrant: { + /** @description The user or group being granted the permission. It consists of a `type`, a type-dependent `parameter` and a type-dependent `value`. See [Holder object](../api-group-permission-schemes/#holder-object) in *Get all permission schemes* for more information. */ + holder?: components["schemas"]["PermissionHolder"]; + /** + * Format: int64 + * @description The ID of the permission granted details. + */ + id?: number; + /** @description The permission to grant. This permission can be one of the built-in permissions or a custom permission added by an app. See [Built-in permissions](../api-group-permission-schemes/#built-in-permissions) in *Get all permission schemes* for more information about the built-in permissions. See the [project permission](https://developer.atlassian.com/cloud/jira/platform/modules/project-permission/) and [global permission](https://developer.atlassian.com/cloud/jira/platform/modules/global-permission/) module documentation for more information about custom permissions. */ + permission?: string; + /** + * Format: uri + * @description The URL of the permission granted details. + */ + self?: string; + [key: string]: unknown; + }; + /** @description List of permission grants. */ + PermissionGrants: { + /** @description Expand options that include additional permission grant details in the response. */ + expand?: string; + /** @description Permission grants list. */ + permissions?: readonly components["schemas"]["PermissionGrant"][]; + }; + /** @description Details of a user, group, field, or project role that holds a permission. See [Holder object](../api-group-permission-schemes/#holder-object) in *Get all permission schemes* for more information. */ + PermissionHolder: { + /** @description Expand options that include additional permission holder details in the response. */ + expand?: string; + /** @description As a group's name can change, use of `value` is recommended. The identifier associated withthe `type` value that defines the holder of the permission. */ + parameter?: string; + /** @description The type of permission holder. */ + type: string; + /** @description The identifier associated with the `type` value that defines the holder of the permission. */ + value?: string; + }; + /** @description Details of a permission scheme. */ + PermissionScheme: { + /** @description A description for the permission scheme. */ + description?: string; + /** @description The expand options available for the permission scheme. */ + expand?: string; + /** + * Format: int64 + * @description The ID of the permission scheme. + */ + id?: number; + /** @description The name of the permission scheme. Must be unique. */ + name: string; + /** @description The permission scheme to create or update. See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more information. */ + permissions?: components["schemas"]["PermissionGrant"][]; + /** @description The scope of the permission scheme. */ + scope?: components["schemas"]["Scope"]; + /** + * Format: uri + * @description The URL of the permission scheme. + */ + self?: string; + [key: string]: unknown; + }; + /** @description List of all permission schemes. */ + PermissionSchemes: { + /** @description Permission schemes list. */ + permissionSchemes?: readonly components["schemas"]["PermissionScheme"][]; + }; + /** @description Details about permissions. */ + Permissions: { + /** @description List of permissions. */ + permissions?: { + [key: string]: components["schemas"]["UserPermission"]; + }; + }; + PermissionsKeysBean: { + /** @description A list of permission keys. */ + permissions: string[]; + }; + /** @description A list of projects in which a user is granted permissions. */ + PermittedProjects: { + /** @description A list of projects. */ + projects?: readonly components["schemas"]["ProjectIdentifierBean"][]; + }; + /** @description An issue priority. */ + Priority: { + /** @description The description of the issue priority. */ + description?: string; + /** @description The URL of the icon for the issue priority. */ + iconUrl?: string; + /** @description The ID of the issue priority. */ + id?: string; + /** @description Whether this priority is the default. */ + isDefault?: boolean; + /** @description The name of the issue priority. */ + name?: string; + /** @description The URL of the issue priority. */ + self?: string; + /** @description The color used to indicate the issue priority. */ + statusColor?: string; + [key: string]: unknown; + }; + /** @description The ID of an issue priority. */ + PriorityId: { + /** @description The ID of the issue priority. */ + id: string; + [key: string]: unknown; + }; + /** @description Details about a project. */ + Project: { + /** @description Whether the project is archived. */ + archived?: boolean; + /** @description The user who archived the project. */ + archivedBy?: components["schemas"]["User"]; + /** + * Format: date-time + * @description The date when the project was archived. + */ + archivedDate?: string; + /** + * @description The default assignee when creating issues for this project. + * @enum {string} + */ + assigneeType?: "PROJECT_LEAD" | "UNASSIGNED"; + /** @description The URLs of the project's avatars. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description List of the components contained in the project. */ + components?: readonly components["schemas"]["ProjectComponent"][]; + /** @description Whether the project is marked as deleted. */ + deleted?: boolean; + /** @description The user who marked the project as deleted. */ + deletedBy?: components["schemas"]["User"]; + /** + * Format: date-time + * @description The date when the project was marked as deleted. + */ + deletedDate?: string; + /** @description A brief description of the project. */ + description?: string; + /** @description An email address associated with the project. */ + email?: string; + /** @description Expand options that include additional project details in the response. */ + expand?: string; + /** @description Whether the project is selected as a favorite. */ + favourite?: boolean; + /** @description The ID of the project. */ + id?: string; + /** @description Insights about the project. */ + insight?: components["schemas"]["ProjectInsight"]; + /** @description Whether the project is private from the user's perspective. This means the user can't see the project or any associated issues. */ + isPrivate?: boolean; + /** @description The issue type hierarchy for the project. */ + issueTypeHierarchy?: components["schemas"]["Hierarchy"]; + /** @description List of the issue types available in the project. */ + issueTypes?: readonly components["schemas"]["IssueTypeDetails"][]; + /** @description The key of the project. */ + key?: string; + /** @description The project landing page info. */ + landingPageInfo?: components["schemas"]["ProjectLandingPageInfo"]; + /** @description The username of the project lead. */ + lead?: components["schemas"]["User"]; + /** @description The name of the project. */ + name?: string; + /** @description User permissions on the project */ + permissions?: components["schemas"]["ProjectPermissions"]; + /** @description The category the project belongs to. */ + projectCategory?: components["schemas"]["ProjectCategory"]; + /** + * @description The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes) of the project. + * @enum {string} + */ + projectTypeKey?: "software" | "service_desk" | "business"; + /** @description Map of project properties */ + properties?: { + [key: string]: unknown; + }; + /** + * Format: date-time + * @description The date when the project is deleted permanently. + */ + retentionTillDate?: string; + /** @description The name and self URL for each role defined in the project. For more information, see [Create project role](#api-rest-api-3-role-post). */ + roles?: { + [key: string]: string; + }; + /** + * Format: uri + * @description The URL of the project details. + */ + self?: string; + /** @description Whether the project is simplified. */ + simplified?: boolean; + /** + * @description The type of the project. + * @enum {string} + */ + style?: "classic" | "next-gen"; + /** @description A link to information about this project, such as project documentation. */ + url?: string; + /** + * Format: uuid + * @description Unique ID for next-gen projects. + */ + uuid?: string; + /** @description The versions defined in the project. For more information, see [Create version](#api-rest-api-3-version-post). */ + versions?: readonly components["schemas"]["Version"][]; + }; + /** @description A project and issueType ID pair that identifies a status mapping. */ + ProjectAndIssueTypePair: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The ID of the project. */ + projectId: string; + }; + /** @description List of project avatars. */ + ProjectAvatars: { + /** @description List of avatars added to Jira. These avatars may be deleted. */ + custom?: readonly components["schemas"]["Avatar"][]; + /** @description List of avatars included with Jira. These avatars cannot be deleted. */ + system?: readonly components["schemas"]["Avatar"][]; + }; + /** @description A project category. */ + ProjectCategory: { + /** @description The description of the project category. */ + description?: string; + /** @description The ID of the project category. */ + id?: string; + /** @description The name of the project category. Required on create, optional on update. */ + name?: string; + /** + * Format: uri + * @description The URL of the project category. + */ + self?: string; + }; + /** @description Details about a project component. */ + ProjectComponent: { + /** @description Compass component's ID. Can't be updated. Not required for creating a Project Component. */ + ari?: string; + /** @description The details of the user associated with `assigneeType`, if any. See `realAssignee` for details of the user assigned to issues created with this component. */ + assignee?: components["schemas"]["User"]; + /** + * @description The nominal user type used to determine the assignee for issues created with this component. See `realAssigneeType` for details on how the type of the user, and hence the user, assigned to issues is determined. Can take the following values: + * + * * `PROJECT_LEAD` the assignee to any issues created with this component is nominally the lead for the project the component is in. + * * `COMPONENT_LEAD` the assignee to any issues created with this component is nominally the lead for the component. + * * `UNASSIGNED` an assignee is not set for issues created with this component. + * * `PROJECT_DEFAULT` the assignee to any issues created with this component is nominally the default assignee for the project that the component is in. + * + * Default value: `PROJECT_DEFAULT`. + * Optional when creating or updating a component. + * @enum {string} + */ + assigneeType?: "PROJECT_DEFAULT" | "COMPONENT_LEAD" | "PROJECT_LEAD" | "UNASSIGNED"; + /** @description The description for the component. Optional when creating or updating a component. */ + description?: string; + /** @description The unique identifier for the component. */ + id?: string; + /** @description Whether a user is associated with `assigneeType`. For example, if the `assigneeType` is set to `COMPONENT_LEAD` but the component lead is not set, then `false` is returned. */ + isAssigneeTypeValid?: boolean; + /** @description The user details for the component's lead user. */ + lead?: components["schemas"]["User"]; + /** @description The accountId of the component's lead user. The accountId uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + leadAccountId?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + leadUserName?: string; + /** @description Compass component's metadata. Can't be updated. Not required for creating a Project Component. */ + metadata?: { + [key: string]: string; + }; + /** @description The unique name for the component in the project. Required when creating a component. Optional when updating a component. The maximum length is 255 characters. */ + name?: string; + /** @description The key of the project the component is assigned to. Required when creating a component. Can't be updated. */ + project?: string; + /** + * Format: int64 + * @description The ID of the project the component is assigned to. + */ + projectId?: number; + /** @description The user assigned to issues created with this component, when `assigneeType` does not identify a valid assignee. */ + realAssignee?: components["schemas"]["User"]; + /** + * @description The type of the assignee that is assigned to issues created with this component, when an assignee cannot be set from the `assigneeType`. For example, `assigneeType` is set to `COMPONENT_LEAD` but no component lead is set. This property is set to one of the following values: + * + * * `PROJECT_LEAD` when `assigneeType` is `PROJECT_LEAD` and the project lead has permission to be assigned issues in the project that the component is in. + * * `COMPONENT_LEAD` when `assignee`Type is `COMPONENT_LEAD` and the component lead has permission to be assigned issues in the project that the component is in. + * * `UNASSIGNED` when `assigneeType` is `UNASSIGNED` and Jira is configured to allow unassigned issues. + * * `PROJECT_DEFAULT` when none of the preceding cases are true. + * @enum {string} + */ + realAssigneeType?: "PROJECT_DEFAULT" | "COMPONENT_LEAD" | "PROJECT_LEAD" | "UNASSIGNED"; + /** + * Format: uri + * @description The URL of the component. + */ + self?: string; + }; + /** @description Details about a project. */ + ProjectDetails: { + /** @description The URLs of the project's avatars. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description The ID of the project. */ + id?: string; + /** @description The key of the project. */ + key?: string; + /** @description The name of the project. */ + name?: string; + /** @description The category the project belongs to. */ + projectCategory?: components["schemas"]["UpdatedProjectCategory"]; + /** + * @description The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes) of the project. + * @enum {string} + */ + projectTypeKey?: "software" | "service_desk" | "business"; + /** @description The URL of the project details. */ + self?: string; + /** @description Whether or not the project is simplified. */ + simplified?: boolean; + }; + /** @description A project's sender email address. */ + ProjectEmailAddress: { + /** @description The email address. */ + emailAddress?: string; + /** @description When using a custom domain, the status of the email address. */ + emailAddressStatus?: string[]; + }; + /** @description Details of a project feature. */ + ProjectFeature: { + /** @description The key of the feature. */ + feature?: string; + /** @description URI for the image representing the feature. */ + imageUri?: string; + /** @description Localized display description for the feature. */ + localisedDescription?: string; + /** @description Localized display name for the feature. */ + localisedName?: string; + /** @description List of keys of the features required to enable the feature. */ + prerequisites?: string[]; + /** + * Format: int64 + * @description The ID of the project. + */ + projectId?: number; + /** + * @description The state of the feature. When updating the state of a feature, only ENABLED and DISABLED are supported. Responses can contain all values + * @enum {string} + */ + state?: "ENABLED" | "DISABLED" | "COMING_SOON"; + /** @description Whether the state of the feature can be updated. */ + toggleLocked?: boolean; + }; + /** @description Details of the feature state. */ + ProjectFeatureState: { + /** + * @description The feature state. + * @enum {string} + */ + state?: "ENABLED" | "DISABLED" | "COMING_SOON"; + }; + /** @description Project ID details. */ + ProjectId: { + /** @description The ID of the project. */ + id: string; + } | null; + /** @description The identifiers for a project. */ + ProjectIdentifierBean: { + /** + * Format: int64 + * @description The ID of the project. + */ + id?: number; + /** @description The key of the project. */ + key?: string; + }; + /** @description Identifiers for a project. */ + ProjectIdentifiers: { + /** + * Format: int64 + * @description The ID of the created project. + */ + id: number; + /** @description The key of the created project. */ + key: string; + /** + * Format: uri + * @description The URL of the created project. + */ + self: string; + }; + /** @description A list of project IDs. */ + ProjectIds: { + /** @description The IDs of projects. */ + projectIds: string[]; + }; + /** @description Additional details about a project. */ + ProjectInsight: { + /** + * Format: date-time + * @description The last issue update time. + */ + lastIssueUpdateTime?: string; + /** + * Format: int64 + * @description Total issue count. + */ + totalIssueCount?: number; + }; + /** @description Details of the issue creation metadata for a project. */ + ProjectIssueCreateMetadata: { + /** @description List of the project's avatars, returning the avatar size and associated URL. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description Expand options that include additional project issue create metadata details in the response. */ + expand?: string; + /** @description The ID of the project. */ + id?: string; + /** @description List of the issue types supported by the project. */ + issuetypes?: readonly components["schemas"]["IssueTypeIssueCreateMetadata"][]; + /** @description The key of the project. */ + key?: string; + /** @description The name of the project. */ + name?: string; + /** @description The URL of the project. */ + self?: string; + }; + /** @description List of issue level security items in a project. */ + ProjectIssueSecurityLevels: { + /** @description Issue level security items list. */ + levels: readonly components["schemas"]["SecurityLevel"][]; + }; + /** @description The hierarchy of issue types within a project. */ + ProjectIssueTypeHierarchy: { + /** @description Details of an issue type hierarchy level. */ + hierarchy?: readonly components["schemas"]["ProjectIssueTypesHierarchyLevel"][]; + /** + * Format: int64 + * @description The ID of the project. + */ + projectId?: number; + }; + /** @description The project and issue type mapping. */ + ProjectIssueTypeMapping: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The ID of the project. */ + projectId: string; + }; + /** @description The project and issue type mappings. */ + ProjectIssueTypeMappings: { + /** @description The project and issue type mappings. */ + mappings: components["schemas"]["ProjectIssueTypeMapping"][]; + }; + /** @description Use the optional `workflows.usages` expand to get additional information about the projects and issue types associated with the requested workflows. */ + ProjectIssueTypes: { + /** @description IDs of the issue types */ + issueTypes?: (string | null)[] | null; + project?: components["schemas"]["ProjectId"]; + }; + /** @description Details of an issue type hierarchy level. */ + ProjectIssueTypesHierarchyLevel: { + /** + * Format: uuid + * @description The ID of the issue type hierarchy level. This property is deprecated, see [Change notice: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + entityId?: string; + /** @description The list of issue types in the hierarchy level. */ + issueTypes?: readonly components["schemas"]["IssueTypeInfo"][]; + /** + * Format: int32 + * @description The level of the issue type hierarchy level. + */ + level?: number; + /** @description The name of the issue type hierarchy level. */ + name?: string; + }; + ProjectLandingPageInfo: { + attributes?: { + [key: string]: string; + }; + /** Format: int64 */ + boardId?: number; + boardName?: string; + projectKey?: string; + projectType?: string; + queueCategory?: string; + /** Format: int64 */ + queueId?: number; + queueName?: string; + simpleBoard?: boolean; + simplified?: boolean; + url?: string; + }; + /** @description Permissions which a user has on a project. */ + ProjectPermissions: { + /** @description Whether the logged user can edit the project. */ + canEdit?: boolean; + }; + /** @description Details about the roles in a project. */ + ProjectRole: { + /** @description The list of users who act in this role. */ + actors?: readonly components["schemas"]["RoleActor"][]; + /** @description Whether this role is the admin role for the project. */ + admin?: boolean; + /** @description Whether the calling user is part of this role. */ + currentUserRole?: boolean; + /** @description Whether this role is the default role for the project */ + default?: boolean; + /** @description The description of the project role. */ + description?: string; + /** + * Format: int64 + * @description The ID of the project role. + */ + id?: number; + /** @description The name of the project role. */ + name?: string; + /** @description Whether the roles are configurable for this project. */ + roleConfigurable?: boolean; + /** @description The scope of the role. Indicated for roles associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO). */ + scope?: components["schemas"]["Scope"]; + /** + * Format: uri + * @description The URL the project role details. + */ + self?: string; + /** @description The translated name of the project role. */ + translatedName?: string; + }; + ProjectRoleActorsUpdateBean: { + /** + * @description The actors to add to the project role. + * + * Add groups using: + * + * * `atlassian-group-role-actor` and a list of group names. + * * `atlassian-group-role-actor-id` and a list of group IDs. + * + * As a group's name can change, use of `atlassian-group-role-actor-id` is recommended. For example, `"atlassian-group-role-actor-id":["eef79f81-0b89-4fca-a736-4be531a10869","77f6ab39-e755-4570-a6ae-2d7a8df0bcb8"]`. + * + * Add users using `atlassian-user-role-actor` and a list of account IDs. For example, `"atlassian-user-role-actor":["12345678-9abc-def1-2345-6789abcdef12", "abcdef12-3456-789a-bcde-f123456789ab"]`. + */ + categorisedActors?: { + [key: string]: string[]; + }; + /** + * Format: int64 + * @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. + */ + id?: number; + }; + /** @description Details about a project role. */ + ProjectRoleDetails: { + /** @description Whether this role is the admin role for the project. */ + admin?: boolean; + /** @description Whether this role is the default role for the project. */ + default?: boolean; + /** @description The description of the project role. */ + description?: string; + /** + * Format: int64 + * @description The ID of the project role. + */ + id?: number; + /** @description The name of the project role. */ + name?: string; + /** @description Whether the roles are configurable for this project. */ + roleConfigurable?: boolean; + /** @description The scope of the role. Indicated for roles associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO). */ + scope?: components["schemas"]["Scope"]; + /** + * Format: uri + * @description The URL the project role details. + */ + self?: string; + /** @description The translated name of the project role. */ + translatedName?: string; + }; + /** @description Details of the group associated with the role. */ + ProjectRoleGroup: { + /** @description The display name of the group. */ + displayName?: string; + /** @description The ID of the group. */ + groupId?: string; + /** @description The name of the group. As a group's name can change, use of `groupId` is recommended to identify the group. */ + name?: string; + }; + /** @description Details of the user associated with the role. */ + ProjectRoleUser: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Returns *unknown* if the record is deleted and corrupted, for example, as the result of a server import. */ + accountId?: string; + }; + ProjectScopeBean: { + /** @description Defines the behavior of the option in the project.If notSelectable is set, the option cannot be set as the field's value. This is useful for archiving an option that has previously been selected but shouldn't be used anymore.If defaultValue is set, the option is selected by default. */ + attributes?: ("notSelectable" | "defaultValue")[]; + /** + * Format: int64 + * @description The ID of the project that the option's behavior applies to. + */ + id?: number; + }; + /** @description Details about a project type. */ + ProjectType: { + /** @description The color of the project type. */ + color?: string; + /** @description The key of the project type's description. */ + descriptionI18nKey?: string; + /** @description The formatted key of the project type. */ + formattedKey?: string; + /** @description The icon of the project type. */ + icon?: string; + /** @description The key of the project type. */ + key?: string; + }; + /** @description Property key details. */ + PropertyKey: { + /** @description The key of the property. */ + key?: string; + /** @description The URL of the property. */ + self?: string; + }; + /** @description List of property keys. */ + PropertyKeys: { + /** @description Property key details. */ + keys?: readonly components["schemas"]["PropertyKey"][]; + }; + /** @description Details about the status mappings for publishing a draft workflow scheme. */ + PublishDraftWorkflowScheme: { + /** @description Mappings of statuses to new statuses for issue types. */ + statusMappings?: components["schemas"]["StatusMapping"][]; + }; + /** @description Properties that identify a published workflow. */ + PublishedWorkflowId: { + /** @description The entity ID of the workflow. */ + entityId?: string; + /** @description The name of the workflow. */ + name: string; + }; + /** @description ID of a registered webhook or error messages explaining why a webhook wasn't registered. */ + RegisteredWebhook: { + /** + * Format: int64 + * @description The ID of the webhook. Returned if the webhook is created. + */ + createdWebhookId?: number; + /** @description Error messages specifying why the webhook creation failed. */ + errors?: string[]; + }; + /** @description Details of an issue remote link. */ + RemoteIssueLink: { + /** @description Details of the remote application the linked item is in. */ + application?: components["schemas"]["Application"]; + /** @description The global ID of the link, such as the ID of the item on the remote system. */ + globalId?: string; + /** + * Format: int64 + * @description The ID of the link. + */ + id?: number; + /** @description Details of the item linked to. */ + object?: components["schemas"]["RemoteObject"]; + /** @description Description of the relationship between the issue and the linked item. */ + relationship?: string; + /** + * Format: uri + * @description The URL of the link. + */ + self?: string; + }; + /** @description Details of the identifiers for a created or updated remote issue link. */ + RemoteIssueLinkIdentifies: { + /** + * Format: int64 + * @description The ID of the remote issue link, such as the ID of the item on the remote system. + */ + id?: number; + /** @description The URL of the remote issue link. */ + self?: string; + }; + /** @description Details of a remote issue link. */ + RemoteIssueLinkRequest: { + /** @description Details of the remote application the linked item is in. For example, trello. */ + application?: components["schemas"]["Application"]; + /** + * @description An identifier for the remote item in the remote system. For example, the global ID for a remote item in Confluence would consist of the app ID and page ID, like this: `appId=456&pageId=123`. + * + * Setting this field enables the remote issue link details to be updated or deleted using remote system and item details as the record identifier, rather than using the record's Jira ID. + * + * The maximum length is 255 characters. + */ + globalId?: string; + /** @description Details of the item linked to. */ + object: components["schemas"]["RemoteObject"]; + /** @description Description of the relationship between the issue and the linked item. If not set, the relationship description "links to" is used in Jira. */ + relationship?: string; + [key: string]: unknown; + }; + /** @description The linked item. */ + RemoteObject: { + /** @description Details of the icon for the item. If no icon is defined, the default link icon is used in Jira. */ + icon?: components["schemas"]["Icon"]; + /** @description The status of the item. */ + status?: components["schemas"]["Status"]; + /** @description The summary details of the item. */ + summary?: string; + /** @description The title of the item. */ + title: string; + /** @description The URL of the item. */ + url: string; + [key: string]: unknown; + }; + RemoveOptionFromIssuesResult: { + /** @description A collection of errors related to unchanged issues. The collection size is limited, which means not all errors may be returned. */ + errors?: components["schemas"]["SimpleErrorCollection"]; + /** @description The IDs of the modified issues. */ + modifiedIssues?: number[]; + /** @description The IDs of the unchanged issues, those issues where errors prevent modification. */ + unmodifiedIssues?: number[]; + }; + /** @description Change the order of issue priorities. */ + ReorderIssuePriorities: { + /** @description The ID of the priority. Required if `position` isn't provided. */ + after?: string; + /** @description The list of issue IDs to be reordered. Cannot contain duplicates nor after ID. */ + ids: string[]; + /** @description The position for issue priorities to be moved to. Required if `after` isn't provided. */ + position?: string; + }; + /** @description Change the order of issue resolutions. */ + ReorderIssueResolutionsRequest: { + /** @description The ID of the resolution. Required if `position` isn't provided. */ + after?: string; + /** @description The list of resolution IDs to be reordered. Cannot contain duplicates nor after ID. */ + ids: string[]; + /** @description The position for issue resolutions to be moved to. Required if `after` isn't provided. */ + position?: string; + }; + /** @description The list of required status mappings by issue type. */ + RequiredMappingByIssueType: { + /** @description The ID of the issue type. */ + issueTypeId?: string; + /** @description The status IDs requiring mapping. */ + statusIds?: string[]; + }; + /** @description The list of required status mappings by workflow. */ + RequiredMappingByWorkflows: { + /** @description The ID of the source workflow. */ + sourceWorkflowId?: string; + /** @description The status IDs requiring mapping. */ + statusIds?: string[]; + /** @description The ID of the target workflow. */ + targetWorkflowId?: string; + }; + /** @description Details of an issue resolution. */ + Resolution: { + /** @description The description of the issue resolution. */ + description?: string; + /** @description The ID of the issue resolution. */ + id?: string; + /** @description The name of the issue resolution. */ + name?: string; + /** + * Format: uri + * @description The URL of the issue resolution. + */ + self?: string; + }; + /** @description The ID of an issue resolution. */ + ResolutionId: { + /** @description The ID of the issue resolution. */ + id: string; + [key: string]: unknown; + }; + ResolutionJsonBean: { + default?: boolean; + description?: string; + iconUrl?: string; + id?: string; + name?: string; + self?: string; + }; + Resource: { + description?: string; + /** Format: binary */ + file?: string; + filename?: string; + inputStream?: Record; + open?: boolean; + readable?: boolean; + /** Format: uri */ + uri?: string; + /** Format: url */ + url?: string; + }; + /** @description Details of the permission. */ + RestrictedPermission: { + /** @description The ID of the permission. Either `id` or `key` must be specified. Use [Get all permissions](#api-rest-api-3-permissions-get) to get the list of permissions. */ + id?: string; + /** @description The key of the permission. Either `id` or `key` must be specified. Use [Get all permissions](#api-rest-api-3-permissions-get) to get the list of permissions. */ + key?: string; + [key: string]: unknown; + }; + RichText: { + empty?: boolean; + emptyAdf?: boolean; + finalised?: boolean; + valueSet?: boolean; + }; + /** @description Details about a user assigned to a project role. */ + RoleActor: { + actorGroup?: components["schemas"]["ProjectRoleGroup"]; + actorUser?: components["schemas"]["ProjectRoleUser"]; + /** + * Format: uri + * @description The avatar of the role actor. + */ + avatarUrl?: string; + /** @description The display name of the role actor. For users, depending on the user’s privacy setting, this may return an alternative value for the user's name. */ + displayName?: string; + /** + * Format: int64 + * @description The ID of the role actor. + */ + id?: number; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** + * @description The type of role actor. + * @enum {string} + */ + type?: "atlassian-group-role-actor" | "atlassian-user-role-actor"; + }; + /** @description A rule configuration. */ + RuleConfiguration: { + /** + * @description Whether the rule is disabled. + * @default false + */ + disabled?: boolean; + /** @description A tag used to filter rules in [Get workflow transition rule configurations](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-transition-rules/#api-rest-api-3-workflow-rule-config-get). */ + tag?: string; + /** @description Configuration of the rule, as it is stored by the Connect or the Forge app on the rule configuration page. */ + value: string; + }; + /** @description The sanitized JQL queries for the given account IDs. */ + SanitizedJqlQueries: { + /** @description The list of sanitized JQL queries. */ + queries?: components["schemas"]["SanitizedJqlQuery"][]; + }; + /** @description Details of the sanitized JQL query. */ + SanitizedJqlQuery: { + /** @description The account ID of the user for whom sanitization was performed. */ + accountId?: string | null; + /** @description The list of errors. */ + errors?: components["schemas"]["ErrorCollection"]; + /** @description The initial query. */ + initialQuery?: string; + /** @description The sanitized query, if there were no errors. */ + sanitizedQuery?: string | null; + }; + /** @description The projects the item is associated with. Indicated for items associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO). */ + Scope: { + /** @description The project the item has scope in. */ + project?: components["schemas"]["ProjectDetails"]; + /** + * @description The type of scope. + * @enum {string} + */ + type?: "PROJECT" | "TEMPLATE"; + [key: string]: unknown; + }; + /** @description A screen. */ + Screen: { + /** @description The description of the screen. */ + description?: string; + /** + * Format: int64 + * @description The ID of the screen. + */ + id?: number; + /** @description The name of the screen. */ + name?: string; + /** @description The scope of the screen. */ + scope?: components["schemas"]["Scope"]; + }; + /** @description Details of a screen. */ + ScreenDetails: { + /** @description The description of the screen. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the screen. The name must be unique. The maximum length is 255 characters. */ + name: string; + }; + /** @description A screen scheme. */ + ScreenScheme: { + /** @description The description of the screen scheme. */ + description?: string; + /** + * Format: int64 + * @description The ID of the screen scheme. + */ + id?: number; + /** @description Details of the issue type screen schemes associated with the screen scheme. */ + issueTypeScreenSchemes?: components["schemas"]["PageBeanIssueTypeScreenScheme"]; + /** @description The name of the screen scheme. */ + name?: string; + /** @description The IDs of the screens for the screen types of the screen scheme. */ + screens?: components["schemas"]["ScreenTypes"]; + }; + /** @description Details of a screen scheme. */ + ScreenSchemeDetails: { + /** @description The description of the screen scheme. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the screen scheme. The name must be unique. The maximum length is 255 characters. */ + name: string; + /** @description The IDs of the screens for the screen types of the screen scheme. Only screens used in classic projects are accepted. */ + screens: components["schemas"]["ScreenTypes"]; + }; + /** @description The ID of a screen scheme. */ + ScreenSchemeId: { + /** + * Format: int64 + * @description The ID of the screen scheme. + */ + id: number; + }; + /** @description The IDs of the screens for the screen types of the screen scheme. */ + ScreenTypes: { + /** + * Format: int64 + * @description The ID of the create screen. + */ + create?: number; + /** + * Format: int64 + * @description The ID of the default screen. Required when creating a screen scheme. + */ + default?: number; + /** + * Format: int64 + * @description The ID of the edit screen. + */ + edit?: number; + /** + * Format: int64 + * @description The ID of the view screen. + */ + view?: number; + }; + /** @description A screen with tab details. */ + ScreenWithTab: { + /** @description The description of the screen. */ + description?: string; + /** + * Format: int64 + * @description The ID of the screen. + */ + id?: number; + /** @description The name of the screen. */ + name?: string; + /** @description The scope of the screen. */ + scope?: components["schemas"]["Scope"]; + /** @description The tab for the screen. */ + tab?: components["schemas"]["ScreenableTab"]; + }; + /** @description A screen tab field. */ + ScreenableField: { + /** @description The ID of the screen tab field. */ + id?: string; + /** @description The name of the screen tab field. Required on create and update. The maximum length is 255 characters. */ + name?: string; + }; + /** @description A screen tab. */ + ScreenableTab: { + /** + * Format: int64 + * @description The ID of the screen tab. + */ + id?: number; + /** @description The name of the screen tab. The maximum length is 255 characters. */ + name: string; + }; + /** @description Details of how to filter and list search auto complete information. */ + SearchAutoCompleteFilter: { + /** + * @description Include collapsed fields for fields that have non-unique names. + * @default false + */ + includeCollapsedFields?: boolean; + /** @description List of project IDs used to filter the visible field details returned. */ + projectIds?: number[]; + }; + SearchRequestBean: { + /** + * @description Use [expand](em>#expansion) to include additional information about issues in the response. Note that, unlike the majority of instances where `expand` is specified, `expand` is defined as a list of values. The expand options are: + * + * * `renderedFields` Returns field values rendered in HTML format. + * * `names` Returns the display name of each field. + * * `schema` Returns the schema describing a field type. + * * `transitions` Returns all possible transitions for the issue. + * * `operations` Returns all possible operations for the issue. + * * `editmeta` Returns information about how each field can be edited. + * * `changelog` Returns a list of recent updates to an issue, sorted by date, starting from the most recent. + * * `versionedRepresentations` Instead of `fields`, returns `versionedRepresentations` a JSON array containing each version of a field's value, with the highest numbered item representing the most recent version. + */ + expand?: string[]; + /** + * @description A list of fields to return for each issue, use it to retrieve a subset of fields. This parameter accepts a comma-separated list. Expand options include: + * + * * `*all` Returns all fields. + * * `*navigable` Returns navigable fields. + * * Any issue field, prefixed with a minus to exclude. + * + * The default is `*navigable`. + * + * Examples: + * + * * `summary,comment` Returns the summary and comments fields only. + * * `-description` Returns all navigable (default) fields except description. + * * `*all,-comment` Returns all fields except comments. + * + * Multiple `fields` parameters can be included in a request. + * + * Note: All navigable fields are returned by default. This differs from [GET issue](#api-rest-api-3-issue-issueIdOrKey-get) where the default is all fields. + */ + fields?: string[]; + /** @description Reference fields by their key (rather than ID). The default is `false`. */ + fieldsByKeys?: boolean; + /** @description A [JQL](https://confluence.atlassian.com/x/egORLQ) expression. */ + jql?: string; + /** + * Format: int32 + * @description The maximum number of items to return per page. + * @default 50 + */ + maxResults?: number; + /** @description A list of up to 5 issue properties to include in the results. This parameter accepts a comma-separated list. */ + properties?: string[]; + /** + * Format: int32 + * @description The index of the first item to return in the page of results (page offset). The base index is `0`. + */ + startAt?: number; + /** + * @description Determines how to validate the JQL query and treat the validation results. Supported values: + * + * * `strict` Returns a 400 response code if any errors are found, along with a list of all errors (and warnings). + * * `warn` Returns all errors as warnings. + * * `none` No validation is performed. + * * `true` *Deprecated* A legacy synonym for `strict`. + * * `false` *Deprecated* A legacy synonym for `warn`. + * + * The default is `strict`. + * + * Note: If the JQL is not correctly formed a 400 response code is returned, regardless of the `validateQuery` value. + * @enum {string} + */ + validateQuery?: "strict" | "warn" | "none" | "true" | "false"; + }; + /** @description The result of a JQL search. */ + SearchResults: { + /** @description Expand options that include additional search result details in the response. */ + expand?: string; + /** @description The list of issues found by the search. */ + issues?: readonly components["schemas"]["IssueBean"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** @description The ID and name of each field in the search results. */ + names?: { + [key: string]: string; + }; + /** @description The schema describing the field types in the search results. */ + schema?: { + [key: string]: components["schemas"]["JsonTypeBean"]; + }; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + /** @description Any warnings related to the JQL query. */ + warningMessages?: readonly string[]; + }; + /** @description Details of an issue level security item. */ + SecurityLevel: { + /** @description The description of the issue level security item. */ + description?: string; + /** @description The ID of the issue level security item. */ + id?: string; + /** @description Whether the issue level security item is the default. */ + isDefault?: boolean; + /** @description The ID of the issue level security scheme. */ + issueSecuritySchemeId?: string; + /** @description The name of the issue level security item. */ + name?: string; + /** @description The URL of the issue level security item. */ + self?: string; + }; + /** @description Issue security level member. */ + SecurityLevelMember: { + /** @description The user or group being granted the permission. It consists of a `type` and a type-dependent `parameter`. See [Holder object](../api-group-permission-schemes/#holder-object) in *Get all permission schemes* for more information. */ + holder: components["schemas"]["PermissionHolder"]; + /** @description The ID of the issue security level member. */ + id: string; + /** @description The ID of the issue security level. */ + issueSecurityLevelId: string; + /** @description The ID of the issue security scheme. */ + issueSecuritySchemeId: string; + managed?: boolean; + [key: string]: unknown; + }; + /** @description Details about a security scheme. */ + SecurityScheme: { + /** + * Format: int64 + * @description The ID of the default security level. + */ + defaultSecurityLevelId?: number; + /** @description The description of the issue security scheme. */ + description?: string; + /** + * Format: int64 + * @description The ID of the issue security scheme. + */ + id?: number; + levels?: components["schemas"]["SecurityLevel"][]; + /** @description The name of the issue security scheme. */ + name?: string; + /** @description The URL of the issue security scheme. */ + self?: string; + }; + /** @description The ID of the issue security scheme. */ + SecuritySchemeId: { + /** @description The ID of the issue security scheme. */ + id: string; + [key: string]: unknown; + }; + SecuritySchemeLevelBean: { + /** @description The description of the issue security scheme level. */ + description?: string; + /** @description Specifies whether the level is the default level. False by default. */ + isDefault?: boolean; + /** @description The list of level members which should be added to the issue security scheme level. */ + members?: components["schemas"]["SecuritySchemeLevelMemberBean"][]; + /** @description The name of the issue security scheme level. Must be unique. */ + name: string; + }; + SecuritySchemeLevelMemberBean: { + /** @description The value corresponding to the specified member type. */ + parameter?: string; + /** @description The issue security level member type, e.g `reporter`, `group`, `user`. */ + type: string; + }; + /** @description Details of issue security scheme level new members. */ + SecuritySchemeMembersRequest: { + /** @description The list of level members which should be added to the issue security scheme level. */ + members?: components["schemas"]["SecuritySchemeLevelMemberBean"][]; + }; + /** @description Details about an issue security scheme. */ + SecuritySchemeWithProjects: { + /** + * Format: int64 + * @description The default level ID of the issue security scheme. + */ + defaultLevel?: number; + /** @description The description of the issue security scheme. */ + description?: string; + /** + * Format: int64 + * @description The ID of the issue security scheme. + */ + id: number; + /** @description The name of the issue security scheme. */ + name: string; + /** @description The list of project IDs associated with the issue security scheme. */ + projectIds?: readonly number[]; + /** @description The URL of the issue security scheme. */ + self: string; + [key: string]: unknown; + }; + /** @description List of security schemes. */ + SecuritySchemes: { + /** @description List of security schemes. */ + issueSecuritySchemes?: readonly components["schemas"]["SecurityScheme"][]; + }; + /** @description Details about the Jira instance. */ + ServerInformation: { + /** @description The base URL of the Jira instance. */ + baseUrl?: string; + /** + * Format: date-time + * @description The timestamp when the Jira version was built. + */ + buildDate?: string; + /** + * Format: int32 + * @description The build number of the Jira version. + */ + buildNumber?: number; + /** @description The type of server deployment. This is always returned as *Cloud*. */ + deploymentType?: string; + /** @description The display URL of the Jira instance. */ + displayUrl?: string; + /** @description The display URL of the Servicedesk Help Center. */ + displayUrlServicedeskHelpCenter?: string; + /** @description Jira instance health check results. Deprecated and no longer returned. */ + healthChecks?: components["schemas"]["HealthCheckResult"][]; + /** @description The unique identifier of the Jira version. */ + scmInfo?: string; + /** + * Format: date-time + * @description The time in Jira when this request was responded to. + */ + serverTime?: string; + /** @description The default timezone of the Jira server. In a format known as Olson Time Zones, IANA Time Zones or TZ Database Time Zones. */ + serverTimeZone?: { + displayName?: string; + /** Format: int32 */ + dstsavings?: number; + id?: string; + /** Format: int32 */ + rawOffset?: number; + }; + /** @description The name of the Jira instance. */ + serverTitle?: string; + /** @description The version of Jira. */ + version?: string; + /** @description The major, minor, and revision version numbers of the Jira version. */ + versionNumbers?: number[]; + }; + ServiceManagementNavigationInfo: { + queueCategory?: string; + /** Format: int64 */ + queueId?: number; + queueName?: string; + }; + ServiceRegistry: { + /** @description service description */ + description?: string | null; + /** + * Format: uuid + * @description service ID + */ + id?: string; + /** @description service name */ + name?: string; + /** @description organization ID */ + organizationId?: string; + /** @description service revision */ + revision?: string; + serviceTier?: components["schemas"]["ServiceRegistryTier"]; + }; + ServiceRegistryTier: { + /** @description tier description */ + description?: string | null; + /** + * Format: uuid + * @description tier ID + */ + id?: string; + /** @description tier level */ + level?: number; + /** @description tier name */ + name?: string | null; + /** + * @description name key of the tier + * @example service-registry.tier1.name + */ + nameKey?: string; + }; + /** @description Details of new default levels. */ + SetDefaultLevelsRequest: { + /** @description List of objects with issue security scheme ID and new default level ID. */ + defaultValues: components["schemas"]["DefaultLevelValue"][]; + [key: string]: unknown; + }; + /** @description The new default issue priority. */ + SetDefaultPriorityRequest: { + /** @description The ID of the new default issue priority. Must be an existing ID or null. Setting this to null erases the default priority setting. */ + id: string; + }; + /** @description The new default issue resolution. */ + SetDefaultResolutionRequest: { + /** @description The ID of the new default issue resolution. Must be an existing ID or null. Setting this to null erases the default resolution setting. */ + id: string; + }; + /** @description Details of a share permission for the filter. */ + SharePermission: { + /** @description The group that the filter is shared with. For a request, specify the `groupId` or `name` property for the group. As a group's name can change, use of `groupId` is recommended. */ + group?: components["schemas"]["GroupName"]; + /** + * Format: int64 + * @description The unique identifier of the share permission. + */ + id?: number; + /** + * @description The project that the filter is shared with. This is similar to the project object returned by [Get project](#api-rest-api-3-project-projectIdOrKey-get) but it contains a subset of the properties, which are: `self`, `id`, `key`, `assigneeType`, `name`, `roles`, `avatarUrls`, `projectType`, `simplified`. + * For a request, specify the `id` for the project. + */ + project?: components["schemas"]["Project"]; + /** + * @description The project role that the filter is shared with. + * For a request, specify the `id` for the role. You must also specify the `project` object and `id` for the project that the role is in. + */ + role?: components["schemas"]["ProjectRole"]; + /** + * @description The type of share permission: + * + * * `user` Shared with a user. + * * `group` Shared with a group. If set in a request, then specify `sharePermission.group` as well. + * * `project` Shared with a project. If set in a request, then specify `sharePermission.project` as well. + * * `projectRole` Share with a project role in a project. This value is not returned in responses. It is used in requests, where it needs to be specify with `projectId` and `projectRoleId`. + * * `global` Shared globally. If set in a request, no other `sharePermission` properties need to be specified. + * * `loggedin` Shared with all logged-in users. Note: This value is set in a request by specifying `authenticated` as the `type`. + * * `project-unknown` Shared with a project that the user does not have access to. Cannot be set in a request. + * @enum {string} + */ + type: "user" | "group" | "project" | "projectRole" | "global" | "loggedin" | "authenticated" | "project-unknown"; + /** @description The user account ID that the filter is shared with. For a request, specify the `accountId` property for the user. */ + user?: components["schemas"]["UserBean"]; + }; + SharePermissionInputBean: { + /** @description The user account ID that the filter is shared with. For a request, specify the `accountId` property for the user. */ + accountId?: string; + /** @description The ID of the group, which uniquely identifies the group across all Atlassian products.For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*. Cannot be provided with `groupname`. */ + groupId?: string; + /** @description The name of the group to share the filter with. Set `type` to `group`. Please note that the name of a group is mutable, to reliably identify a group use `groupId`. */ + groupname?: string; + /** @description The ID of the project to share the filter with. Set `type` to `project`. */ + projectId?: string; + /** @description The ID of the project role to share the filter with. Set `type` to `projectRole` and the `projectId` for the project that the role is in. */ + projectRoleId?: string; + /** + * Format: int32 + * @description The rights for the share permission. + */ + rights?: number; + /** + * @description The type of the share permission.Specify the type as follows: + * + * * `user` Share with a user. + * * `group` Share with a group. Specify `groupname` as well. + * * `project` Share with a project. Specify `projectId` as well. + * * `projectRole` Share with a project role in a project. Specify `projectId` and `projectRoleId` as well. + * * `global` Share globally, including anonymous users. If set, this type overrides all existing share permissions and must be deleted before any non-global share permissions is set. + * * `authenticated` Share with all logged-in users. This shows as `loggedin` in the response. If set, this type overrides all existing share permissions and must be deleted before any non-global share permissions is set. + * @enum {string} + */ + type: "user" | "project" | "group" | "projectRole" | "global" | "authenticated"; + }; + SimpleApplicationPropertyBean: { + /** @description The ID of the application property. */ + id?: string; + /** @description The new value. */ + value?: string; + }; + SimpleErrorCollection: { + /** @description The list of error messages produced by this operation. For example, "input parameter 'key' must be provided" */ + errorMessages?: string[]; + /** @description The list of errors by parameter returned by the operation. For example,"projectKey": "Project keys must start with an uppercase letter, followed by one or more uppercase alphanumeric characters." */ + errors?: { + [key: string]: string; + }; + /** Format: int32 */ + httpStatusCode?: number; + }; + /** @description Details about the operations available in this version. */ + SimpleLink: { + href?: string; + iconClass?: string; + id?: string; + label?: string; + styleClass?: string; + title?: string; + /** Format: int32 */ + weight?: number; + }; + SimpleListWrapperApplicationRole: { + callback?: components["schemas"]["ListWrapperCallbackApplicationRole"]; + items?: components["schemas"]["ApplicationRole"][]; + /** Format: int32 */ + "max-results"?: number; + pagingCallback?: components["schemas"]["ListWrapperCallbackApplicationRole"]; + /** Format: int32 */ + size?: number; + }; + SimpleListWrapperGroupName: { + callback?: components["schemas"]["ListWrapperCallbackGroupName"]; + items?: components["schemas"]["GroupName"][]; + /** Format: int32 */ + "max-results"?: number; + pagingCallback?: components["schemas"]["ListWrapperCallbackGroupName"]; + /** Format: int32 */ + size?: number; + }; + /** @description Represents a usage of an entity by a project ID and related issue type IDs. */ + SimpleUsage: { + /** @description The issue type IDs for the usage. */ + issueTypeIds: string[]; + /** @description The project ID for the usage. */ + projectId: string; + }; + SimplifiedHierarchyLevel: { + /** + * Format: int64 + * @description The ID of the level above this one in the hierarchy. This property is deprecated, see [Change notice: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + aboveLevelId?: number; + /** + * Format: int64 + * @description The ID of the level below this one in the hierarchy. This property is deprecated, see [Change notice: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + belowLevelId?: number; + /** + * Format: uuid + * @description The external UUID of the hierarchy level. This property is deprecated, see [Change notice: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + externalUuid?: string; + /** Format: int32 */ + hierarchyLevelNumber?: number; + /** + * Format: int64 + * @description The ID of the hierarchy level. This property is deprecated, see [Change notice: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + id?: number; + /** @description The issue types available in this hierarchy level. */ + issueTypeIds?: number[]; + /** + * Format: int32 + * @description The level of this item in the hierarchy. + */ + level?: number; + /** @description The name of this hierarchy level. */ + name?: string; + /** + * Format: int64 + * @description The ID of the project configuration. This property is deprecated, see [Change oticen: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + projectConfigurationId?: number; + }; + SoftwareNavigationInfo: { + /** Format: int64 */ + boardId?: number; + boardName?: string; + simpleBoard?: boolean; + /** Format: int64 */ + totalBoardsInProject?: number; + }; + /** @description The status of the item. */ + Status: { + /** @description Details of the icon representing the status. If not provided, no status icon displays in Jira. */ + icon?: components["schemas"]["Icon"]; + /** @description Whether the item is resolved. If set to "true", the link to the issue is displayed in a strikethrough font, otherwise the link displays in normal font. */ + resolved?: boolean; + [key: string]: unknown; + }; + /** @description A status category. */ + StatusCategory: { + /** @description The name of the color used to represent the status category. */ + colorName?: string; + /** + * Format: int64 + * @description The ID of the status category. + */ + id?: number; + /** @description The key of the status category. */ + key?: string; + /** @description The name of the status category. */ + name?: string; + /** @description The URL of the status category. */ + self?: string; + [key: string]: unknown; + }; + /** @description Details of the status being created. */ + StatusCreate: { + /** @description The description of the status. */ + description?: string; + /** @description The name of the status. */ + name: string; + /** + * @description The category of the status. + * @enum {string} + */ + statusCategory: "TODO" | "IN_PROGRESS" | "DONE"; + }; + /** @description Details of the statuses being created and their scope. */ + StatusCreateRequest: { + scope: components["schemas"]["StatusScope"]; + /** @description Details of the statuses being created. */ + statuses: components["schemas"]["StatusCreate"][]; + }; + /** @description A status. */ + StatusDetails: { + /** @description The description of the status. */ + description?: string; + /** @description The URL of the icon used to represent the status. */ + iconUrl?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The name of the status. */ + name?: string; + /** @description The scope of the field. */ + scope?: components["schemas"]["Scope"]; + /** @description The URL of the status. */ + self?: string; + /** @description The category assigned to the status. */ + statusCategory?: components["schemas"]["StatusCategory"]; + [key: string]: unknown; + }; + /** @description The statuses associated with this workflow. */ + StatusLayoutUpdate: { + layout?: components["schemas"]["WorkflowLayout"]; + /** @description The properties for this status layout. */ + properties: { + [key: string]: string; + }; + /** @description A unique ID which the status will use to refer to this layout configuration. */ + statusReference: string; + [key: string]: unknown; + }; + /** @description Details about the mapping from a status to a new status for an issue type. */ + StatusMapping: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The ID of the new status. */ + newStatusId: string; + /** @description The ID of the status. */ + statusId: string; + }; + /** @description The mapping of old to new status ID for a specific project and issue type. */ + StatusMappingDTO: { + /** @description The issue type for the status mapping. */ + issueTypeId: string; + /** @description The project for the status mapping. */ + projectId: string; + /** @description The list of old and new status ID mappings for the specified project and issue type. */ + statusMigrations: components["schemas"]["StatusMigration"][]; + [key: string]: unknown; + }; + /** @description The details of the statuses in the associated workflows. */ + StatusMetadata: { + /** + * @description The category of the status. + * @enum {string} + */ + category?: "TODO" | "IN_PROGRESS" | "DONE"; + /** @description The ID of the status. */ + id?: string; + /** @description The name of the status. */ + name?: string; + }; + /** @description The mapping of old to new status ID. */ + StatusMigration: { + /** @description The new status ID. */ + newStatusReference: string; + /** @description The old status ID. */ + oldStatusReference: string; + [key: string]: unknown; + }; + /** @description The status reference and port that a transition is connected to. */ + StatusReferenceAndPort: { + /** + * Format: int32 + * @description The port this transition uses to connect to this status. + */ + port?: number; + /** @description The reference of this status. */ + statusReference: string; + } | null; + /** @description The scope of the status. */ + StatusScope: { + project?: components["schemas"]["ProjectId"]; + /** + * @description The scope of the status. `GLOBAL` for company-managed projects and `PROJECT` for team-managed projects. + * @enum {string} + */ + type: "PROJECT" | "GLOBAL"; + }; + /** @description Details of the status being updated. */ + StatusUpdate: { + /** @description The description of the status. */ + description?: string; + /** @description The ID of the status. */ + id: string; + /** @description The name of the status. */ + name: string; + /** + * @description The category of the status. + * @enum {string} + */ + statusCategory: "TODO" | "IN_PROGRESS" | "DONE"; + [key: string]: unknown; + }; + /** @description The list of statuses that will be updated. */ + StatusUpdateRequest: { + /** @description The list of statuses that will be updated. */ + statuses: components["schemas"]["StatusUpdate"][]; + }; + /** @description The statuses associated with each workflow. */ + StatusesPerWorkflow: { + /** @description The ID of the initial status for the workflow. */ + initialStatusId?: string; + /** @description The status IDs associated with the workflow. */ + statuses?: string[]; + /** @description The ID of the workflow. */ + workflowId?: string; + }; + StreamingResponseBody: Record; + StringList: Record; + /** @description An issue suggested for use in the issue picker auto-completion. */ + SuggestedIssue: { + /** + * Format: int64 + * @description The ID of the issue. + */ + id?: number; + /** @description The URL of the issue type's avatar. */ + img?: string; + /** @description The key of the issue. */ + key?: string; + /** @description The key of the issue in HTML format. */ + keyHtml?: string; + /** @description The phrase containing the query string in HTML format, with the string highlighted with HTML bold tags. */ + summary?: string; + /** @description The phrase containing the query string, as plain text. */ + summaryText?: string; + }; + /** @description List of system avatars. */ + SystemAvatars: { + /** @description A list of avatar details. */ + system?: readonly components["schemas"]["Avatar"][]; + }; + /** @description Details about a task. */ + TaskProgressBeanObject: { + /** @description The description of the task. */ + description?: string; + /** + * Format: int64 + * @description The execution time of the task, in milliseconds. + */ + elapsedRuntime: number; + /** + * Format: int64 + * @description A timestamp recording when the task was finished. + */ + finished?: number; + /** @description The ID of the task. */ + id: string; + /** + * Format: int64 + * @description A timestamp recording when the task progress was last updated. + */ + lastUpdate: number; + /** @description Information about the progress of the task. */ + message?: string; + /** + * Format: int64 + * @description The progress of the task, as a percentage complete. + */ + progress: number; + /** @description The result of the task execution. */ + result?: unknown; + /** + * Format: uri + * @description The URL of the task. + */ + self: string; + /** + * Format: int64 + * @description A timestamp recording when the task was started. + */ + started?: number; + /** + * @description The status of the task. + * @enum {string} + */ + status: "ENQUEUED" | "RUNNING" | "COMPLETE" | "FAILED" | "CANCEL_REQUESTED" | "CANCELLED" | "DEAD"; + /** + * Format: int64 + * @description A timestamp recording when the task was submitted. + */ + submitted: number; + /** + * Format: int64 + * @description The ID of the user who submitted the task. + */ + submittedBy: number; + }; + /** @description Details about a task. */ + TaskProgressBeanRemoveOptionFromIssuesResult: { + /** @description The description of the task. */ + description?: string; + /** + * Format: int64 + * @description The execution time of the task, in milliseconds. + */ + elapsedRuntime: number; + /** + * Format: int64 + * @description A timestamp recording when the task was finished. + */ + finished?: number; + /** @description The ID of the task. */ + id: string; + /** + * Format: int64 + * @description A timestamp recording when the task progress was last updated. + */ + lastUpdate: number; + /** @description Information about the progress of the task. */ + message?: string; + /** + * Format: int64 + * @description The progress of the task, as a percentage complete. + */ + progress: number; + /** @description The result of the task execution. */ + result?: components["schemas"]["RemoveOptionFromIssuesResult"]; + /** + * Format: uri + * @description The URL of the task. + */ + self: string; + /** + * Format: int64 + * @description A timestamp recording when the task was started. + */ + started?: number; + /** + * @description The status of the task. + * @enum {string} + */ + status: "ENQUEUED" | "RUNNING" | "COMPLETE" | "FAILED" | "CANCEL_REQUESTED" | "CANCELLED" | "DEAD"; + /** + * Format: int64 + * @description A timestamp recording when the task was submitted. + */ + submitted: number; + /** + * Format: int64 + * @description The ID of the user who submitted the task. + */ + submittedBy: number; + }; + /** @description Details of the time tracking configuration. */ + TimeTrackingConfiguration: { + /** + * @description The default unit of time applied to logged time. + * @enum {string} + */ + defaultUnit: "minute" | "hour" | "day" | "week"; + /** + * @description The format that will appear on an issue's *Time Spent* field. + * @enum {string} + */ + timeFormat: "pretty" | "days" | "hours"; + /** + * Format: double + * @description The number of days in a working week. + */ + workingDaysPerWeek: number; + /** + * Format: double + * @description The number of hours in a working day. + */ + workingHoursPerDay: number; + }; + /** @description Time tracking details. */ + TimeTrackingDetails: { + /** @description The original estimate of time needed for this issue in readable format. */ + originalEstimate?: string; + /** + * Format: int64 + * @description The original estimate of time needed for this issue in seconds. + */ + originalEstimateSeconds?: number; + /** @description The remaining estimate of time needed for this issue in readable format. */ + remainingEstimate?: string; + /** + * Format: int64 + * @description The remaining estimate of time needed for this issue in seconds. + */ + remainingEstimateSeconds?: number; + /** @description Time worked on this issue in readable format. */ + timeSpent?: string; + /** + * Format: int64 + * @description Time worked on this issue in seconds. + */ + timeSpentSeconds?: number; + }; + /** @description Details about the time tracking provider. */ + TimeTrackingProvider: { + /** @description The key for the time tracking provider. For example, *JIRA*. */ + key: string; + /** @description The name of the time tracking provider. For example, *JIRA provided time tracking*. */ + name?: string; + /** @description The URL of the configuration page for the time tracking provider app. For example, *\/example/config/url*. This property is only returned if the `adminPageKey` property is set in the module descriptor of the time tracking provider app. */ + url?: string; + }; + /** @description Details of a workflow transition. */ + Transition: { + /** @description The description of the transition. */ + description: string; + /** @description The statuses the transition can start from. */ + from: string[]; + /** @description The ID of the transition. */ + id: string; + /** @description The name of the transition. */ + name: string; + /** @description The properties of the transition. */ + properties?: { + [key: string]: unknown; + }; + rules?: components["schemas"]["WorkflowRules"]; + screen?: components["schemas"]["TransitionScreenDetails"]; + /** @description The status the transition goes to. */ + to: string; + /** + * @description The type of the transition. + * @enum {string} + */ + type: "global" | "initial" | "directed"; + }; + /** @description The details of a transition screen. */ + TransitionScreenDetails: { + /** @description The ID of the screen. */ + id: string; + /** @description The name of the screen. */ + name?: string; + }; + /** @description The transitions of this workflow. */ + TransitionUpdateDTO: { + /** @description The post-functions of the transition. */ + actions?: components["schemas"]["WorkflowRuleConfiguration"][]; + conditions?: components["schemas"]["ConditionGroupUpdate"]; + /** @description The custom event ID of the transition. */ + customIssueEventId?: string; + /** @description The description of the transition. */ + description?: string; + /** @description The statuses the transition can start from. */ + from?: components["schemas"]["StatusReferenceAndPort"][]; + /** @description The ID of the transition. */ + id: string; + /** @description The name of the transition. */ + name: string; + /** @description The properties of the transition. */ + properties?: { + [key: string]: string; + }; + to?: components["schemas"]["StatusReferenceAndPort"]; + transitionScreen?: components["schemas"]["WorkflowRuleConfiguration"]; + /** @description The triggers of the transition. */ + triggers?: components["schemas"]["WorkflowTrigger"][]; + /** + * @description The transition type. + * @enum {string} + */ + type: "INITIAL" | "GLOBAL" | "DIRECTED"; + /** @description The validators of the transition. */ + validators?: components["schemas"]["WorkflowRuleConfiguration"][]; + [key: string]: unknown; + }; + /** @description List of issue transitions. */ + Transitions: { + /** @description Expand options that include additional transitions details in the response. */ + expand?: string; + /** @description List of issue transitions. */ + transitions?: readonly components["schemas"]["IssueTransition"][]; + }; + /** @description The details of a UI modification's context, which define where to activate the UI modification. */ + UiModificationContextDetails: { + /** @description The ID of the UI modification context. */ + id?: string; + /** @description Whether a context is available. For example, when a project is deleted the context becomes unavailable. */ + isAvailable?: boolean; + /** @description The issue type ID of the context. Null is treated as a wildcard, meaning the UI modification will be applied to all issue types. Each UI modification context can have a maximum of one wildcard. */ + issueTypeId?: string; + /** @description The project ID of the context. Null is treated as a wildcard, meaning the UI modification will be applied to all projects. Each UI modification context can have a maximum of one wildcard. */ + projectId?: string; + /** + * @description The view type of the context. Only `GIC`(Global Issue Create) and `IssueView` are supported. Null is treated as a wildcard, meaning the UI modification will be applied to all view types. Each UI modification context can have a maximum of one wildcard. + * @enum {string} + */ + viewType?: "GIC" | "IssueView"; + }; + /** @description The details of a UI modification. */ + UiModificationDetails: { + /** @description List of contexts of the UI modification. The maximum number of contexts is 1000. */ + contexts?: readonly components["schemas"]["UiModificationContextDetails"][]; + /** @description The data of the UI modification. The maximum size of the data is 50000 characters. */ + data?: string; + /** @description The description of the UI modification. The maximum length is 255 characters. */ + description?: string; + /** @description The ID of the UI modification. */ + id: string; + /** @description The name of the UI modification. The maximum length is 255 characters. */ + name: string; + /** @description The URL of the UI modification. */ + self: string; + }; + /** @description Identifiers for a UI modification. */ + UiModificationIdentifiers: { + /** @description The ID of the UI modification. */ + id: string; + /** @description The URL of the UI modification. */ + self: string; + }; + UnrestrictedUserEmail: { + /** @description The accountId of the user */ + accountId?: string; + /** @description The email of the user */ + email?: string; + [key: string]: unknown; + }; + /** @description Details of a custom field. */ + UpdateCustomFieldDetails: { + /** @description The description of the custom field. The maximum length is 40000 characters. */ + description?: string; + /** @description The name of the custom field. It doesn't have to be unique. The maximum length is 255 characters. */ + name?: string; + /** + * @description The searcher that defines the way the field is searched in Jira. It can be set to `null`, otherwise you must specify the valid searcher for the field type, as listed below (abbreviated values shown): + * + * * `cascadingselect`: `cascadingselectsearcher` + * * `datepicker`: `daterange` + * * `datetime`: `datetimerange` + * * `float`: `exactnumber` or `numberrange` + * * `grouppicker`: `grouppickersearcher` + * * `importid`: `exactnumber` or `numberrange` + * * `labels`: `labelsearcher` + * * `multicheckboxes`: `multiselectsearcher` + * * `multigrouppicker`: `multiselectsearcher` + * * `multiselect`: `multiselectsearcher` + * * `multiuserpicker`: `userpickergroupsearcher` + * * `multiversion`: `versionsearcher` + * * `project`: `projectsearcher` + * * `radiobuttons`: `multiselectsearcher` + * * `readonlyfield`: `textsearcher` + * * `select`: `multiselectsearcher` + * * `textarea`: `textsearcher` + * * `textfield`: `textsearcher` + * * `url`: `exacttextsearcher` + * * `userpicker`: `userpickergroupsearcher` + * * `version`: `versionsearcher` + * @enum {string} + */ + searcherKey?: "com.atlassian.jira.plugin.system.customfieldtypes:cascadingselectsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:daterange" | "com.atlassian.jira.plugin.system.customfieldtypes:datetimerange" | "com.atlassian.jira.plugin.system.customfieldtypes:exactnumber" | "com.atlassian.jira.plugin.system.customfieldtypes:exacttextsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:labelsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:multiselectsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:numberrange" | "com.atlassian.jira.plugin.system.customfieldtypes:projectsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:textsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:userpickergroupsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:versionsearcher"; + }; + /** @description The ID of a screen scheme. */ + UpdateDefaultScreenScheme: { + /** @description The ID of the screen scheme. */ + screenSchemeId: string; + }; + /** @description The details of the field configuration scheme. */ + UpdateFieldConfigurationSchemeDetails: { + /** @description The description of the field configuration scheme. */ + description?: string; + /** @description The name of the field configuration scheme. The name must be unique. */ + name: string; + }; + /** @description Details of issue security scheme level. */ + UpdateIssueSecurityLevelDetails: { + /** @description The description of the issue security scheme level. */ + description?: string; + /** @description The name of the issue security scheme level. Must be unique. */ + name?: string; + [key: string]: unknown; + }; + UpdateIssueSecuritySchemeRequestBean: { + /** @description The description of the security scheme scheme. */ + description?: string; + /** @description The name of the security scheme scheme. Must be unique. */ + name?: string; + }; + /** @description Details of a notification scheme. */ + UpdateNotificationSchemeDetails: { + /** @description The description of the notification scheme. */ + description?: string; + /** @description The name of the notification scheme. Must be unique. */ + name?: string; + [key: string]: unknown; + }; + /** @description Details of an issue priority. */ + UpdatePriorityDetails: { + /** @description The description of the priority. */ + description?: string; + /** + * @description The URL of an icon for the priority. Accepted protocols are HTTP and HTTPS. Built in icons can also be used. + * @enum {string} + */ + iconUrl?: "/images/icons/priorities/blocker.png" | "/images/icons/priorities/critical.png" | "/images/icons/priorities/high.png" | "/images/icons/priorities/highest.png" | "/images/icons/priorities/low.png" | "/images/icons/priorities/lowest.png" | "/images/icons/priorities/major.png" | "/images/icons/priorities/medium.png" | "/images/icons/priorities/minor.png" | "/images/icons/priorities/trivial.png"; + /** @description The name of the priority. Must be unique. */ + name?: string; + /** @description The status color of the priority in 3-digit or 6-digit hexadecimal format. */ + statusColor?: string; + [key: string]: unknown; + }; + /** @description Details about the project. */ + UpdateProjectDetails: { + /** + * @description The default assignee when creating issues for this project. + * @enum {string} + */ + assigneeType?: "PROJECT_LEAD" | "UNASSIGNED"; + /** + * Format: int64 + * @description An integer value for the project's avatar. + */ + avatarId?: number; + /** + * Format: int64 + * @description The ID of the project's category. A complete list of category IDs is found using the [Get all project categories](#api-rest-api-3-projectCategory-get) operation. To remove the project category from the project, set the value to `-1.` + */ + categoryId?: number; + /** @description A brief description of the project. */ + description?: string; + /** + * Format: int64 + * @description The ID of the issue security scheme for the project, which enables you to control who can and cannot view issues. Use the [Get issue security schemes](#api-rest-api-3-issuesecurityschemes-get) resource to get all issue security scheme IDs. + */ + issueSecurityScheme?: number; + /** @description Project keys must be unique and start with an uppercase letter followed by one or more uppercase alphanumeric characters. The maximum length is 10 characters. */ + key?: string; + /** @description This parameter is deprecated because of privacy changes. Use `leadAccountId` instead. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. The user name of the project lead. Cannot be provided with `leadAccountId`. */ + lead?: string; + /** @description The account ID of the project lead. Cannot be provided with `lead`. */ + leadAccountId?: string; + /** @description The name of the project. */ + name?: string; + /** + * Format: int64 + * @description The ID of the notification scheme for the project. Use the [Get notification schemes](#api-rest-api-3-notificationscheme-get) resource to get a list of notification scheme IDs. + */ + notificationScheme?: number; + /** + * Format: int64 + * @description The ID of the permission scheme for the project. Use the [Get all permission schemes](#api-rest-api-3-permissionscheme-get) resource to see a list of all permission scheme IDs. + */ + permissionScheme?: number; + /** @description A link to information about this project, such as project documentation */ + url?: string; + }; + /** @description Details of an issue resolution. */ + UpdateResolutionDetails: { + /** @description The description of the resolution. */ + description?: string; + /** @description The name of the resolution. Must be unique. */ + name: string; + [key: string]: unknown; + }; + /** @description Details of a screen. */ + UpdateScreenDetails: { + /** @description The description of the screen. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the screen. The name must be unique. The maximum length is 255 characters. */ + name?: string; + }; + /** @description Details of a screen scheme. */ + UpdateScreenSchemeDetails: { + /** @description The description of the screen scheme. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the screen scheme. The name must be unique. The maximum length is 255 characters. */ + name?: string; + /** @description The IDs of the screens for the screen types of the screen scheme. Only screens used in classic projects are accepted. */ + screens?: components["schemas"]["UpdateScreenTypes"]; + }; + /** @description The IDs of the screens for the screen types of the screen scheme. */ + UpdateScreenTypes: { + /** @description The ID of the create screen. To remove the screen association, pass a null. */ + create?: string; + /** @description The ID of the default screen. When specified, must include a screen ID as a default screen is required. */ + default?: string; + /** @description The ID of the edit screen. To remove the screen association, pass a null. */ + edit?: string; + /** @description The ID of the view screen. To remove the screen association, pass a null. */ + view?: string; + }; + /** @description The details of a UI modification. */ + UpdateUiModificationDetails: { + /** @description List of contexts of the UI modification. The maximum number of contexts is 1000. If provided, replaces all existing contexts. */ + contexts?: components["schemas"]["UiModificationContextDetails"][]; + /** @description The data of the UI modification. The maximum size of the data is 50000 characters. */ + data?: string; + /** @description The description of the UI modification. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the UI modification. The maximum length is 255 characters. */ + name?: string; + }; + UpdateUserToGroupBean: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This property is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + [key: string]: unknown; + }; + /** @description A project category. */ + UpdatedProjectCategory: { + /** @description The name of the project category. */ + description?: string; + /** @description The ID of the project category. */ + id?: string; + /** @description The description of the project category. */ + name?: string; + /** @description The URL of the project category. */ + self?: string; + }; + /** + * @description A user with details as permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions: + * + * * User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank). + * * User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values. + * * User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values. + */ + User: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Required in requests. */ + accountId?: string; + /** + * @description The user account type. Can take the following values: + * + * * `atlassian` regular Atlassian user account + * * `app` system account used for Connect applications and OAuth to represent external systems + * * `customer` Jira Service Desk account representing an external service desk + * @enum {string} + */ + accountType?: "atlassian" | "app" | "customer" | "unknown"; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The application roles the user is assigned to. */ + applicationRoles?: components["schemas"]["SimpleListWrapperApplicationRole"]; + /** @description The avatars of the user. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description The email address of the user. Depending on the user’s privacy setting, this may be returned as null. */ + emailAddress?: string; + /** @description Expand options that include additional user details in the response. */ + expand?: string; + /** @description The groups that the user belongs to. */ + groups?: components["schemas"]["SimpleListWrapperGroupName"]; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description The locale of the user. Depending on the user’s privacy setting, this may be returned as null. */ + locale?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy setting, this may be returned as null. */ + timeZone?: string; + }; + UserBean: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The avatars of the user. */ + avatarUrls?: components["schemas"]["UserBeanAvatarUrls"]; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + }; + UserBeanAvatarUrls: { + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + UserColumnRequestBody: { + columns?: string[]; + }; + /** @description A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user) specified as an Atlassian account ID. */ + UserContextVariable: { + /** @description The account ID of the user. */ + accountId: string; + /** @description Type of custom context variable. */ + type: string; + }; + /** + * @description User details permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions: + * + * * User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank). + * * User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values. + * * User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values. + */ + UserDetails: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user) */ + accountType?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The avatars of the user. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description The display name of the user. Depending on the user’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description The email address of the user. Depending on the user’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description The URL of the user. */ + self?: string; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null. */ + timeZone?: string; + }; + /** @description Filter for a User Picker (single) custom field. */ + UserFilter: { + /** @description Whether the filter is enabled. */ + enabled: boolean; + /** @description User groups autocomplete suggestion users must belong to. If not provided, the default values are used. A maximum of 10 groups can be provided. */ + groups?: string[]; + /** @description Roles that autocomplete suggestion users must belong to. If not provided, the default values are used. A maximum of 10 roles can be provided. */ + roleIds?: number[]; + }; + /** @description List of user account IDs. */ + UserKey: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Returns *unknown* if the record is deleted and corrupted, for example, as the result of a server import. */ + accountId?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + }; + /** @description A paginated list of users sharing the filter. This includes users that are members of the groups or can browse the projects that the filter is shared with. */ + UserList: { + /** + * Format: int32 + * @description The index of the last item returned on the page. + */ + "end-index"?: number; + /** @description The list of items. */ + items?: readonly components["schemas"]["User"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + "max-results"?: number; + /** + * Format: int32 + * @description The number of items on the page. + */ + size?: number; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + "start-index"?: number; + }; + UserMigrationBean: { + accountId?: string; + key?: string; + username?: string; + }; + /** @description Details of a permission and its availability to a user. */ + UserPermission: { + /** @description Indicate whether the permission key is deprecated. Note that deprecated keys cannot be used in the `permissions parameter of Get my permissions. Deprecated keys are not returned by Get all permissions.` */ + deprecatedKey?: boolean; + /** @description The description of the permission. */ + description?: string; + /** @description Whether the permission is available to the user in the queried context. */ + havePermission?: boolean; + /** @description The ID of the permission. Either `id` or `key` must be specified. Use [Get all permissions](#api-rest-api-3-permissions-get) to get the list of permissions. */ + id?: string; + /** @description The key of the permission. Either `id` or `key` must be specified. Use [Get all permissions](#api-rest-api-3-permissions-get) to get the list of permissions. */ + key?: string; + /** @description The name of the permission. */ + name?: string; + /** + * @description The type of the permission. + * @enum {string} + */ + type?: "GLOBAL" | "PROJECT"; + [key: string]: unknown; + }; + /** @description A user found in a search. */ + UserPickerUser: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** + * Format: uri + * @description The avatar URL of the user. + */ + avatarUrl?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may be returned as null. */ + displayName?: string; + /** @description The display name, email address, and key of the user with the matched query string highlighted with the HTML bold tag. */ + html?: string; + /** @description This property is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description This property is no longer available . See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + }; + /** @description The level of validation to return from the API. If no values are provided, the default would return `WARNING` and `ERROR` level validation results. */ + ValidationOptionsForCreate: { + levels?: ("WARNING" | "ERROR")[]; + }; + /** @description The level of validation to return from the API. If no values are provided, the default would return `WARNING` and `ERROR` level validation results. */ + ValidationOptionsForUpdate: { + levels?: ("WARNING" | "ERROR")[]; + }; + /** @description An operand that is a user-provided value. */ + ValueOperand: { + /** @description Encoded value, which can be used directly in a JQL query. */ + encodedValue?: string; + /** @description The operand value. */ + value: string; + }; + /** @description Details about a project version. */ + Version: { + /** @description If the expand option `approvers` is used, returns a list containing the approvers for this version. */ + approvers?: readonly components["schemas"]["VersionApprover"][]; + /** @description Indicates that the version is archived. Optional when creating or updating a version. */ + archived?: boolean; + /** @description The description of the version. Optional when creating or updating a version. The maximum size is 16,384 bytes. */ + description?: string; + /** @description If the expand option `driver` is used, returns the Atlassian account ID of the driver. */ + driver?: string; + /** + * @description Use [expand](em>#expansion) to include additional information about version in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `operations` Returns the list of operations available for this version. + * * `issuesstatus` Returns the count of issues in this version for each of the status categories *to do*, *in progress*, *done*, and *unmapped*. The *unmapped* property contains a count of issues with a status other than *to do*, *in progress*, and *done*. + * * `driver` Returns the Atlassian account ID of the version driver. + * * `approvers` Returns a list containing approvers for this version. + * + * Optional for create and update. + */ + expand?: string; + /** @description The ID of the version. */ + id?: string; + /** @description If the expand option `issuesstatus` is used, returns the count of issues in this version for each of the status categories *to do*, *in progress*, *done*, and *unmapped*. The *unmapped* property contains a count of issues with a status other than *to do*, *in progress*, and *done*. */ + issuesStatusForFixVersion?: components["schemas"]["VersionIssuesStatus"]; + /** + * Format: uri + * @description The URL of the self link to the version to which all unfixed issues are moved when a version is released. Not applicable when creating a version. Optional when updating a version. + */ + moveUnfixedIssuesTo?: string; + /** @description The unique name of the version. Required when creating a version. Optional when updating a version. The maximum length is 255 characters. */ + name?: string; + /** @description If the expand option `operations` is used, returns the list of operations available for this version. */ + operations?: readonly components["schemas"]["SimpleLink"][]; + /** @description Indicates that the version is overdue. */ + overdue?: boolean; + /** @description Deprecated. Use `projectId`. */ + project?: string; + /** + * Format: int64 + * @description The ID of the project to which this version is attached. Required when creating a version. Not applicable when updating a version. + */ + projectId?: number; + /** + * Format: date + * @description The release date of the version. Expressed in ISO 8601 format (yyyy-mm-dd). Optional when creating or updating a version. + */ + releaseDate?: string; + /** @description Indicates that the version is released. If the version is released a request to release again is ignored. Not applicable when creating a version. Optional when updating a version. */ + released?: boolean; + /** + * Format: uri + * @description The URL of the version. + */ + self?: string; + /** + * Format: date + * @description The start date of the version. Expressed in ISO 8601 format (yyyy-mm-dd). Optional when creating or updating a version. + */ + startDate?: string; + /** @description The date on which work on this version is expected to finish, expressed in the instance's *Day/Month/Year Format* date format. */ + userReleaseDate?: string; + /** @description The date on which work on this version is expected to start, expressed in the instance's *Day/Month/Year Format* date format. */ + userStartDate?: string; + }; + /** @description Contains details about a version approver. */ + VersionApprover: { + /** @description The Atlassian account ID of the approver. */ + accountId?: string; + /** @description A description of why the user is declining the approval. */ + declineReason?: string; + /** @description A description of what the user is approving within the specified version. */ + description?: string; + /** @description The status of the approval, which can be *PENDING*, *APPROVED*, or *DECLINED* */ + status?: string; + [key: string]: unknown; + }; + /** @description Various counts of issues within a version. */ + VersionIssueCounts: { + /** @description List of custom fields using the version. */ + customFieldUsage?: readonly components["schemas"]["VersionUsageInCustomField"][]; + /** + * Format: int64 + * @description Count of issues where a version custom field is set to the version. + */ + issueCountWithCustomFieldsShowingVersion?: number; + /** + * Format: int64 + * @description Count of issues where the `affectedVersion` is set to the version. + */ + issuesAffectedCount?: number; + /** + * Format: int64 + * @description Count of issues where the `fixVersion` is set to the version. + */ + issuesFixedCount?: number; + /** + * Format: uri + * @description The URL of these count details. + */ + self?: string; + }; + /** @description Counts of the number of issues in various statuses. */ + VersionIssuesStatus: { + /** + * Format: int64 + * @description Count of issues with status *done*. + */ + done?: number; + /** + * Format: int64 + * @description Count of issues with status *in progress*. + */ + inProgress?: number; + /** + * Format: int64 + * @description Count of issues with status *to do*. + */ + toDo?: number; + /** + * Format: int64 + * @description Count of issues with a status other than *to do*, *in progress*, and *done*. + */ + unmapped?: number; + [key: string]: unknown; + }; + VersionMoveBean: { + /** + * Format: uri + * @description The URL (self link) of the version after which to place the moved version. Cannot be used with `position`. + */ + after?: string; + /** + * @description An absolute position in which to place the moved version. Cannot be used with `after`. + * @enum {string} + */ + position?: "Earlier" | "Later" | "First" | "Last"; + }; + /** @description Associated related work to a version */ + VersionRelatedWork: { + /** @description The category of the related work */ + category: string; + /** + * Format: int64 + * @description The title of the related work + */ + issueId?: number; + /** @description The id of the related work. For the native release note related work item, this will be null, and Rest API does not support updating it. */ + relatedWorkId?: string; + /** @description The title of the related work */ + title?: string; + /** + * Format: uri + * @description The URL of the related work + */ + url?: string; + }; + /** @description Count of a version's unresolved issues. */ + VersionUnresolvedIssuesCount: { + /** + * Format: int64 + * @description Count of issues. + */ + issuesCount?: number; + /** + * Format: int64 + * @description Count of unresolved issues. + */ + issuesUnresolvedCount?: number; + /** + * Format: uri + * @description The URL of these count details. + */ + self?: string; + }; + /** @description List of custom fields using the version. */ + VersionUsageInCustomField: { + /** + * Format: int64 + * @description The ID of the custom field. + */ + customFieldId?: number; + /** @description The name of the custom field. */ + fieldName?: string; + /** + * Format: int64 + * @description Count of the issues where the custom field contains the version. + */ + issueCountWithVersionInCustomField?: number; + }; + /** @description The group or role to which this item is visible. */ + Visibility: { + /** @description The ID of the group or the name of the role that visibility of this item is restricted to. */ + identifier?: string | null; + /** + * @description Whether visibility of this item is restricted to a group or role. + * @enum {string} + */ + type?: "group" | "role"; + /** @description The name of the group or role that visibility of this item is restricted to. Please note that the name of a group is mutable, to reliably identify a group use `identifier`. */ + value?: string; + [key: string]: unknown; + }; + /** @description The details of votes on an issue. */ + Votes: { + /** @description Whether the user making this request has voted on the issue. */ + hasVoted?: boolean; + /** + * Format: uri + * @description The URL of these issue vote details. + */ + self?: string; + /** @description List of the users who have voted on this issue. An empty list is returned when the calling user doesn't have the *View voters and watchers* project permission. */ + voters?: readonly components["schemas"]["User"][]; + /** + * Format: int64 + * @description The number of votes on the issue. + */ + votes?: number; + }; + WarningCollection: { + warnings?: string[]; + }; + /** @description The details of watchers on an issue. */ + Watchers: { + /** @description Whether the calling user is watching this issue. */ + isWatching?: boolean; + /** @description The URL of these issue watcher details. */ + self?: string; + /** + * Format: int32 + * @description The number of users watching this issue. + */ + watchCount?: number; + /** @description Details of the users watching this issue. */ + watchers?: readonly components["schemas"]["UserDetails"][]; + }; + /** @description A webhook. */ + Webhook: { + /** @description The Jira events that trigger the webhook. */ + events: ("jira:issue_created" | "jira:issue_updated" | "jira:issue_deleted" | "comment_created" | "comment_updated" | "comment_deleted" | "issue_property_set" | "issue_property_deleted")[]; + /** + * Format: int64 + * @description The date after which the webhook is no longer sent. Use [Extend webhook life](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-webhooks/#api-rest-api-3-webhook-refresh-put) to extend the date. + */ + expirationDate?: number; + /** @description A list of field IDs. When the issue changelog contains any of the fields, the webhook `jira:issue_updated` is sent. If this parameter is not present, the app is notified about all field updates. */ + fieldIdsFilter?: string[]; + /** + * Format: int64 + * @description The ID of the webhook. + */ + id: number; + /** @description A list of issue property keys. A change of those issue properties triggers the `issue_property_set` or `issue_property_deleted` webhooks. If this parameter is not present, the app is notified about all issue property updates. */ + issuePropertyKeysFilter?: string[]; + /** @description The JQL filter that specifies which issues the webhook is sent for. */ + jqlFilter: string; + }; + /** @description A list of webhooks. */ + WebhookDetails: { + /** @description The Jira events that trigger the webhook. */ + events: ("jira:issue_created" | "jira:issue_updated" | "jira:issue_deleted" | "comment_created" | "comment_updated" | "comment_deleted" | "issue_property_set" | "issue_property_deleted")[]; + /** @description A list of field IDs. When the issue changelog contains any of the fields, the webhook `jira:issue_updated` is sent. If this parameter is not present, the app is notified about all field updates. */ + fieldIdsFilter?: string[]; + /** @description A list of issue property keys. A change of those issue properties triggers the `issue_property_set` or `issue_property_deleted` webhooks. If this parameter is not present, the app is notified about all issue property updates. */ + issuePropertyKeysFilter?: string[]; + /** + * @description The JQL filter that specifies which issues the webhook is sent for. Only a subset of JQL can be used. The supported elements are: + * + * * Fields: `issueKey`, `project`, `issuetype`, `status`, `assignee`, `reporter`, `issue.property`, and `cf[id]`. For custom fields (`cf[id]`), only the epic label custom field is supported.". + * * Operators: `=`, `!=`, `IN`, and `NOT IN`. + */ + jqlFilter: string; + }; + /** @description Details of webhooks to register. */ + WebhookRegistrationDetails: { + /** @description The URL that specifies where to send the webhooks. This URL must use the same base URL as the Connect app. Only a single URL per app is allowed to be registered. */ + url: string; + /** @description A list of webhooks. */ + webhooks: components["schemas"]["WebhookDetails"][]; + }; + /** @description The date the refreshed webhooks expire. */ + WebhooksExpirationDate: { + /** + * Format: int64 + * @description The expiration date of all the refreshed webhooks. + */ + expirationDate: number; + }; + WorkManagementNavigationInfo: { + boardName?: string; + }; + /** @description Details about a workflow. */ + Workflow: { + /** + * Format: date-time + * @description The creation date of the workflow. + */ + created?: string; + /** @description The description of the workflow. */ + description: string; + /** @description Whether the workflow has a draft version. */ + hasDraftWorkflow?: boolean; + id: components["schemas"]["PublishedWorkflowId"]; + /** @description Whether this is the default workflow. */ + isDefault?: boolean; + operations?: components["schemas"]["WorkflowOperations"]; + /** @description The projects the workflow is assigned to, through workflow schemes. */ + projects?: components["schemas"]["ProjectDetails"][]; + /** @description The workflow schemes the workflow is assigned to. */ + schemes?: components["schemas"]["WorkflowSchemeIdName"][]; + /** @description The statuses of the workflow. */ + statuses?: components["schemas"]["WorkflowStatus"][]; + /** @description The transitions of the workflow. */ + transitions?: components["schemas"]["Transition"][]; + /** + * Format: date-time + * @description The last edited date of the workflow. + */ + updated?: string; + }; + /** @description The list of status mappings. */ + WorkflowAssociationStatusMapping: { + /** @description The ID of the status in the new workflow. */ + newStatusId: string; + /** @description The ID of the status in the old workflow that isn't present in the new workflow. */ + oldStatusId: string; + }; + WorkflowCapabilities: { + /** @description The Connect provided ecosystem rules available. */ + connectRules?: components["schemas"]["AvailableWorkflowConnectRule"][]; + /** + * @description The scope of the workflow capabilities. `GLOBAL` for company-managed projects and `PROJECT` for team-managed projects. + * @enum {string} + */ + editorScope?: "PROJECT" | "GLOBAL"; + /** @description The Forge provided ecosystem rules available. */ + forgeRules?: components["schemas"]["AvailableWorkflowForgeRule"][]; + /** + * @description The types of projects that this capability set is available for. + * @enum {array} + */ + projectTypes?: unknown; + /** @description The Atlassian provided system rules available. */ + systemRules?: components["schemas"]["AvailableWorkflowSystemRule"][]; + /** @description The trigger rules available. */ + triggerRules?: components["schemas"]["AvailableWorkflowTriggers"][]; + }; + /** @description A compound workflow transition rule condition. This object returns `nodeType` as `compound`. */ + WorkflowCompoundCondition: { + /** @description The list of workflow conditions. */ + conditions: components["schemas"]["WorkflowCondition"][]; + nodeType: string; + /** + * @description The compound condition operator. + * @enum {string} + */ + operator: "AND" | "OR"; + }; + /** @description The workflow transition rule conditions tree. */ + WorkflowCondition: components["schemas"]["WorkflowSimpleCondition"] | components["schemas"]["WorkflowCompoundCondition"]; + /** @description The details of the workflows to create. */ + WorkflowCreate: { + /** @description The description of the workflow to create. */ + description?: string; + /** @description The name of the workflow to create. */ + name: string; + startPointLayout?: components["schemas"]["WorkflowLayout"]; + /** @description The statuses associated with this workflow. */ + statuses: components["schemas"]["StatusLayoutUpdate"][]; + /** @description The transitions of this workflow. */ + transitions: components["schemas"]["TransitionUpdateDTO"][]; + }; + /** @description The create workflows payload. */ + WorkflowCreateRequest: { + scope: components["schemas"]["WorkflowScope"]; + /** @description The statuses to associate with the workflows. */ + statuses: components["schemas"]["WorkflowStatusUpdate"][]; + /** @description The details of the workflows to create. */ + workflows: components["schemas"]["WorkflowCreate"][]; + }; + /** @description Details of the created workflows and statuses. */ + WorkflowCreateResponse: { + /** @description List of created statuses. */ + statuses?: components["schemas"]["JiraWorkflowStatus"][]; + /** @description List of created workflows. */ + workflows?: components["schemas"]["JiraWorkflow"][]; + }; + WorkflowCreateValidateRequest: { + payload: components["schemas"]["WorkflowCreateRequest"]; + validationOptions?: components["schemas"]["ValidationOptionsForCreate"]; + }; + /** @description A reference to the location of the error. This will be null if the error does not refer to a specific element. */ + WorkflowElementReference: { + /** @description A property key. */ + propertyKey?: string; + /** @description A rule ID. */ + ruleId?: string; + statusMappingReference?: components["schemas"]["ProjectAndIssueTypePair"]; + /** @description A status reference. */ + statusReference?: string; + /** @description A transition ID. */ + transitionId?: string; + }; + /** @description The classic workflow identifiers. */ + WorkflowIDs: { + /** @description The entity ID of the workflow. */ + entityId?: string; + /** @description The name of the workflow. */ + name: string; + }; + /** @description Properties that identify a workflow. */ + WorkflowId: { + /** @description Whether the workflow is in the draft state. */ + draft: boolean; + /** @description The name of the workflow. */ + name: string; + }; + /** @description The starting point for the statuses in the workflow. */ + WorkflowLayout: { + /** + * Format: double + * @description The x axis location. + */ + x?: number; + /** + * Format: double + * @description The y axis location. + */ + y?: number; + } | null; + /** @description The workflow metadata and issue type IDs which use this workflow. */ + WorkflowMetadataAndIssueTypeRestModel: { + /** @description The list of issue type IDs for the mapping. */ + issueTypeIds: string[]; + workflow: components["schemas"]["WorkflowMetadataRestModel"]; + }; + /** @description Workflow metadata and usage detail. */ + WorkflowMetadataRestModel: { + /** @description The description of the workflow. */ + description: string; + /** @description The ID of the workflow. */ + id: string; + /** @description The name of the workflow. */ + name: string; + /** @description Use the optional `workflows.usages` expand to get additional information about the projects and issue types associated with the workflows in the workflow scheme. */ + usage: components["schemas"]["SimpleUsage"][]; + version: components["schemas"]["DocumentVersion"]; + }; + /** @description Operations allowed on a workflow */ + WorkflowOperations: { + /** @description Whether the workflow can be deleted. */ + canDelete: boolean; + /** @description Whether the workflow can be updated. */ + canEdit: boolean; + }; + WorkflowReadRequest: { + /** @description The list of projects and issue types to query. */ + projectAndIssueTypes?: components["schemas"]["ProjectAndIssueTypePair"][]; + /** @description The list of workflow IDs to query. */ + workflowIds?: string[]; + /** @description The list of workflow names to query. */ + workflowNames?: string[]; + }; + /** @description Details of workflows and related statuses. */ + WorkflowReadResponse: { + /** @description List of statuses. */ + statuses?: components["schemas"]["JiraWorkflowStatus"][]; + /** @description List of workflows. */ + workflows?: components["schemas"]["JiraWorkflow"][]; + }; + /** @description The statuses referenced in the workflow. */ + WorkflowReferenceStatus: { + /** @description Indicates if the status is deprecated. */ + deprecated?: boolean; + layout?: components["schemas"]["WorkflowStatusLayout"]; + /** @description The properties associated with the status. */ + properties?: { + [key: string]: string; + }; + /** @description The reference of the status. */ + statusReference?: string; + }; + /** @description The configuration of the rule. */ + WorkflowRuleConfiguration: { + /** @description The ID of the rule. */ + id?: string | null; + /** @description The parameters related to the rule. */ + parameters?: { + [key: string]: string; + }; + /** @description The rule key of the rule. */ + ruleKey: string; + } | null; + /** @description A collection of transition rules. */ + WorkflowRules: { + conditionsTree?: components["schemas"]["WorkflowCondition"]; + /** @description The workflow post functions. */ + postFunctions?: components["schemas"]["WorkflowTransitionRule"][]; + /** @description The workflow validators. */ + validators?: components["schemas"]["WorkflowTransitionRule"][]; + }; + /** @description Details of the workflow and its transition rules. */ + WorkflowRulesSearch: { + /** + * @description Use expand to include additional information in the response. This parameter accepts `transition` which, for each rule, returns information about the transition the rule is assigned to. + * @example transition + */ + expand?: string; + /** @description The list of workflow rule IDs. */ + ruleIds: string[]; + /** + * Format: uuid + * @description The workflow ID. + * @example a498d711-685d-428d-8c3e-bc03bb450ea7 + */ + workflowEntityId: string; + }; + /** @description Details of workflow transition rules. */ + WorkflowRulesSearchDetails: { + /** @description List of workflow rule IDs that do not belong to the workflow or can not be found. */ + invalidRules?: string[]; + /** @description List of valid workflow transition rules. */ + validRules?: components["schemas"]["WorkflowTransitionRules"][]; + /** + * Format: uuid + * @description The workflow ID. + * @example a498d711-685d-428d-8c3e-bc03bb450ea7 + */ + workflowEntityId?: string; + }; + /** @description Details about a workflow scheme. */ + WorkflowScheme: { + /** @description The name of the default workflow for the workflow scheme. The default workflow has *All Unassigned Issue Types* assigned to it in Jira. If `defaultWorkflow` is not specified when creating a workflow scheme, it is set to *Jira Workflow (jira)*. */ + defaultWorkflow?: string; + /** @description The description of the workflow scheme. */ + description?: string; + /** @description Whether the workflow scheme is a draft or not. */ + draft?: boolean; + /** + * Format: int64 + * @description The ID of the workflow scheme. + */ + id?: number; + /** @description The issue type to workflow mappings, where each mapping is an issue type ID and workflow name pair. Note that an issue type can only be mapped to one workflow in a workflow scheme. */ + issueTypeMappings?: { + [key: string]: string; + }; + /** @description The issue types available in Jira. */ + issueTypes?: { + [key: string]: components["schemas"]["IssueTypeDetails"]; + }; + /** @description The date-time that the draft workflow scheme was last modified. A modification is a change to the issue type-project mappings only. This property does not apply to non-draft workflows. */ + lastModified?: string; + /** @description The user that last modified the draft workflow scheme. A modification is a change to the issue type-project mappings only. This property does not apply to non-draft workflows. */ + lastModifiedUser?: components["schemas"]["User"]; + /** @description The name of the workflow scheme. The name must be unique. The maximum length is 255 characters. Required when creating a workflow scheme. */ + name?: string; + /** @description For draft workflow schemes, this property is the name of the default workflow for the original workflow scheme. The default workflow has *All Unassigned Issue Types* assigned to it in Jira. */ + originalDefaultWorkflow?: string; + /** @description For draft workflow schemes, this property is the issue type to workflow mappings for the original workflow scheme, where each mapping is an issue type ID and workflow name pair. Note that an issue type can only be mapped to one workflow in a workflow scheme. */ + originalIssueTypeMappings?: { + [key: string]: string; + }; + /** Format: uri */ + self?: string; + /** + * @description Whether to create or update a draft workflow scheme when updating an active workflow scheme. An active workflow scheme is a workflow scheme that is used by at least one project. The following examples show how this property works: + * + * * Update an active workflow scheme with `updateDraftIfNeeded` set to `true`: If a draft workflow scheme exists, it is updated. Otherwise, a draft workflow scheme is created. + * * Update an active workflow scheme with `updateDraftIfNeeded` set to `false`: An error is returned, as active workflow schemes cannot be updated. + * * Update an inactive workflow scheme with `updateDraftIfNeeded` set to `true`: The workflow scheme is updated, as inactive workflow schemes do not require drafts to update. + * + * Defaults to `false`. + */ + updateDraftIfNeeded?: boolean; + }; + /** @description The explicit association between issue types and a workflow in a workflow scheme. */ + WorkflowSchemeAssociation: { + /** @description The issue types assigned to the workflow. */ + issueTypeIds: string[]; + /** @description The ID of the workflow. */ + workflowId: string; + }; + /** @description A workflow scheme along with a list of projects that use it. */ + WorkflowSchemeAssociations: { + /** @description The list of projects that use the workflow scheme. */ + projectIds: string[]; + /** @description The workflow scheme. */ + workflowScheme: components["schemas"]["WorkflowScheme"]; + }; + /** @description The ID and the name of the workflow scheme. */ + WorkflowSchemeIdName: { + /** @description The ID of the workflow scheme. */ + id: string; + /** @description The name of the workflow scheme. */ + name: string; + }; + /** @description An associated workflow scheme and project. */ + WorkflowSchemeProjectAssociation: { + /** @description The ID of the project. */ + projectId: string; + /** @description The ID of the workflow scheme. If the workflow scheme ID is `null`, the operation assigns the default workflow scheme. */ + workflowSchemeId?: string; + }; + /** @description The workflow scheme read request body. */ + WorkflowSchemeReadRequest: { + /** @description The list of project IDs to query. */ + projectIds?: (string | null)[] | null; + /** @description The list of workflow scheme IDs to query. */ + workflowSchemeIds?: (string | null)[] | null; + }; + WorkflowSchemeReadResponse: { + defaultWorkflow?: components["schemas"]["WorkflowMetadataRestModel"]; + /** @description The description of the workflow scheme. */ + description?: string | null; + /** @description The ID of the workflow scheme. */ + id: string; + /** @description The name of the workflow scheme. */ + name: string; + /** @description The IDs of projects using the workflow scheme. */ + projectIdsUsingScheme: string[]; + scope: components["schemas"]["WorkflowScope"]; + /** @description Indicates if there's an [asynchronous task](#async-operations) for this workflow scheme. */ + taskId?: string | null; + version: components["schemas"]["DocumentVersion"]; + /** @description Mappings from workflows to issue types. */ + workflowsForIssueTypes: components["schemas"]["WorkflowMetadataAndIssueTypeRestModel"][]; + }; + /** @description The update workflow scheme payload. */ + WorkflowSchemeUpdateRequest: { + /** @description The ID of the workflow for issue types without having a mapping defined in this workflow scheme. Only used in global-scoped workflow schemes. If the `defaultWorkflowId` isn't specified, this is set to *Jira Workflow (jira)*. */ + defaultWorkflowId?: string; + /** @description The new description for this workflow scheme. */ + description: string; + /** @description The ID of this workflow scheme. */ + id: string; + /** @description The new name for this workflow scheme. */ + name: string; + /** @description Overrides, for the selected issue types, any status mappings provided in `statusMappingsByWorkflows`. Status mappings are required when the new workflow for an issue type doesn't contain all statuses that the old workflow has. Status mappings can be provided by a combination of `statusMappingsByWorkflows` and `statusMappingsByIssueTypeOverride`. */ + statusMappingsByIssueTypeOverride?: components["schemas"]["MappingsByIssueTypeOverride"][]; + /** @description The status mappings by workflows. Status mappings are required when the new workflow for an issue type doesn't contain all statuses that the old workflow has. Status mappings can be provided by a combination of `statusMappingsByWorkflows` and `statusMappingsByIssueTypeOverride`. */ + statusMappingsByWorkflows?: components["schemas"]["MappingsByWorkflow"][]; + version: components["schemas"]["DocumentVersion"]; + /** @description Mappings from workflows to issue types. */ + workflowsForIssueTypes?: components["schemas"]["WorkflowSchemeAssociation"][]; + [key: string]: unknown; + }; + /** @description The request payload to get the required mappings for updating a workflow scheme. */ + WorkflowSchemeUpdateRequiredMappingsRequest: { + /** @description The ID of the new default workflow for this workflow scheme. Only used in global-scoped workflow schemes. If it isn't specified, is set to *Jira Workflow (jira)*. */ + defaultWorkflowId?: string | null; + /** @description The ID of the workflow scheme. */ + id: string; + /** @description The new workflow to issue type mappings for this workflow scheme. */ + workflowsForIssueTypes: components["schemas"]["WorkflowSchemeAssociation"][]; + }; + WorkflowSchemeUpdateRequiredMappingsResponse: { + /** @description The list of required status mappings by issue type. */ + statusMappingsByIssueTypes?: components["schemas"]["RequiredMappingByIssueType"][]; + /** @description The list of required status mappings by workflow. */ + statusMappingsByWorkflows?: components["schemas"]["RequiredMappingByWorkflows"][]; + /** @description The details of the statuses in the associated workflows. */ + statuses?: components["schemas"]["StatusMetadata"][]; + /** @description The statuses associated with each workflow. */ + statusesPerWorkflow?: components["schemas"]["StatusesPerWorkflow"][]; + }; + /** @description The scope of the workflow. */ + WorkflowScope: { + project?: components["schemas"]["ProjectId"]; + /** + * @description The scope of the workflow. `GLOBAL` for company-managed projects and `PROJECT` for team-managed projects. + * @enum {string} + */ + type: "PROJECT" | "GLOBAL"; + }; + /** @description A workflow transition rule condition. This object returns `nodeType` as `simple`. */ + WorkflowSimpleCondition: { + /** @description EXPERIMENTAL. The configuration of the transition rule. */ + configuration?: Record; + nodeType: string; + /** @description The type of the transition rule. */ + type: string; + }; + /** @description Details of a workflow status. */ + WorkflowStatus: { + /** @description The ID of the issue status. */ + id: string; + /** @description The name of the status in the workflow. */ + name: string; + /** @description Additional properties that modify the behavior of issues in this status. Supports the properties `jira.issue.editable` and `issueEditable` (deprecated) that indicate whether issues are editable. */ + properties?: { + [key: string]: unknown; + }; + }; + /** @description The status reference and port that a transition is connected to. */ + WorkflowStatusAndPort: { + /** + * Format: int32 + * @description The port the transition is connected to this status. + */ + port?: number | null; + /** @description The reference of this status. */ + statusReference?: string; + } | null; + /** @description The x and y location of the status in the workflow. */ + WorkflowStatusLayout: { + /** + * Format: double + * @description The x axis location. + */ + x?: number | null; + /** + * Format: double + * @description The y axis location. + */ + y?: number | null; + } | null; + /** @description Details of the status being updated. */ + WorkflowStatusUpdate: { + /** @description The description of the status. */ + description?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The name of the status. */ + name: string; + /** + * @description The category of the status. + * @enum {string} + */ + statusCategory: "TODO" | "IN_PROGRESS" | "DONE"; + /** @description The reference of the status. */ + statusReference: string; + [key: string]: unknown; + }; + /** @description A workflow transition. */ + WorkflowTransition: { + /** + * Format: int32 + * @description The transition ID. + */ + id: number; + /** @description The transition name. */ + name: string; + }; + /** @description Details about the server Jira is running on. */ + WorkflowTransitionProperty: { + /** @description The ID of the transition property. */ + id?: string; + /** @description The key of the transition property. Also known as the name of the transition property. */ + key?: string; + /** @description The value of the transition property. */ + value: string; + [key: string]: unknown; + }; + /** @description A workflow transition rule. */ + WorkflowTransitionRule: { + /** @description EXPERIMENTAL. The configuration of the transition rule. */ + configuration?: unknown; + /** @description The type of the transition rule. */ + type: string; + }; + /** @description A workflow with transition rules. */ + WorkflowTransitionRules: { + /** @description The list of conditions within the workflow. */ + conditions?: components["schemas"]["AppWorkflowTransitionRule"][]; + /** @description The list of post functions within the workflow. */ + postFunctions?: components["schemas"]["AppWorkflowTransitionRule"][]; + /** @description The list of validators within the workflow. */ + validators?: components["schemas"]["AppWorkflowTransitionRule"][]; + workflowId: components["schemas"]["WorkflowId"]; + }; + /** @description Details about a workflow configuration update request. */ + WorkflowTransitionRulesDetails: { + workflowId: components["schemas"]["WorkflowId"]; + /** @description The list of connect workflow rule IDs. */ + workflowRuleIds: string[]; + }; + /** @description Details about a workflow configuration update request. */ + WorkflowTransitionRulesUpdate: { + /** @description The list of workflows with transition rules to update. */ + workflows: components["schemas"]["WorkflowTransitionRules"][]; + }; + /** @description Details of any errors encountered while updating workflow transition rules for a workflow. */ + WorkflowTransitionRulesUpdateErrorDetails: { + /** @description A list of transition rule update errors, indexed by the transition rule ID. Any transition rule that appears here wasn't updated. */ + ruleUpdateErrors: { + [key: string]: string[]; + }; + /** @description The list of errors that specify why the workflow update failed. The workflow was not updated if the list contains any entries. */ + updateErrors: string[]; + workflowId: components["schemas"]["WorkflowId"]; + }; + /** @description Details of any errors encountered while updating workflow transition rules. */ + WorkflowTransitionRulesUpdateErrors: { + /** @description A list of workflows. */ + updateResults: components["schemas"]["WorkflowTransitionRulesUpdateErrorDetails"][]; + }; + /** @description The transitions of the workflow. */ + WorkflowTransitions: { + /** @description The post-functions of the transition. */ + actions?: components["schemas"]["WorkflowRuleConfiguration"][]; + conditions?: components["schemas"]["ConditionGroupConfiguration"]; + /** @description The custom event ID of the transition. */ + customIssueEventId?: string | null; + /** @description The description of the transition. */ + description?: string; + /** @description The statuses the transition can start from. */ + from?: components["schemas"]["WorkflowStatusAndPort"][]; + /** @description The ID of the transition. */ + id?: string; + /** @description The name of the transition. */ + name?: string; + /** @description The properties of the transition. */ + properties?: { + [key: string]: string; + }; + to?: components["schemas"]["WorkflowStatusAndPort"]; + transitionScreen?: components["schemas"]["WorkflowRuleConfiguration"]; + /** @description The triggers of the transition. */ + triggers?: components["schemas"]["WorkflowTrigger"][]; + /** + * @description The transition type. + * @enum {string} + */ + type?: "INITIAL" | "GLOBAL" | "DIRECTED"; + /** @description The validators of the transition. */ + validators?: components["schemas"]["WorkflowRuleConfiguration"][]; + }; + /** @description The trigger configuration associated with a workflow. */ + WorkflowTrigger: { + /** @description The ID of the trigger. */ + id?: string; + /** @description The parameters of the trigger. */ + parameters: { + [key: string]: string; + }; + /** @description The rule key of the trigger. */ + ruleKey: string; + }; + /** @description The details of the workflows to update. */ + WorkflowUpdate: { + /** @description The mapping of old to new status ID. */ + defaultStatusMappings?: components["schemas"]["StatusMigration"][]; + /** @description The new description for this workflow. */ + description?: string; + /** @description The ID of this workflow. */ + id: string; + startPointLayout?: components["schemas"]["WorkflowLayout"]; + /** @description The mapping of old to new status ID for a specific project and issue type. */ + statusMappings?: components["schemas"]["StatusMappingDTO"][]; + /** @description The statuses associated with this workflow. */ + statuses: components["schemas"]["StatusLayoutUpdate"][]; + /** @description The transitions of this workflow. */ + transitions: components["schemas"]["TransitionUpdateDTO"][]; + version: components["schemas"]["DocumentVersion"]; + [key: string]: unknown; + }; + /** @description The update workflows payload. */ + WorkflowUpdateRequest: { + /** @description The statuses to associate with the workflows. */ + statuses: components["schemas"]["WorkflowStatusUpdate"][]; + /** @description The details of the workflows to update. */ + workflows: components["schemas"]["WorkflowUpdate"][]; + }; + WorkflowUpdateResponse: { + /** @description List of updated statuses. */ + statuses?: components["schemas"]["JiraWorkflowStatus"][]; + /** @description If there is a [asynchronous task](#async-operations) operation, as a result of this update. */ + taskId?: string | null; + /** @description List of updated workflows. */ + workflows?: components["schemas"]["JiraWorkflow"][]; + }; + WorkflowUpdateValidateRequestBean: { + payload: components["schemas"]["WorkflowUpdateRequest"]; + validationOptions?: components["schemas"]["ValidationOptionsForUpdate"]; + }; + /** @description The workflows that use this status. Only available if the `workflowUsages` expand is requested. */ + WorkflowUsages: { + /** @description Workflow ID. */ + workflowId?: string; + /** @description Workflow name. */ + workflowName?: string; + }; + /** @description The details about a workflow validation error. */ + WorkflowValidationError: { + /** @description An error code. */ + code?: string; + elementReference?: components["schemas"]["WorkflowElementReference"]; + /** + * @description The validation error level. + * @enum {string} + */ + level?: "WARNING" | "ERROR"; + /** @description An error message. */ + message?: string; + /** + * @description The type of element the error or warning references. + * @enum {string} + */ + type?: "RULE" | "STATUS" | "STATUS_LAYOUT" | "STATUS_PROPERTY" | "WORKFLOW" | "TRANSITION" | "TRANSITION_PROPERTY" | "SCOPE" | "STATUS_MAPPING" | "TRIGGER"; + }; + WorkflowValidationErrorList: { + /** @description The list of validation errors. */ + errors?: components["schemas"]["WorkflowValidationError"][]; + }; + /** @description Details of workflows and their transition rules to delete. */ + WorkflowsWithTransitionRulesDetails: { + /** @description The list of workflows with transition rules to delete. */ + workflows: components["schemas"]["WorkflowTransitionRulesDetails"][]; + }; + /** @description Details of a worklog. */ + Worklog: { + /** @description Details of the user who created the worklog. */ + author?: components["schemas"]["UserDetails"]; + /** @description A comment about the worklog in [Atlassian Document Format](https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/). Optional when creating or updating a worklog. */ + comment?: unknown; + /** + * Format: date-time + * @description The datetime on which the worklog was created. + */ + created?: string; + /** @description The ID of the worklog record. */ + id?: string; + /** @description The ID of the issue this worklog is for. */ + issueId?: string; + /** @description Details of properties for the worklog. Optional when creating or updating a worklog. */ + properties?: components["schemas"]["EntityProperty"][]; + /** + * Format: uri + * @description The URL of the worklog item. + */ + self?: string; + /** + * Format: date-time + * @description The datetime on which the worklog effort was started. Required when creating a worklog. Optional when updating a worklog. + */ + started?: string; + /** @description The time spent working on the issue as days (\#d), hours (\#h), or minutes (\#m or \#). Required when creating a worklog if `timeSpentSeconds` isn't provided. Optional when updating a worklog. Cannot be provided if `timeSpentSecond` is provided. */ + timeSpent?: string; + /** + * Format: int64 + * @description The time in seconds spent working on the issue. Required when creating a worklog if `timeSpent` isn't provided. Optional when updating a worklog. Cannot be provided if `timeSpent` is provided. + */ + timeSpentSeconds?: number; + /** @description Details of the user who last updated the worklog. */ + updateAuthor?: components["schemas"]["UserDetails"]; + /** + * Format: date-time + * @description The datetime on which the worklog was last updated. + */ + updated?: string; + /** @description Details about any restrictions in the visibility of the worklog. Optional when creating or updating a worklog. */ + visibility?: components["schemas"]["Visibility"]; + [key: string]: unknown; + }; + WorklogIdsRequestBean: { + /** @description A list of worklog IDs. */ + ids: number[]; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} +export type $defs = Record; +export type external = Record; +export interface operations { + /** + * Get announcement banner configuration + * @description Returns the current announcement banner configuration. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getBanner: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["AnnouncementBannerConfiguration"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Update announcement banner configuration + * @description Updates the announcement banner configuration. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setBanner: { + requestBody: { + content: { + /** + * @example { + * "isDismissible": false, + * "isEnabled": true, + * "message": "This is a public, enabled, non-dismissible banner, set using the API", + * "visibility": "public" + * } + */ + "application/json": components["schemas"]["AnnouncementBannerConfigurationUpdate"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if an invalid parameter is passed. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Update custom fields + * @description Updates the value of one or more custom fields on one or more issues. Combinations of custom field and issue should be unique within the request. + * + * Apps can only perform this operation on [custom fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) declared in their own manifests. + * + * **[Permissions](#permissions) required:** Only the app that owns the custom field or custom field type can update its values with this operation. + */ + updateMultipleCustomFieldValues: { + parameters: { + query?: { + /** @description Whether to generate a changelog for this update. */ + generateChangelog?: boolean; + }; + }; + requestBody: { + content: { + /** + * @example { + * "updates": [ + * { + * "customField": "customfield_10010", + * "issueIds": [ + * 10010, + * 10011 + * ], + * "value": "new value" + * }, + * { + * "customField": "customfield_10011", + * "issueIds": [ + * 10010 + * ], + * "value": 1000 + * } + * ] + * } + */ + "application/json": components["schemas"]["MultipleCustomFieldValuesUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as the app that provided all the fields. */ + 403: { + content: never; + }; + /** @description Returned if any field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get custom field configurations + * @description Returns a [paginated](#pagination) list of configurations for a custom field of a [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created by a [Forge app](https://developer.atlassian.com/platform/forge/). + * + * The result can be filtered by one of these criteria: + * + * * `id`. + * * `fieldContextId`. + * * `issueId`. + * * `projectKeyOrId` and `issueTypeId`. + * + * Otherwise, all configurations are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the Forge app that provided the custom field type. + */ + getCustomFieldConfiguration: { + parameters: { + query?: { + /** @description The list of configuration IDs. To include multiple configurations, separate IDs with an ampersand: `id=10000&id=10001`. Can't be provided with `fieldContextId`, `issueId`, `projectKeyOrId`, or `issueTypeId`. */ + id?: number[]; + /** @description The list of field context IDs. To include multiple field contexts, separate IDs with an ampersand: `fieldContextId=10000&fieldContextId=10001`. Can't be provided with `id`, `issueId`, `projectKeyOrId`, or `issueTypeId`. */ + fieldContextId?: number[]; + /** @description The ID of the issue to filter results by. If the issue doesn't exist, an empty list is returned. Can't be provided with `projectKeyOrId`, or `issueTypeId`. */ + issueId?: number; + /** @description The ID or key of the project to filter results by. Must be provided with `issueTypeId`. Can't be provided with `issueId`. */ + projectKeyOrId?: string; + /** @description The ID of the issue type to filter results by. Must be provided with `projectKeyOrId`. Can't be provided with `issueId`. */ + issueTypeId?: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID or key of the custom field, for example `customfield_10000`. */ + fieldIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanContextualConfiguration"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user is not a Jira admin or the request is not authenticated as from the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update custom field configurations + * @description Update the configuration for contexts of a custom field of a [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created by a [Forge app](https://developer.atlassian.com/platform/forge/). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the Forge app that created the custom field type. + */ + updateCustomFieldConfiguration: { + parameters: { + path: { + /** @description The ID or key of the custom field, for example `customfield_10000`. */ + fieldIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "configurations": [ + * { + * "id": "10000" + * }, + * { + * "configuration": { + * "maxValue": 10000, + * "minValue": 0 + * }, + * "id": "10001", + * "schema": { + * "properties": { + * "amount": { + * "type": "number" + * }, + * "currency": { + * "type": "string" + * } + * }, + * "required": [ + * "amount", + * "currency" + * ] + * } + * } + * ] + * } + */ + "application/json": components["schemas"]["CustomFieldConfigurations"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user is not a Jira admin or the request is not authenticated as from the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update custom field value + * @description Updates the value of a custom field on one or more issues. + * + * Apps can only perform this operation on [custom fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) declared in their own manifests. + * + * **[Permissions](#permissions) required:** Only the app that owns the custom field or custom field type can update its values with this operation. + */ + updateCustomFieldValue: { + parameters: { + query?: { + /** @description Whether to generate a changelog for this update. */ + generateChangelog?: boolean; + }; + path: { + /** @description The ID or key of the custom field. For example, `customfield_10010`. */ + fieldIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "updates": [ + * { + * "issueIds": [ + * 10010 + * ], + * "value": "new value" + * } + * ] + * } + */ + "application/json": components["schemas"]["CustomFieldValueUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if the field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get application property + * @description Returns all application properties or an application property. + * + * If you specify a value for the `key` parameter, then an application property is returned as an object (not in an array). Otherwise, an array of all editable application properties is returned. See [Set application property](#api-rest-api-3-application-properties-id-put) for descriptions of editable properties. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getApplicationProperty: { + parameters: { + query?: { + /** @description The key of the application property. */ + key?: string; + /** @description The permission level of all items being returned in the list. */ + permissionLevel?: string; + /** @description When a `key` isn't provided, this filters the list of results by the application property `key` using a regular expression. For example, using `jira.lf.*` will return all application properties with keys that start with *jira.lf.*. */ + keyFilter?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ApplicationProperty"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the application property is not found or the user does not have permission to view it. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get advanced settings + * @description Returns the application properties that are accessible on the *Advanced Settings* page. To navigate to the *Advanced Settings* page in Jira, choose the Jira icon > **Jira settings** > **System**, **General Configuration** and then click **Advanced Settings** (in the upper right). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAdvancedSettings: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ApplicationProperty"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user is not an administrator. */ + 403: { + content: never; + }; + }; + }; + /** + * Set application property + * @description Changes the value of an application property. For example, you can change the value of the `jira.clone.prefix` from its default value of *CLONE -* to *Clone -* if you prefer sentence case capitalization. Editable properties are described below along with their default values. + * + * #### Advanced settings #### + * + * The advanced settings below are also accessible in [Jira](https://confluence.atlassian.com/x/vYXKM). + * + * | Key | Description | Default value | + * | -- | -- | -- | + * | `jira.clone.prefix` | The string of text prefixed to the title of a cloned issue. | `CLONE -` | + * | `jira.date.picker.java.format` | The date format for the Java (server-side) generated dates. This must be the same as the `jira.date.picker.javascript.format` format setting. | `d/MMM/yy` | + * | `jira.date.picker.javascript.format` | The date format for the JavaScript (client-side) generated dates. This must be the same as the `jira.date.picker.java.format` format setting. | `%e/%b/%y` | + * | `jira.date.time.picker.java.format` | The date format for the Java (server-side) generated date times. This must be the same as the `jira.date.time.picker.javascript.format` format setting. | `dd/MMM/yy h:mm a` | + * | `jira.date.time.picker.javascript.format` | The date format for the JavaScript (client-side) generated date times. This must be the same as the `jira.date.time.picker.java.format` format setting. | `%e/%b/%y %I:%M %p` | + * | `jira.issue.actions.order` | The default order of actions (such as *Comments* or *Change history*) displayed on the issue view. | `asc` | + * | `jira.view.issue.links.sort.order` | The sort order of the list of issue links on the issue view. | `type, status, priority` | + * | `jira.comment.collapsing.minimum.hidden` | The minimum number of comments required for comment collapsing to occur. A value of `0` disables comment collapsing. | `4` | + * | `jira.newsletter.tip.delay.days` | The number of days before a prompt to sign up to the Jira Insiders newsletter is shown. A value of `-1` disables this feature. | `7` | + * + * + * #### Look and feel #### + * + * The settings listed below adjust the [look and feel](https://confluence.atlassian.com/x/VwCLLg). + * + * | Key | Description | Default value | + * | -- | -- | -- | + * | `jira.lf.date.time` | The [ time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `h:mm a` | + * | `jira.lf.date.day` | The [ day format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `EEEE h:mm a` | + * | `jira.lf.date.complete` | The [ date and time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `dd/MMM/yy h:mm a` | + * | `jira.lf.date.dmy` | The [ date format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `dd/MMM/yy` | + * | `jira.date.time.picker.use.iso8061` | When enabled, sets Monday as the first day of the week in the date picker, as specified by the ISO8601 standard. | `false` | + * | `jira.lf.logo.url` | The URL of the logo image file. | `/images/icon-jira-logo.png` | + * | `jira.lf.logo.show.application.title` | Controls the visibility of the application title on the sidebar. | `false` | + * | `jira.lf.favicon.url` | The URL of the favicon. | `/favicon.ico` | + * | `jira.lf.favicon.hires.url` | The URL of the high-resolution favicon. | `/images/64jira.png` | + * | `jira.lf.navigation.bgcolour` | The background color of the sidebar. | `#0747A6` | + * | `jira.lf.navigation.highlightcolour` | The color of the text and logo of the sidebar. | `#DEEBFF` | + * | `jira.lf.hero.button.base.bg.colour` | The background color of the hero button. | `#3b7fc4` | + * | `jira.title` | The text for the application title. The application title can also be set in *General settings*. | `Jira` | + * | `jira.option.globalsharing` | Whether filters and dashboards can be shared with anyone signed into Jira. | `true` | + * | `xflow.product.suggestions.enabled` | Whether to expose product suggestions for other Atlassian products within Jira. | `true` | + * + * + * #### Other settings #### + * + * | Key | Description | Default value | + * | -- | -- | -- | + * | `jira.issuenav.criteria.autoupdate` | Whether instant updates to search criteria is active. | `true` | + * + * + * *Note: Be careful when changing [application properties and advanced settings](https://confluence.atlassian.com/x/vYXKM).* + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setApplicationProperty: { + parameters: { + path: { + /** @description The key of the application property to update. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "id": "jira.home", + * "value": "/var/jira/jira-home" + * } + */ + "application/json": components["schemas"]["SimpleApplicationPropertyBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ApplicationProperty"]; + }; + }; + /** @description Returned if the data type of the `value` does not match the application property's data type. For example, a string is provided instead of an integer. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have permission to edit the property. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the property is not found or the user does not have permission to view it. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all application roles + * @description Returns all application roles. In Jira, application roles are managed using the [Application access configuration](https://confluence.atlassian.com/x/3YxjL) page. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllApplicationRoles: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ApplicationRole"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user is not an administrator. */ + 403: { + content: never; + }; + }; + }; + /** + * Get application role + * @description Returns an application role. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getApplicationRole: { + parameters: { + path: { + /** @description The key of the application role. Use the [Get all application roles](#api-rest-api-3-applicationrole-get) operation to get the key for each application role. */ + key: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ApplicationRole"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user is not an administrator. */ + 403: { + content: never; + }; + /** @description Returned if the role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get attachment content + * @description Returns the contents of an attachment. A `Range` header can be set to define a range of bytes within the attachment to download. See the [HTTP Range header standard](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range) for details. + * + * To return a thumbnail of the attachment, use [Get attachment thumbnail](#api-rest-api-3-attachment-thumbnail-id-get). + * + * This operation can be accessed anonymously. + * + * **[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. + */ + getAttachmentContent: { + parameters: { + query?: { + /** @description Whether a redirect is provided for the attachment download. Clients that do not automatically follow redirects can set this to `false` to avoid making multiple requests to download the attachment. */ + redirect?: boolean; + }; + path: { + /** @description The ID of the attachment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful when `redirect` is set to `false`. */ + 200: { + content: { + "application/json": components["schemas"]["StreamingResponseBody"]; + }; + }; + /** @description Returned if the request is successful when a `Range` header is provided and `redirect` is set to `false`. */ + 206: { + content: never; + }; + /** @description Returned if the request is successful. See the `Location` header for the download URL. */ + 303: { + content: never; + }; + /** @description Returned if the range supplied in the `Range` header is malformed. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description The user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: never; + }; + /** @description Returned if the server is unable to satisfy the range of bytes provided. */ + 416: { + content: never; + }; + }; + }; + /** + * Get Jira attachment settings + * @description Returns the attachment settings, that is, whether attachments are enabled and the maximum attachment size allowed. + * + * Note that there are also [project permissions](https://confluence.atlassian.com/x/yodKLg) that restrict whether users can create and delete attachments. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAttachmentMeta: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["AttachmentSettings"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get attachment thumbnail + * @description Returns the thumbnail of an attachment. + * + * To return the attachment contents, use [Get attachment content](#api-rest-api-3-attachment-content-id-get). + * + * This operation can be accessed anonymously. + * + * **[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. + */ + getAttachmentThumbnail: { + parameters: { + query?: { + /** @description Whether a redirect is provided for the attachment download. Clients that do not automatically follow redirects can set this to `false` to avoid making multiple requests to download the attachment. */ + redirect?: boolean; + /** @description Whether a default thumbnail is returned when the requested thumbnail is not found. */ + fallbackToDefault?: boolean; + /** @description The maximum width to scale the thumbnail to. */ + width?: number; + /** @description The maximum height to scale the thumbnail to. */ + height?: number; + }; + path: { + /** @description The ID of the attachment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful when `redirect` is set to `false`. */ + 200: { + content: { + "application/json": components["schemas"]["StreamingResponseBody"]; + }; + }; + /** @description Returned if the request is successful. See the `Location` header for the download URL. */ + 303: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description The user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + * * `fallbackToDefault` is `false` and the request thumbnail cannot be downloaded. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get attachment metadata + * @description Returns the metadata for an attachment. Note that the attachment itself is not returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getAttachment: { + parameters: { + path: { + /** @description The ID of the attachment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["AttachmentMetadata"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete attachment + * @description Deletes an attachment from an issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** For the project holding the issue containing the attachment: + * + * * *Delete own attachments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment created by the calling user. + * * *Delete all attachments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment created by any user. + */ + removeAttachment: { + parameters: { + path: { + /** @description The ID of the attachment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get all metadata for an expanded attachment + * @description Returns the metadata for the contents of an attachment, if it is an archive, and metadata for the attachment itself. For example, if the attachment is a ZIP archive, then information about the files in the archive is returned and metadata for the ZIP archive. Currently, only the ZIP archive format is supported. + * + * Use this operation to retrieve data that is presented to the user, as this operation returns the metadata for the attachment itself, such as the attachment's ID and name. Otherwise, use [ Get contents metadata for an expanded attachment](#api-rest-api-3-attachment-id-expand-raw-get), which only returns the metadata for the attachment's contents. + * + * This operation can be accessed anonymously. + * + * **[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. + */ + expandAttachmentForHumans: { + parameters: { + path: { + /** @description The ID of the attachment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. If an empty list is returned in the response, the attachment is empty, corrupt, or not an archive. */ + 200: { + content: { + "application/json": components["schemas"]["AttachmentArchiveMetadataReadable"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description The user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: never; + }; + /** @description Returned if the attachment is an archive, but not a supported archive format. */ + 409: { + content: never; + }; + }; + }; + /** + * Get contents metadata for an expanded attachment + * @description Returns the metadata for the contents of an attachment, if it is an archive. For example, if the attachment is a ZIP archive, then information about the files in the archive is returned. Currently, only the ZIP archive format is supported. + * + * Use this operation if you are processing the data without presenting it to the user, as this operation only returns the metadata for the contents of the attachment. Otherwise, to retrieve data to present to the user, use [ Get all metadata for an expanded attachment](#api-rest-api-3-attachment-id-expand-human-get) which also returns the metadata for the attachment itself, such as the attachment's ID and name. + * + * This operation can be accessed anonymously. + * + * **[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. + */ + expandAttachmentForMachines: { + parameters: { + path: { + /** @description The ID of the attachment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. If an empty list is returned in the response, the attachment is empty, corrupt, or not an archive. */ + 200: { + content: { + "application/json": components["schemas"]["AttachmentArchiveImpl"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description The user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: never; + }; + /** @description Returned if the attachment is an archive, but not a supported archive format. */ + 409: { + content: never; + }; + }; + }; + /** + * Get audit records + * @description Returns a list of audit records. The list can be filtered to include items: + * + * * where each item in `filter` has at least one match in any of these fields: + * + * * `summary` + * * `category` + * * `eventSource` + * * `objectItem.name` If the object is a user, account ID is available to filter. + * * `objectItem.parentName` + * * `objectItem.typeName` + * * `changedValues.changedFrom` + * * `changedValues.changedTo` + * * `remoteAddress` + * + * For example, if `filter` contains *man ed*, an audit record containing `summary": "User added to group"` and `"category": "group management"` is returned. + * * created on or after a date and time. + * * created or or before a date and time. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAuditRecords: { + parameters: { + query?: { + /** @description The number of records to skip before returning the first result. */ + offset?: number; + /** @description The maximum number of results to return. */ + limit?: number; + /** @description The strings to match with audit field content, space separated. */ + filter?: string; + /** @description The date and time on or after which returned audit records must have been created. If `to` is provided `from` must be before `to` or no audit records are returned. */ + from?: string; + /** @description The date and time on or before which returned audit results must have been created. If `from` is provided `to` must be after `from` or no audit records are returned. */ + to?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["AuditRecords"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** + * @description Returned if: + * + * * the user does not have the required permissions. + * * all Jira products are on free plans. Audit logs are available when at least one Jira product is on a paid plan. + */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get system avatars by type + * @description Returns a list of system avatar details by owner type, where the owner types are issue type, project, or user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAllSystemAvatars: { + parameters: { + path: { + /** @description The avatar type. */ + type: "issuetype" | "project" | "user"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SystemAvatars"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if an error occurs while retrieving the list of avatars. */ + 500: { + content: never; + }; + }; + }; + /** + * Get comments by IDs + * @description Returns a [paginated](#pagination) list of comments specified by a list of comment IDs. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Comments are returned where the user: + * + * * has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the comment. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getCommentsByIds: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about comments in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `renderedBody` Returns the comment body rendered in HTML. + * * `properties` Returns the comment's properties. + */ + expand?: string; + }; + }; + /** @description The list of comment IDs. */ + requestBody: { + content: { + /** + * @example { + * "ids": [ + * 1, + * 2, + * 5, + * 10 + * ] + * } + */ + "application/json": components["schemas"]["IssueCommentListRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanComment"]; + }; + }; + /** @description Returned if the request contains more than 1000 IDs or is empty. */ + 400: { + content: never; + }; + }; + }; + /** + * Get comment property keys + * @description Returns the keys of all the properties of a comment. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getCommentPropertyKeys: { + parameters: { + path: { + /** @description The ID of the comment. */ + commentId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the comment ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the comment is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get comment property + * @description Returns the value of a comment property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getCommentProperty: { + parameters: { + path: { + /** @description The ID of the comment. */ + commentId: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the comment or the property is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set comment property + * @description Creates or updates the value of a property for a comment. Use this resource to store custom data against a comment. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** either of: + * + * * *Edit All Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value of a property on any comment. + * * *Edit Own Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value of a property on a comment created by the user. + * + * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or group. + */ + setCommentProperty: { + parameters: { + path: { + /** @description The ID of the comment. */ + commentId: string; + /** @description The key of the property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the comment property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the comment property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the comment is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete comment property + * @description Deletes a comment property. + * + * **[Permissions](#permissions) required:** either of: + * + * * *Edit All Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from any comment. + * * *Edit Own Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from a comment created by the user. + * + * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or group. + */ + deleteCommentProperty: { + parameters: { + path: { + /** @description The ID of the comment. */ + commentId: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the comment or the property is not found or the user has the necessary project permissions but isn't a member of the role or group visibility of the comment is restricted to. */ + 404: { + content: never; + }; + }; + }; + /** + * Create component + * @description Creates a component. Use components to provide containers for issues within a project. Use components to provide containers for issues within a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the component is created or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createComponent: { + requestBody: { + content: { + /** + * @example { + * "assigneeType": "PROJECT_LEAD", + * "description": "This is a Jira component", + * "isAssigneeTypeValid": false, + * "leadAccountId": "5b10a2844c20165700ede21g", + * "name": "Component 1", + * "project": "HSP" + * } + */ + "application/json": components["schemas"]["ProjectComponent"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["ProjectComponent"]; + }; + }; + /** + * @description Returned if: + * + * * the user is not found. + * * `name` is not provided. + * * `name` is over 255 characters in length. + * * `projectId` is not provided. + * * `assigneeType` is an invalid value. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to manage the project containing the component or does not have permission to administer Jira. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to browse the project containing the component. */ + 404: { + content: never; + }; + }; + }; + /** + * Get component + * @description Returns a component. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for project containing the component. + */ + getComponent: { + parameters: { + path: { + /** @description The ID of the component. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectComponent"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the component is not found or the user does not have permission to browse the project containing the component. */ + 404: { + content: never; + }; + }; + }; + /** + * Update component + * @description Updates a component. Any fields included in the request are overwritten. If `leadAccountId` is an empty string ("") the component lead is removed. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the component or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateComponent: { + parameters: { + path: { + /** @description The ID of the component. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "assigneeType": "PROJECT_LEAD", + * "description": "This is a Jira component", + * "isAssigneeTypeValid": false, + * "leadAccountId": "5b10a2844c20165700ede21g", + * "name": "Component 1" + * } + */ + "application/json": components["schemas"]["ProjectComponent"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectComponent"]; + }; + }; + /** + * @description Returned if: + * + * * the user is not found. + * * `assigneeType` is an invalid value. + * * `name` is over 255 characters in length. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to manage the project containing the component or does not have permission to administer Jira. */ + 403: { + content: never; + }; + /** @description Returned if the component is not found or the user does not have permission to browse the project containing the component. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete component + * @description Deletes a component. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the component or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteComponent: { + parameters: { + query?: { + /** @description The ID of the component to replace the deleted component. If this value is null no replacement is made. */ + moveIssuesTo?: string; + }; + path: { + /** @description The ID of the component. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to manage the project containing the component or does not have permission to administer Jira. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the component is not found. + * * the replacement component is not found. + * * the user does not have permission to browse the project containing the component. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get component issues count + * @description Returns the counts of issues assigned to the component. + * + * This operation can be accessed anonymously. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:field:jira`, `read:project.component:jira` + * + * **[Permissions](#permissions) required:** None. + */ + getComponentRelatedIssues: { + parameters: { + path: { + /** @description The ID of the component. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ComponentIssuesCount"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the component is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get global settings + * @description Returns the [global settings](https://confluence.atlassian.com/x/qYXKM) in Jira. These settings determine whether optional features (for example, subtasks, time tracking, and others) are enabled. If time tracking is enabled, this operation also returns the time tracking configuration. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getConfiguration: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Configuration"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get selected time tracking provider + * @description Returns the time tracking provider that is currently selected. Note that if time tracking is disabled, then a successful but empty response is returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getSelectedTimeTrackingImplementation: { + responses: { + /** @description Returned if the request is successful and time tracking is enabled. */ + 200: { + content: { + "application/json": components["schemas"]["TimeTrackingProvider"]; + }; + }; + /** @description Returned if the request is successful but time tracking is disabled. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Select time tracking provider + * @description Selects a time tracking provider. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + selectTimeTrackingImplementation: { + requestBody: { + content: { + /** + * @example { + * "key": "Jira" + * } + */ + "application/json": components["schemas"]["TimeTrackingProvider"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the time tracking provider is not found. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get all time tracking providers + * @description Returns all time tracking providers. By default, Jira only has one time tracking provider: *JIRA provided time tracking*. However, you can install other time tracking providers via apps from the Atlassian Marketplace. For more information on time tracking providers, see the documentation for the [ Time Tracking Provider](https://developer.atlassian.com/cloud/jira/platform/modules/time-tracking-provider/) module. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAvailableTimeTrackingImplementations: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["TimeTrackingProvider"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get time tracking settings + * @description Returns the time tracking settings. This includes settings such as the time format, default time unit, and others. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getSharedTimeTrackingConfiguration: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["TimeTrackingConfiguration"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Set time tracking settings + * @description Sets the time tracking settings. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setSharedTimeTrackingConfiguration: { + requestBody: { + content: { + /** + * @example { + * "defaultUnit": "hour", + * "timeFormat": "pretty", + * "workingDaysPerWeek": 5.5, + * "workingHoursPerDay": 7.6 + * } + */ + "application/json": components["schemas"]["TimeTrackingConfiguration"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["TimeTrackingConfiguration"]; + }; + }; + /** @description Returned if the request object is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get custom field option + * @description Returns a custom field option. For example, an option in a select list. + * + * Note that this operation **only works for issue field select list options created in Jira or using operations from the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue field select list options created by Connect apps. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The custom field option is returned as follows: + * + * * if the user has the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * if the user has the *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the custom field is used in, and the field is visible in at least one layout the user has permission to view. + */ + getCustomFieldOption: { + parameters: { + path: { + /** @description The ID of the custom field option. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["CustomFieldOption"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the custom field option is not found. + * * the user does not have permission to view the custom field. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get all dashboards + * @description Returns a list of dashboards owned by or shared with the user. The list may be filtered to include only favorite or owned dashboards. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAllDashboards: { + parameters: { + query?: { + /** + * @description The filter applied to the list of dashboards. Valid values are: + * + * * `favourite` Returns dashboards the user has marked as favorite. + * * `my` Returns dashboards owned by the user. + */ + filter?: "my" | "favourite"; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageOfDashboards"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Create dashboard + * @description Creates a dashboard. + * + * **[Permissions](#permissions) required:** None. + */ + createDashboard: { + /** @description Dashboard details. */ + requestBody: { + content: { + /** + * @example { + * "description": "A dashboard to help auditors identify sample of issues to check.", + * "editPermissions": [], + * "name": "Auditors dashboard", + * "sharePermissions": [ + * { + * "type": "global" + * } + * ] + * } + */ + "application/json": components["schemas"]["DashboardDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Dashboard"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Bulk edit dashboards + * @description Bulk edit dashboards. Maximum number of dashboards to be edited at the same time is 100. + * + * **[Permissions](#permissions) required:** None + * + * The dashboards to be updated must be owned by the user, or the user must be an administrator. + */ + bulkEditDashboards: { + /** @description The details of dashboards being updated in bulk. */ + requestBody: { + content: { + /** + * @example { + * "action": "changePermission", + * "entityIds": [ + * 10001, + * 10002 + * ], + * "extendAdminPermissions": true, + * "permissionDetails": { + * "editPermissions": [ + * { + * "group": { + * "groupId": "276f955c-63d7-42c8-9520-92d01dca0625", + * "name": "jira-administrators", + * "self": "https://your-domain.atlassian.net/rest/api/~ver~/group?groupId=276f955c-63d7-42c8-9520-92d01dca0625" + * }, + * "id": 10010, + * "type": "group" + * } + * ], + * "sharePermissions": [ + * { + * "id": 10000, + * "type": "global" + * } + * ] + * } + * } + */ + "application/json": components["schemas"]["BulkEditShareableEntityRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["BulkEditShareableEntityResponse"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get available gadgets + * @description Gets a list of all available gadgets that can be added to all dashboards. + * + * **[Permissions](#permissions) required:** None. + */ + getAllAvailableDashboardGadgets: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["AvailableDashboardGadgetsResponse"]; + }; + }; + /** @description 400 response */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Search for dashboards + * @description Returns a [paginated](#pagination) list of dashboards. This operation is similar to [Get dashboards](#api-rest-api-3-dashboard-get) except that the results can be refined to include dashboards that have specific attributes. For example, dashboards with a particular name. When multiple attributes are specified only filters matching all attributes are returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The following dashboards that match the query parameters are returned: + * + * * Dashboards owned by the user. Not returned for anonymous users. + * * Dashboards shared with a group that the user is a member of. Not returned for anonymous users. + * * Dashboards shared with a private project that the user can browse. Not returned for anonymous users. + * * Dashboards shared with a public project. + * * Dashboards shared with the public. + */ + getDashboardsPaginated: { + parameters: { + query?: { + /** @description String used to perform a case-insensitive partial match with `name`. */ + dashboardName?: string; + /** @description User account ID used to return dashboards with the matching `owner.accountId`. This parameter cannot be used with the `owner` parameter. */ + accountId?: string; + /** @description This parameter is deprecated because of privacy changes. Use `accountId` instead. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. User name used to return dashboards with the matching `owner.name`. This parameter cannot be used with the `accountId` parameter. */ + owner?: string; + /** @description As a group's name can change, use of `groupId` is recommended. Group name used to return dashboards that are shared with a group that matches `sharePermissions.group.name`. This parameter cannot be used with the `groupId` parameter. */ + groupname?: string; + /** @description Group ID used to return dashboards that are shared with a group that matches `sharePermissions.group.groupId`. This parameter cannot be used with the `groupname` parameter. */ + groupId?: string; + /** @description Project ID used to returns dashboards that are shared with a project that matches `sharePermissions.project.id`. */ + projectId?: number; + /** + * @description [Order](#ordering) the results by a field: + * + * * `description` Sorts by dashboard description. Note that this sort works independently of whether the expand to display the description field is in use. + * * `favourite_count` Sorts by dashboard popularity. + * * `id` Sorts by dashboard ID. + * * `is_favourite` Sorts by whether the dashboard is marked as a favorite. + * * `name` Sorts by dashboard name. + * * `owner` Sorts by dashboard owner name. + */ + orderBy?: "description" | "-description" | "+description" | "favorite_count" | "-favorite_count" | "+favorite_count" | "id" | "-id" | "+id" | "is_favorite" | "-is_favorite" | "+is_favorite" | "name" | "-name" | "+name" | "owner" | "-owner" | "+owner"; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The status to filter by. It may be active, archived or deleted. */ + status?: "active" | "archived" | "deleted"; + /** + * @description Use [expand](#expansion) to include additional information about dashboard in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `description` Returns the description of the dashboard. + * * `owner` Returns the owner of the dashboard. + * * `viewUrl` Returns the URL that is used to view the dashboard. + * * `favourite` Returns `isFavourite`, an indicator of whether the user has set the dashboard as a favorite. + * * `favouritedCount` Returns `popularity`, a count of how many users have set this dashboard as a favorite. + * * `sharePermissions` Returns details of the share permissions defined for the dashboard. + * * `editPermissions` Returns details of the edit permissions defined for the dashboard. + * * `isWritable` Returns whether the current user has permission to edit the dashboard. + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanDashboard"]; + }; + }; + /** + * @description Returned if: + * + * * `orderBy` is invalid. + * * `expand` includes an invalid value. + * * `accountId` and `owner` are provided. + * * `groupname` and `groupId` are provided. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description 401 response */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get gadgets + * @description Returns a list of dashboard gadgets on a dashboard. + * + * This operation returns: + * + * * Gadgets from a list of IDs, when `id` is set. + * * Gadgets with a module key, when `moduleKey` is set. + * * Gadgets from a list of URIs, when `uri` is set. + * * All gadgets, when no other parameters are set. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAllGadgets: { + parameters: { + query?: { + /** @description The list of gadgets module keys. To include multiple module keys, separate module keys with ampersand: `moduleKey=key:one&moduleKey=key:two`. */ + moduleKey?: string[]; + /** @description The list of gadgets URIs. To include multiple URIs, separate URIs with ampersand: `uri=/rest/example/uri/1&uri=/rest/example/uri/2`. */ + uri?: string[]; + /** @description The list of gadgets IDs. To include multiple IDs, separate IDs with ampersand: `gadgetId=10000&gadgetId=10001`. */ + gadgetId?: number[]; + }; + path: { + /** @description The ID of the dashboard. */ + dashboardId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DashboardGadgetResponse"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the dashboard is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Add gadget to dashboard + * @description Adds a gadget to a dashboard. + * + * **[Permissions](#permissions) required:** None. + */ + addGadget: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "color": "blue", + * "ignoreUriAndModuleKeyValidation": false, + * "moduleKey": "com.atlassian.plugins.atlassian-connect-plugin:com.atlassian.connect.node.sample-addon__sample-dashboard-item", + * "position": { + * "column": 1, + * "row": 0 + * }, + * "title": "Issue statistics" + * } + */ + "application/json": components["schemas"]["DashboardGadgetSettings"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DashboardGadget"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the dashboard is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Update gadget on dashboard + * @description Changes the title, position, and color of the gadget on a dashboard. + * + * **[Permissions](#permissions) required:** None. + */ + updateGadget: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: number; + /** @description The ID of the gadget. */ + gadgetId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "color": "red", + * "position": { + * "column": 1, + * "row": 1 + * }, + * "title": "My new gadget title" + * } + */ + "application/json": components["schemas"]["DashboardGadgetUpdateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the gadget or the dashboard is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Remove gadget from dashboard + * @description Removes a dashboard gadget from a dashboard. + * + * When a gadget is removed from a dashboard, other gadgets in the same column are moved up to fill the emptied position. + * + * **[Permissions](#permissions) required:** None. + */ + removeGadget: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: number; + /** @description The ID of the gadget. */ + gadgetId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the gadget or the dashboard is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get dashboard item property keys + * @description Returns the keys of all properties for a dashboard item. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when Jira\\u2019s anonymous access is permitted. + */ + getDashboardItemPropertyKeys: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: string; + /** @description The ID of the dashboard item. */ + itemId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard or dashboard item is not found, or the dashboard is not owned by or shared with the user. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get dashboard item property + * @description Returns the key and value of a dashboard item property. + * + * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ). + * + * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this resource to store the item's content or configuration details. For more information on working with dashboard items, see [ Building a dashboard item for a JIRA Connect add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/) and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/) documentation. + * + * There is no resource to set or get dashboard items. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when Jira\\u2019s anonymous access is permitted. + */ + getDashboardItemProperty: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: string; + /** @description The ID of the dashboard item. */ + itemId: string; + /** @description The key of the dashboard item property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard, the dashboard item, or dashboard item property is not found, or the dashboard is not owned by or shared with the user. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Set dashboard item property + * @description Sets the value of a dashboard item property. Use this resource in apps to store custom data against a dashboard item. + * + * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ). + * + * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this resource to store the item's content or configuration details. For more information on working with dashboard items, see [ Building a dashboard item for a JIRA Connect add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/) and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/) documentation. + * + * There is no resource to set or get dashboard items. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. + */ + setDashboardItemProperty: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: string; + /** @description The ID of the dashboard item. */ + itemId: string; + /** @description The key of the dashboard item property. The maximum length is 255 characters. For dashboard items with a spec URI and no complete module key, if the provided propertyKey is equal to "config", the request body's JSON must be an object with all keys and values as strings. */ + propertyKey: string; + }; + }; + /** @description The request containing the value of the dashboard item's property. */ + requestBody: { + content: { + /** + * @example { + * "number": 5, + * "string": "string-value" + * } + */ + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the dashboard item property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the dashboard item property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * Request is invalid + * * Or if all of these conditions are met in the request: + * + * * The dashboard item has a spec URI and no complete module key + * * The value of propertyKey is equal to "config" + * * The request body contains a JSON object whose keys and values are not strings. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user is not the owner of the dashboard. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard item is not found or the dashboard is not shared with the user. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Delete dashboard item property + * @description Deletes a dashboard item property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. + */ + deleteDashboardItemProperty: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: string; + /** @description The ID of the dashboard item. */ + itemId: string; + /** @description The key of the dashboard item property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the dashboard item property is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the dashboard or dashboard item ID is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user is not the owner of the dashboard. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard item is not found or the dashboard is not shared with the user. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get dashboard + * @description Returns a dashboard. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + * + * However, to get a dashboard, the dashboard must be shared with the user or the user must own it. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. The System dashboard is considered to be shared with all other users. + */ + getDashboard: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Dashboard"]; + }; + }; + /** @description 400 response */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard is not found or the dashboard is not owned by or shared with the user. */ + 404: { + content: never; + }; + }; + }; + /** + * Update dashboard + * @description Updates a dashboard, replacing all the dashboard details with those provided. + * + * **[Permissions](#permissions) required:** None + * + * The dashboard to be updated must be owned by the user. + */ + updateDashboard: { + parameters: { + path: { + /** @description The ID of the dashboard to update. */ + id: string; + }; + }; + /** @description Replacement dashboard details. */ + requestBody: { + content: { + /** + * @example { + * "description": "A dashboard to help auditors identify sample of issues to check.", + * "editPermissions": [], + * "name": "Auditors dashboard", + * "sharePermissions": [ + * { + * "type": "global" + * } + * ] + * } + */ + "application/json": components["schemas"]["DashboardDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Dashboard"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard is not found or the dashboard is not owned by the user. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Delete dashboard + * @description Deletes a dashboard. + * + * **[Permissions](#permissions) required:** None + * + * The dashboard to be deleted must be owned by the user. + */ + deleteDashboard: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + id: string; + }; + }; + responses: { + /** @description Returned if the dashboard is deleted. */ + 204: { + content: never; + }; + /** @description 400 response */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Copy dashboard + * @description Copies a dashboard. Any values provided in the `dashboard` parameter replace those in the copied dashboard. + * + * **[Permissions](#permissions) required:** None + * + * The dashboard to be copied must be owned by or shared with the user. + */ + copyDashboard: { + parameters: { + path: { + id: string; + }; + }; + /** @description Dashboard details. */ + requestBody: { + content: { + /** + * @example { + * "description": "A dashboard to help auditors identify sample of issues to check.", + * "editPermissions": [], + * "name": "Auditors dashboard", + * "sharePermissions": [ + * { + * "type": "global" + * } + * ] + * } + */ + "application/json": components["schemas"]["DashboardDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Dashboard"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard is not found or the dashboard is not owned by or shared with the user. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get events + * @description Returns all issue events. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getEvents: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueEvent"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: never; + }; + }; + }; + /** + * Analyse Jira expression + * @description 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](#permissions) required**: None. + */ + analyseExpression: { + parameters: { + query?: { + /** + * @description 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](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#expensive-operations) each expression may execute. + */ + check?: "syntax" | "type" | "complexity"; + }; + }; + /** @description The Jira expressions to analyse. */ + requestBody: { + content: { + /** + * @example { + * "contextVariables": { + * "listOfStrings": "List", + * "record": "{ a: Number, b: String }", + * "value": "User" + * }, + * "expressions": [ + * "issues.map(issue => issue.properties['property_key'])" + * ] + * } + */ + "application/json": components["schemas"]["JiraExpressionForAnalysis"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["JiraExpressionsAnalysis"]; + }; + }; + /** @description 400 response */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description 404 response */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Evaluate Jira expression + * @description 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](#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`). + */ + evaluateJiraExpression: { + parameters: { + query?: { + /** @description Use [expand](#expansion) 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](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#restrictions). Useful when designing and debugging your expressions. */ + expand?: string; + }; + }; + /** @description The Jira expression and the evaluation context. */ + requestBody: { + content: { + /** + * @example { + * "context": { + * "board": 10100, + * "custom": { + * "config": { + * "type": "json", + * "value": { + * "userId": "10002" + * } + * }, + * "issuesList": [ + * { + * "key": "ACJIRA-1471", + * "type": "issue" + * }, + * { + * "id": 100001, + * "type": "issue" + * } + * ], + * "myUser": { + * "accountId": "100001", + * "type": "user" + * }, + * "nullField": { + * "type": "json" + * } + * }, + * "customerRequest": 1450, + * "issue": { + * "key": "ACJIRA-1470" + * }, + * "issues": { + * "jql": { + * "maxResults": 100, + * "query": "project = HSP", + * "startAt": 0, + * "validation": "strict" + * } + * }, + * "project": { + * "key": "ACJIRA" + * }, + * "serviceDesk": 10023, + * "sprint": 10001 + * }, + * "expression": "{ key: issue.key, type: issue.issueType.name, links: issue.links.map(link => link.linkedIssue.id), listCustomVariable: issuesList.includes(issue), customVariables: myUser.accountId == config.userId}" + * } + */ + "application/json": components["schemas"]["JiraExpressionEvalRequestBean"]; + }; + }; + responses: { + /** @description Returned if the evaluation results in a value. The result is a JSON primitive value, list, or object. */ + 200: { + content: { + "application/json": components["schemas"]["JiraExpressionResult"]; + }; + }; + /** + * @description Returned if: + * + * * the request is invalid, that is: + * + * * invalid data is provided, such as a request including issue ID and key. + * * the expression is invalid and can not be parsed. + * * evaluation fails at runtime. This may happen for various reasons. For example, accessing a property on a null object (such as the expression `issue.id` where `issue` is `null`). In this case an error message is provided. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if any object provided in the request context is not found or the user does not have permission to view it. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get fields + * @description Returns system and custom issue fields according to the following rules: + * + * * Fields that cannot be added to the issue navigator are always returned. + * * Fields that cannot be placed on an issue screen are always returned. + * * Fields that depend on global Jira settings are only returned if the setting is enabled. That is, timetracking fields, subtasks, votes, and watches. + * * For all other fields, this operation only returns the fields that the user has permission to view (that is, the field is used in at least one project that the user has *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for.) + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getFields: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["FieldDetails"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create custom field + * @description Creates a custom field. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createCustomField: { + /** @description Definition of the custom field to be created */ + requestBody: { + content: { + /** + * @example { + * "description": "Custom field for picking groups", + * "name": "New custom field", + * "searcherKey": "com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher", + * "type": "com.atlassian.jira.plugin.system.customfieldtypes:grouppicker" + * } + */ + "application/json": components["schemas"]["CustomFieldDefinitionJsonBean"]; + }; + }; + responses: { + /** @description Returned if the custom field is created. */ + 201: { + content: { + "application/json": components["schemas"]["FieldDetails"]; + }; + }; + /** + * @description Returned if: + * + * * the user does not have permission to create custom fields. + * * any of the request object properties have invalid or missing values. + */ + 400: { + content: never; + }; + }; + }; + /** + * Get fields paginated + * @description Returns a [paginated](#pagination) list of fields for Classic Jira projects. The list can include: + * + * * all fields + * * specific fields, by defining `id` + * * fields that contain a string in the field name or description, by defining `query` + * * specific fields that contain a string in the field name or description, by defining `id` and `query` + * + * Only custom fields can be queried, `type` must be set to `custom`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getFieldsPaginated: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The type of fields to search. */ + type?: ("custom" | "system")[]; + /** @description The IDs of the custom fields to return or, where `query` is specified, filter. */ + id?: string[]; + /** @description String used to perform a case-insensitive partial match with field names or descriptions. */ + query?: string; + /** + * @description [Order](#ordering) the results by a field: + * + * * `contextsCount` sorts by the number of contexts related to a field + * * `lastUsed` sorts by the date when the value of the field last changed + * * `name` sorts by the field name + * * `screensCount` sorts by the number of screens related to a field + */ + orderBy?: "contextsCount" | "-contextsCount" | "+contextsCount" | "lastUsed" | "-lastUsed" | "+lastUsed" | "name" | "-name" | "+name" | "screensCount" | "-screensCount" | "+screensCount" | "projectsCount" | "-projectsCount" | "+projectsCount"; + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `key` returns the key for each field + * * `lastUsed` returns the date when the value of the field last changed + * * `screensCount` returns the number of screens related to a field + * * `contextsCount` returns the number of contexts related to a field + * * `isLocked` returns information about whether the field is [locked](https://confluence.atlassian.com/x/ZSN7Og) + * * `searcherKey` returns the searcher key for each custom field + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanField"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get fields in trash paginated + * @description Returns a [paginated](#pagination) list of fields in the trash. The list may be restricted to fields whose field name or description partially match a string. + * + * Only custom fields can be queried, `type` must be set to `custom`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getTrashedFieldsPaginated: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + id?: string[]; + /** @description String used to perform a case-insensitive partial match with field names or descriptions. */ + query?: string; + expand?: "name" | "-name" | "+name" | "trashDate" | "-trashDate" | "+trashDate" | "plannedDeletionDate" | "-plannedDeletionDate" | "+plannedDeletionDate" | "projectsCount" | "-projectsCount" | "+projectsCount"; + /** + * @description [Order](#ordering) the results by a field: + * + * * `name` sorts by the field name + * * `trashDate` sorts by the date the field was moved to the trash + * * `plannedDeletionDate` sorts by the planned deletion date + */ + orderBy?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanField"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Update custom field + * @description Updates a custom field. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateCustomField: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + }; + }; + /** @description The custom field update details. */ + requestBody: { + content: { + /** + * @example { + * "description": "Select the manager and the corresponding employee.", + * "name": "Managers and employees list", + * "searcherKey": "com.atlassian.jira.plugin.system.customfieldtypes:cascadingselectsearcher" + * } + */ + "application/json": components["schemas"]["UpdateCustomFieldDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get custom field contexts + * @description Returns a [paginated](#pagination) list of [ contexts](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html) for a custom field. Contexts can be returned as follows: + * + * * With no other parameters set, all contexts. + * * By defining `id` only, all contexts from the list of IDs. + * * By defining `isAnyIssueType`, limit the list of contexts returned to either those that apply to all issue types (true) or those that apply to only a subset of issue types (false) + * * By defining `isGlobalContext`, limit the list of contexts return to either those that apply to all projects (global contexts) (true) or those that apply to only a subset of projects (false). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getContextsForField: { + parameters: { + query?: { + /** @description Whether to return contexts that apply to all issue types. */ + isAnyIssueType?: boolean; + /** @description Whether to return contexts that apply to all projects. */ + isGlobalContext?: boolean; + /** @description The list of context IDs. To include multiple contexts, separate IDs with ampersand: `contextId=10000&contextId=10001`. */ + contextId?: number[]; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the custom field. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanCustomFieldContext"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field was not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Create custom field context + * @description Creates a custom field context. + * + * If `projectIds` is empty, a global context is created. A global context is one that applies to all project. If `issueTypeIds` is empty, the context applies to all issue types. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createCustomFieldContext: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "A context used to define the custom field options for bugs.", + * "issueTypeIds": [ + * "10010" + * ], + * "name": "Bug fields context", + * "projectIds": [] + * } + */ + "application/json": components["schemas"]["CreateCustomFieldContext"]; + }; + }; + responses: { + /** @description Returned if the custom field context is created. */ + 201: { + content: { + "application/json": components["schemas"]["CreateCustomFieldContext"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the field, project, or issue type is not found. */ + 404: { + content: never; + }; + /** @description Returned if the issue type is a sub-task, but sub-tasks are disabled in Jira settings. */ + 409: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get custom field contexts default values + * @description Returns a [paginated](#pagination) list of defaults for a custom field. The results can be filtered by `contextId`, otherwise all values are returned. If no defaults are set for a context, nothing is returned. + * The returned object depends on type of the custom field: + * + * * `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields. + * * `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields. + * * `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio buttons. + * * `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and checkboxes. + * * `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists. + * * `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users. + * * `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists. + * * `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers. + * * `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group pickers. + * * `CustomFieldContextDefaultValueURL` (type `url`) for URLs. + * * `CustomFieldContextDefaultValueProject` (type `project`) for project pickers. + * * `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers). + * * `CustomFieldContextDefaultValueLabels` (type `labels`) for labels. + * * `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields. + * * `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields. + * * `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields. + * * `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers. + * * `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers. + * + * Forge custom fields [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types) are also supported, returning: + * + * * `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields. + * * `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection fields. + * * `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields. + * * `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields. + * * `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields. + * * `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection fields. + * * `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields. + * * `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields. + * * `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getDefaultValues: { + parameters: { + query?: { + /** @description The IDs of the contexts. */ + contextId?: number[]; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the custom field, for example `customfield\_10000`. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanCustomFieldContextDefaultValue"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Set custom field contexts default values + * @description Sets default for contexts of a custom field. Default are defined using these objects: + * + * * `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields. + * * `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields. + * * `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio buttons. + * * `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and checkboxes. + * * `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists. + * * `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users. + * * `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists. + * * `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers. + * * `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group pickers. + * * `CustomFieldContextDefaultValueURL` (type `url`) for URLs. + * * `CustomFieldContextDefaultValueProject` (type `project`) for project pickers. + * * `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers). + * * `CustomFieldContextDefaultValueLabels` (type `labels`) for labels. + * * `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields. + * * `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields. + * * `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields. + * * `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers. + * * `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers. + * + * Forge custom fields [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types) are also supported, returning: + * + * * `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields. + * * `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection fields. + * * `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields. + * * `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields. + * * `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields. + * * `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection fields. + * * `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields. + * * `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields. + * * `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields. + * + * Only one type of default object can be included in a request. To remove a default for a context, set the default parameter to `null`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setDefaultValues: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "defaultValues": [ + * { + * "contextId": "10100", + * "optionId": "10001", + * "type": "option.single" + * }, + * { + * "contextId": "10101", + * "optionId": "10003", + * "type": "option.single" + * }, + * { + * "contextId": "10103", + * "optionId": "10005", + * "type": "option.single" + * } + * ] + * } + */ + "application/json": components["schemas"]["CustomFieldContextDefaultValueUpdate"]; + }; + }; + responses: { + /** @description Returned if operation is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field, a context, an option, or a cascading option is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue types for custom field context + * @description Returns a [paginated](#pagination) list of context to issue type mappings for a custom field. Mappings are returned for all contexts or a list of contexts. Mappings are ordered first by context ID and then by issue type ID. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypeMappingsForContexts: { + parameters: { + query?: { + /** @description The ID of the context. To include multiple contexts, provide an ampersand-separated list. For example, `contextId=10001&contextId=10002`. */ + contextId?: number[]; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the custom field. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if operation is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeToContextMapping"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get custom field contexts for projects and issue types + * @description Returns a [paginated](#pagination) list of project and issue type mappings and, for each mapping, the ID of a [custom field context](https://confluence.atlassian.com/x/k44fOw) that applies to the project and issue type. + * + * If there is no custom field context assigned to the project then, if present, the custom field context that applies to all projects is returned if it also applies to the issue type or all issue types. If a custom field context is not found, the returned custom field context ID is `null`. + * + * Duplicate project and issue type mappings cannot be provided in the request. + * + * The order of the returned values is the same as provided in the request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getCustomFieldContextsForProjectsAndIssueTypes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the custom field. */ + fieldId: string; + }; + }; + /** @description The list of project and issue type mappings. */ + requestBody: { + content: { + /** + * @example { + * "mappings": [ + * { + * "issueTypeId": "10000", + * "projectId": "10000" + * }, + * { + * "issueTypeId": "10001", + * "projectId": "10000" + * }, + * { + * "issueTypeId": "10002", + * "projectId": "10001" + * } + * ] + * } + */ + "application/json": components["schemas"]["ProjectIssueTypeMappings"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanContextForProjectAndIssueType"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field, project, or issue type is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get project mappings for custom field context + * @description Returns a [paginated](#pagination) list of context to project mappings for a custom field. The result can be filtered by `contextId`. Otherwise, all mappings are returned. Invalid IDs are ignored. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getProjectContextMapping: { + parameters: { + query?: { + /** @description The list of context IDs. To include multiple context, separate IDs with ampersand: `contextId=10000&contextId=10001`. */ + contextId?: number[]; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the custom field, for example `customfield\_10000`. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanCustomFieldContextProjectMapping"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update custom field context + * @description Updates a [ custom field context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateCustomFieldContext: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "A context used to define the custom field options for bugs.", + * "name": "Bug fields context" + * } + */ + "application/json": components["schemas"]["CustomFieldContextUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the context is updated. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field or the context is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete custom field context + * @description Deletes a [ custom field context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteCustomFieldContext: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + responses: { + /** @description Returned if the context is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field or the context is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Add issue types to context + * @description Adds issue types to a custom field context, appending the issue types to the issue types list. + * + * A custom field context without any issue types applies to all issue types. Adding issue types to such a custom field context would result in it applying to only the listed issue types. + * + * If any of the issue types exists in the custom field context, the operation fails and no issue types are added. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addIssueTypesToContext: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypeIds": [ + * "10001", + * "10005", + * "10006" + * ] + * } + */ + "application/json": components["schemas"]["IssueTypeIds"]; + }; + }; + responses: { + /** @description Returned if operation is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field, context, or one or more issue types are not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type is a sub-task, but sub-tasks are disabled in Jira settings. */ + 409: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Remove issue types from context + * @description Removes issue types from a custom field context. + * + * A custom field context without any issue types applies to all issue types. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeIssueTypesFromContext: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypeIds": [ + * "10001", + * "10005", + * "10006" + * ] + * } + */ + "application/json": components["schemas"]["IssueTypeIds"]; + }; + }; + responses: { + /** @description Returned if operation is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field, context, or one or more issue types are not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get custom field options (context) + * @description Returns a [paginated](#pagination) list of all custom field option for a context. Options are returned first then cascading options, in the order they display in Jira. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getOptionsForContext: { + parameters: { + query?: { + /** @description The ID of the option. */ + optionId?: number; + /** @description Whether only options are returned. */ + onlyOptions?: boolean; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanCustomFieldContextOption"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field is not found or the context doesn't match the custom field. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update custom field options (context) + * @description Updates the options of a custom field. + * + * If any of the options are not found, no options are updated. Options where the values in the request match the current values aren't updated and aren't reported in the response. + * + * Note that this operation **only works for issue field select list options created in Jira or using operations from the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue field select list options created by Connect apps. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateCustomFieldOption: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "options": [ + * { + * "disabled": false, + * "id": "10001", + * "value": "Scranton" + * }, + * { + * "disabled": true, + * "id": "10002", + * "value": "Manhattan" + * }, + * { + * "disabled": false, + * "id": "10003", + * "value": "The Electric City" + * } + * ] + * } + */ + "application/json": components["schemas"]["BulkCustomFieldOptionUpdateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["CustomFieldUpdatedContextOptionsList"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the field, context, or one or more options is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Create custom field options (context) + * @description Creates options and, where the custom select field is of the type Select List (cascading), cascading options for a custom select field. The options are added to a context of the field. + * + * The maximum number of options that can be created per request is 1000 and each field can have a maximum of 10000 options. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createCustomFieldOption: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "options": [ + * { + * "disabled": false, + * "value": "Scranton" + * }, + * { + * "disabled": true, + * "optionId": "10000", + * "value": "Manhattan" + * }, + * { + * "disabled": false, + * "value": "The Electric City" + * } + * ] + * } + */ + "application/json": components["schemas"]["BulkCustomFieldOptionCreateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["CustomFieldCreatedContextOptionsList"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field is not found or the context doesn't match the custom field. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Reorder custom field options (context) + * @description Changes the order of custom field options or cascading options in a context. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + reorderCustomFieldOptions: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "customFieldOptionIds": [ + * "10001", + * "10002" + * ], + * "position": "First" + * } + */ + "application/json": components["schemas"]["OrderOfCustomFieldOptions"]; + }; + }; + responses: { + /** @description Returned if options are reordered. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the field, the context, or one or more of the options is not found.. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete custom field options (context) + * @description Deletes a custom field option. + * + * Options with cascading options cannot be deleted without deleting the cascading options first. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteCustomFieldOption: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context from which an option should be deleted. */ + contextId: number; + /** @description The ID of the option to delete. */ + optionId: number; + }; + }; + responses: { + /** @description Returned if the option is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the field, the context, or the option is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Assign custom field context to projects + * @description Assigns a custom field context to projects. + * + * If any project in the request is assigned to any context of the custom field, the operation fails. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + assignProjectsToCustomFieldContext: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "projectIds": [ + * "10001", + * "10005", + * "10006" + * ] + * } + */ + "application/json": components["schemas"]["ProjectIds"]; + }; + }; + responses: { + /** @description Returned if operation is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field, context, or project is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Remove custom field context from projects + * @description Removes a custom field context from projects. + * + * A custom field context without any projects applies to all projects. Removing all projects from a custom field context would result in it applying to all projects. + * + * If any project in the request is not assigned to the context, or the operation would result in two global contexts for the field, the operation fails. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeCustomFieldContextFromProjects: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "projectIds": [ + * "10001", + * "10005", + * "10006" + * ] + * } + */ + "application/json": components["schemas"]["ProjectIds"]; + }; + }; + responses: { + /** @description Returned if the custom field context is removed from the projects. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field, context, or one or more projects are not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get contexts for a field + * @deprecated + * @description Returns a [paginated](#pagination) list of the contexts a field is used in. Deprecated, use [ Get custom field contexts](#api-rest-api-3-field-fieldId-context-get). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getContextsForFieldDeprecated: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the field to return contexts for. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanContext"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get screens for a field + * @description Returns a [paginated](#pagination) list of the screens a field is used in. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getScreensForField: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description Use [expand](#expansion) to include additional information about screens in the response. This parameter accepts `tab` which returns details about the screen tabs the field is used in. */ + expand?: string; + }; + path: { + /** @description The ID of the field to return screens for. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanScreenWithTab"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get all issue field options + * @description Returns a [paginated](#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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + getAllIssueFieldOptions: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueFieldOption"]; + }; + }; + /** @description Returned if the field is not found or does not support options. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as a Jira administrator or the app that provided the field. */ + 403: { + content: never; + }; + }; + }; + /** + * Create issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + createIssueFieldOption: { + parameters: { + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "config": { + * "attributes": [], + * "scope": { + * "global": {}, + * "projects": [], + * "projects2": [ + * { + * "attributes": [ + * "notSelectable" + * ], + * "id": 1001 + * }, + * { + * "attributes": [ + * "notSelectable" + * ], + * "id": 1002 + * } + * ] + * } + * }, + * "properties": { + * "description": "The team's description", + * "founded": "2016-06-06", + * "leader": { + * "email": "lname@example.com", + * "name": "Leader Name" + * }, + * "members": 42 + * }, + * "value": "Team 1" + * } + */ + "application/json": components["schemas"]["IssueFieldOptionCreateBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueFieldOption"]; + }; + }; + /** @description Returned if the option is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as a Jira administrator or the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if the field is not found or does not support options. */ + 404: { + content: never; + }; + }; + }; + /** + * Get selectable issue field options + * @description Returns a [paginated](#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](#permissions) required:** Permission to access Jira. + */ + getSelectableIssueFieldOptions: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description Filters the results to options that are only available in the specified project. */ + projectId?: number; + }; + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueFieldOption"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the field is not found or does not support options. */ + 404: { + content: never; + }; + }; + }; + /** + * Get visible issue field options + * @description Returns a [paginated](#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](#permissions) required:** Permission to access Jira. + */ + getVisibleIssueFieldOptions: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description Filters the results to options that are only available in the specified project. */ + projectId?: number; + }; + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueFieldOption"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the field is not found or does not support options. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + getIssueFieldOption: { + parameters: { + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + /** @description The ID of the option to be returned. */ + optionId: number; + }; + }; + responses: { + /** @description Returned if the requested option is returned. */ + 200: { + content: { + "application/json": components["schemas"]["IssueFieldOption"]; + }; + }; + /** @description Returned if the field is not found or does not support options. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as a Jira administrator or the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if the option is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + updateIssueFieldOption: { + parameters: { + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + /** @description The ID of the option to be updated. */ + optionId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "config": { + * "attributes": [], + * "scope": { + * "global": {}, + * "projects": [], + * "projects2": [ + * { + * "attributes": [ + * "notSelectable" + * ], + * "id": 1001 + * }, + * { + * "attributes": [ + * "notSelectable" + * ], + * "id": 1002 + * } + * ] + * } + * }, + * "id": 1, + * "properties": { + * "description": "The team's description", + * "founded": "2016-06-06", + * "leader": { + * "email": "lname@example.com", + * "name": "Leader Name" + * }, + * "members": 42 + * }, + * "value": "Team 1" + * } + */ + "application/json": components["schemas"]["IssueFieldOption"]; + }; + }; + responses: { + /** @description Returned if the option is updated or created. */ + 200: { + content: { + "application/json": components["schemas"]["IssueFieldOption"]; + }; + }; + /** @description Returned if the option is invalid, or the *ID* in the request object does not match the *optionId* parameter. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as a Jira administrator or the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + deleteIssueFieldOption: { + parameters: { + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + /** @description The ID of the option to be deleted. */ + optionId: number; + }; + }; + responses: { + /** @description Returned if the field option is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not authenticated as a Jira administrator or the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if the field or option is not found. */ + 404: { + content: never; + }; + /** @description Returned if the option is selected for the field in any issue. */ + 409: { + content: never; + }; + }; + }; + /** + * Replace issue field option + * @description 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](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + replaceIssueFieldOption: { + parameters: { + query?: { + /** @description The ID of the option that will replace the currently selected option. */ + replaceWith?: number; + /** @description A JQL query that specifies the issues to be updated. For example, *project=10000*. */ + jql?: string; + /** @description Whether screen security is overridden to enable hidden fields to be edited. Available to Connect and Forge app users with admin permission. */ + overrideScreenSecurity?: boolean; + /** @description Whether screen security is overridden to enable uneditable fields to be edited. Available to Connect and Forge app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideEditableFlag?: boolean; + }; + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + /** @description The ID of the option to be deselected. */ + optionId: number; + }; + }; + responses: { + /** @description Returned if the long-running task to deselect the option is started. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanRemoveOptionFromIssuesResult"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the field is not found or does not support options, or the options to be replaced are not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete custom field + * @description Deletes a custom field. The custom field is deleted whether it is in the trash or not. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteCustomField: { + parameters: { + path: { + /** @description The ID of a custom field. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** + * @description Returned if any of these are true: + * + * * The custom field is locked. + * * The custom field is used in a issue security scheme or a permission scheme. + * * The custom field ID format is incorrect. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if a task to delete the custom field is running. */ + 409: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Restore custom field from trash + * @description Restores a custom field from trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + restoreCustomField: { + parameters: { + path: { + /** @description The ID of a custom field. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Move custom field to trash + * @description Moves a custom field to trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + trashCustomField: { + parameters: { + path: { + /** @description The ID of a custom field. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all field configurations + * @description Returns a [paginated](#pagination) list of field configurations. The list can be for all field configurations or a subset determined by any combination of these criteria: + * + * * a list of field configuration item IDs. + * * whether the field configuration is a default. + * * whether the field configuration name or description contains a query string. + * + * Only field configurations used in company-managed (classic) projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllFieldConfigurations: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of field configuration IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. */ + id?: number[]; + /** @description If *true* returns default field configurations only. */ + isDefault?: boolean; + /** @description The query string used to match against field configuration names and descriptions. */ + query?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanFieldConfigurationDetails"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Create field configuration + * @description Creates a field configuration. The field configuration is created with the same field properties as the default configuration, with all the fields being optional. + * + * This operation can only create configurations for use in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createFieldConfiguration: { + requestBody: { + content: { + /** + * @example { + * "description": "My field configuration description", + * "name": "My Field Configuration" + * } + */ + "application/json": components["schemas"]["FieldConfigurationDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["FieldConfiguration"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Update field configuration + * @description Updates a field configuration. The name and the description provided in the request override the existing values. + * + * This operation can only update configurations used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateFieldConfiguration: { + parameters: { + path: { + /** @description The ID of the field configuration. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "A brand new description", + * "name": "My Modified Field Configuration" + * } + */ + "application/json": components["schemas"]["FieldConfigurationDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field configuration is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete field configuration + * @description Deletes a field configuration. + * + * This operation can only delete configurations used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteFieldConfiguration: { + parameters: { + path: { + /** @description The ID of the field configuration. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field configuration is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get field configuration items + * @description Returns a [paginated](#pagination) list of all fields for a configuration. + * + * Only the fields from configurations used in company-managed (classic) projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getFieldConfigurationItems: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the field configuration. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanFieldConfigurationItem"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field configuration is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update field configuration items + * @description Updates fields in a field configuration. The properties of the field configuration fields provided override the existing values. + * + * This operation can only update field configurations used in company-managed (classic) projects. + * + * The operation can set the renderer for text fields to the default text renderer (`text-renderer`) or wiki style renderer (`wiki-renderer`). However, the renderer cannot be updated for fields using the autocomplete renderer (`autocomplete-renderer`). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateFieldConfigurationItems: { + parameters: { + path: { + /** @description The ID of the field configuration. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "fieldConfigurationItems": [ + * { + * "description": "The new description of this item.", + * "id": "customfield_10012", + * "isHidden": false + * }, + * { + * "id": "customfield_10011", + * "isRequired": true + * }, + * { + * "description": "Another new description.", + * "id": "customfield_10010", + * "isHidden": false, + * "isRequired": false, + * "renderer": "wiki-renderer" + * } + * ] + * } + */ + "application/json": components["schemas"]["FieldConfigurationItemsDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field configuration is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all fieldg rnfiguration schemes + * @description Returns a [paginated](#pagination) list of field configuration schemes. + * + * Only field configuration schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllFieldgRnfigurationSchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of field configuration scheme IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. */ + id?: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanFieldConfigurationScheme"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Create field configuration scheme + * @description Creates a field configuration scheme. + * + * This operation can only create field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createFieldConfigurationScheme: { + /** @description The details of the field configuration scheme. */ + requestBody: { + content: { + /** + * @example { + * "description": "We can use this one for software projects.", + * "name": "Field Configuration Scheme for software related projects" + * } + */ + "application/json": components["schemas"]["UpdateFieldConfigurationSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["FieldConfigurationScheme"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get field configuration issue type items + * @description Returns a [paginated](#pagination) list of field configuration issue type items. + * + * Only items used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getFieldConfigurationSchemeMappings: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of field configuration scheme IDs. To include multiple field configuration schemes separate IDs with ampersand: `fieldConfigurationSchemeId=10000&fieldConfigurationSchemeId=10001`. */ + fieldConfigurationSchemeId?: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanFieldConfigurationIssueTypeItem"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if no field configuration schemes are found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get field configuration schemes for projects + * @description Returns a [paginated](#pagination) list of field configuration schemes and, for each scheme, a list of the projects that use it. + * + * The list is sorted by field configuration scheme ID. The first item contains the list of project IDs assigned to the default field configuration scheme. + * + * Only field configuration schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getFieldConfigurationSchemeProjectMapping: { + parameters: { + query: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of project IDs. To include multiple projects, separate IDs with ampersand: `projectId=10000&projectId=10001`. */ + projectId: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanFieldConfigurationSchemeProjects"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Assign field configuration scheme to project + * @description Assigns a field configuration scheme to a project. If the field configuration scheme ID is `null`, the operation assigns the default field configuration scheme. + * + * Field configuration schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + assignFieldConfigurationSchemeToProject: { + requestBody: { + content: { + /** + * @example { + * "fieldConfigurationSchemeId": "10000", + * "projectId": "10000" + * } + */ + "application/json": components["schemas"]["FieldConfigurationSchemeProjectAssociation"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the project is not a classic project. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the project is missing. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update field configuration scheme + * @description Updates a field configuration scheme. + * + * This operation can only update field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateFieldConfigurationScheme: { + parameters: { + path: { + /** @description The ID of the field configuration scheme. */ + id: number; + }; + }; + /** @description The details of the field configuration scheme. */ + requestBody: { + content: { + /** + * @example { + * "description": "We can use this one for software projects.", + * "name": "Field Configuration Scheme for software related projects" + * } + */ + "application/json": components["schemas"]["UpdateFieldConfigurationSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the field configuration scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete field configuration scheme + * @description Deletes a field configuration scheme. + * + * This operation can only delete field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteFieldConfigurationScheme: { + parameters: { + path: { + /** @description The ID of the field configuration scheme. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field configuration scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Assign issue types to field configurations + * @description Assigns issue types to field configurations on field configuration scheme. + * + * This operation can only modify field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setFieldConfigurationSchemeMapping: { + parameters: { + path: { + /** @description The ID of the field configuration scheme. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "mappings": [ + * { + * "fieldConfigurationId": "10000", + * "issueTypeId": "default" + * }, + * { + * "fieldConfigurationId": "10002", + * "issueTypeId": "10001" + * }, + * { + * "fieldConfigurationId": "10001", + * "issueTypeId": "10002" + * } + * ] + * } + */ + "application/json": components["schemas"]["AssociateFieldConfigurationsWithIssueTypesRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field configuration scheme, the field configuration, or the issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Remove issue types from field configuration scheme + * @description Removes issue types from the field configuration scheme. + * + * This operation can only modify field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeIssueTypesFromGlobalFieldConfigurationScheme: { + parameters: { + path: { + /** @description The ID of the field configuration scheme. */ + id: number; + }; + }; + /** @description The issue type IDs to remove. */ + requestBody: { + content: { + /** + * @example { + * "issueTypeIds": [ + * "10000", + * "10001", + * "10002" + * ] + * } + */ + "application/json": components["schemas"]["IssueTypeIdsToRemove"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the field configuration scheme or the issue types are not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Create filter + * @description Creates a filter. The filter is shared according to the [default share scope](#api-rest-api-3-filter-post). The filter is not selected as a favorite. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + createFilter: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + /** @description EXPERIMENTAL: Whether share permissions are overridden to enable filters with any share permissions to be created. Available to users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideSharePermissions?: boolean; + }; + }; + /** @description The filter to create. */ + requestBody: { + content: { + /** + * @example { + * "description": "Lists all open bugs", + * "jql": "type = Bug and resolution is empty", + * "name": "All Open Bugs" + * } + */ + "application/json": components["schemas"]["Filter"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"]; + }; + }; + /** @description Returned if the request object is invalid. For example, the `name` is not unique or the project ID is not specified for a project role share permission. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get default share scope + * @description Returns the default sharing settings for new filters and dashboards for a user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getDefaultShareScope: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DefaultShareScope"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Set default share scope + * @description Sets the default sharing for new filters and dashboards for a user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + setDefaultShareScope: { + requestBody: { + content: { + /** + * @example { + * "scope": "GLOBAL" + * } + */ + "application/json": components["schemas"]["DefaultShareScope"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DefaultShareScope"]; + }; + }; + /** @description Returned if an invalid scope is set. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get favorite filters + * @description Returns the visible favorite filters of the user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** A favorite filter is only visible to the user where the filter is: + * + * * owned by the user. + * * shared with a group that the user is a member of. + * * shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * shared with a public project. + * * shared with the public. + * + * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by this operation. + */ + getFavouriteFilters: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get my filters + * @description Returns the filters owned by the user. If `includeFavourites` is `true`, the user's visible favorite filters are also returned. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, a favorite filters is only visible to the user where the filter is: + * + * * owned by the user. + * * shared with a group that the user is a member of. + * * shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * shared with a public project. + * * shared with the public. + * + * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by this operation. + */ + getMyFilters: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + /** @description Include the user's favorite filters in the response. */ + includeFavourites?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Search for filters + * @description Returns a [paginated](#pagination) list of filters. Use this operation to get: + * + * * specific filters, by defining `id` only. + * * filters that match all of the specified attributes. For example, all filters for a user with a particular word in their name. When multiple attributes are specified only filters matching all attributes are returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, only the following filters that match the query parameters are returned: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + getFiltersPaginated: { + parameters: { + query?: { + /** @description String used to perform a case-insensitive partial match with `name`. */ + filterName?: string; + /** @description User account ID used to return filters with the matching `owner.accountId`. This parameter cannot be used with `owner`. */ + accountId?: string; + /** @description This parameter is deprecated because of privacy changes. Use `accountId` instead. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. User name used to return filters with the matching `owner.name`. This parameter cannot be used with `accountId`. */ + owner?: string; + /** @description As a group's name can change, use of `groupId` is recommended to identify a group. Group name used to returns filters that are shared with a group that matches `sharePermissions.group.groupname`. This parameter cannot be used with the `groupId` parameter. */ + groupname?: string; + /** @description Group ID used to returns filters that are shared with a group that matches `sharePermissions.group.groupId`. This parameter cannot be used with the `groupname` parameter. */ + groupId?: string; + /** @description Project ID used to returns filters that are shared with a project that matches `sharePermissions.project.id`. */ + projectId?: number; + /** @description The list of filter IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. Do not exceed 200 filter IDs. */ + id?: number[]; + /** + * @description [Order](#ordering) the results by a field: + * + * * `description` Sorts by filter description. Note that this sorting works independently of whether the expand to display the description field is in use. + * * `favourite_count` Sorts by the count of how many users have this filter as a favorite. + * * `is_favourite` Sorts by whether the filter is marked as a favorite. + * * `id` Sorts by filter ID. + * * `name` Sorts by filter name. + * * `owner` Sorts by the ID of the filter owner. + * * `is_shared` Sorts by whether the filter is shared. + */ + orderBy?: "description" | "-description" | "+description" | "favourite_count" | "-favourite_count" | "+favourite_count" | "id" | "-id" | "+id" | "is_favourite" | "-is_favourite" | "+is_favourite" | "name" | "-name" | "+name" | "owner" | "-owner" | "+owner" | "is_shared" | "-is_shared" | "+is_shared"; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `description` Returns the description of the filter. + * * `favourite` Returns an indicator of whether the user has set the filter as a favorite. + * * `favouritedCount` Returns a count of how many users have set this filter as a favorite. + * * `jql` Returns the JQL query that the filter uses. + * * `owner` Returns the owner of the filter. + * * `searchUrl` Returns a URL to perform the filter's JQL query. + * * `sharePermissions` Returns the share permissions defined for the filter. + * * `editPermissions` Returns the edit permissions defined for the filter. + * * `isWritable` Returns whether the current user has permission to edit the filter. + * * `subscriptions` Returns the users that are subscribed to the filter. + * * `viewUrl` Returns a URL to view the filter. + */ + expand?: string; + /** @description EXPERIMENTAL: Whether share permissions are overridden to enable filters with any share permissions to be returned. Available to users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideSharePermissions?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanFilterDetails"]; + }; + }; + /** + * @description Returned if: + * + * * `owner` and `accountId` are provided. + * * `expand` includes an invalid value. + * * `orderBy` is invalid. + * * `id` identifies more than 200 filter IDs. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get filter + * @description Returns a filter. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, the filter is only returned where it is: + * + * * owned by the user. + * * shared with a group that the user is a member of. + * * shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * shared with a public project. + * * shared with the public. + */ + getFilter: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + /** @description EXPERIMENTAL: Whether share permissions are overridden to enable filters with any share permissions to be returned. Available to users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideSharePermissions?: boolean; + }; + path: { + /** @description The ID of the filter to return. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"]; + }; + }; + /** @description Returned if the filter is not found or the user does not have permission to view it. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Update filter + * @description Updates a filter. Use this operation to update a filter's name, description, JQL, or sharing. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however the user must own the filter. + */ + updateFilter: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + /** @description EXPERIMENTAL: Whether share permissions are overridden to enable the addition of any share permissions to filters. Available to users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideSharePermissions?: boolean; + }; + path: { + /** @description The ID of the filter to update. */ + id: number; + }; + }; + /** @description The filter to update. */ + requestBody: { + content: { + /** + * @example { + * "description": "Lists all open bugs", + * "jql": "type = Bug and resolution is empty", + * "name": "All Open Bugs" + * } + */ + "application/json": components["schemas"]["Filter"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"]; + }; + }; + /** @description Returned if the request object is invalid. For example, the `name` is not unique or the project ID is not specified for a project role share permission. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Delete filter + * @description Delete a filter. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however filters can only be deleted by the creator of the filter or a user with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteFilter: { + parameters: { + path: { + /** @description The ID of the filter to delete. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the filter is not found. */ + 400: { + content: never; + }; + /** @description Returned if the user does not have permission to delete the filter. */ + 401: { + content: never; + }; + }; + }; + /** + * Get columns + * @description Returns the columns configured for a filter. The column configuration is used when the filter's results are viewed in *List View* with the *Columns* set to *Filter*. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, column details are only returned for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + getColumns: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ColumnItem"][]; + }; + }; + /** @description Returned if the user does not have permission to view the filter. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if a column configuration is not set for the filter. */ + 404: { + content: never; + }; + }; + }; + /** + * Set columns + * @description Sets the columns for a filter. Only navigable fields can be set as columns. Use [Get fields](#api-rest-api-3-field-get) to get the list fields in Jira. A navigable field has `navigable` set to `true`. + * + * The parameters for this resource are expressed as HTML form data. For example, in curl: + * + * `curl -X PUT -d columns=summary -d columns=description https://your-domain.atlassian.net/rest/api/3/filter/10000/columns` + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, columns are only set for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + setColumns: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + /** @description The IDs of the fields to set as columns. In the form data, specify each field as `columns=id`, where `id` is the *id* of a field (as seen in the response for [Get fields](#api-rest-api--field-get)). For example, `columns=summary`. */ + requestBody?: { + content: { + "*/*": string[]; + "multipart/form-data": string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * a non-navigable field is set as a column. + * * the user does not have permission to view the filter. + */ + 400: { + content: never; + }; + /** @description Returned if the requesting user is not an owner of the filter. */ + 403: { + content: never; + }; + }; + }; + /** + * Reset columns + * @description Reset the user's column configuration for the filter to the default. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, columns are only reset for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + resetColumns: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the user does not have permission to view the filter. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Add filter as favorite + * @description Add a filter as a favorite for the user. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, the user can only favorite: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + setFavouriteForFilter: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + }; + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"]; + }; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the user does not have permission to favorite the filter. + */ + 400: { + content: never; + }; + }; + }; + /** + * Remove filter as favorite + * @description Removes a filter as a favorite for the user. Note that this operation only removes filters visible to the user from the user's favorites list. For example, if the user favorites a public filter that is subsequently made private (and is therefore no longer visible on their favorites list) they cannot remove it from their favorites list. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + deleteFavouriteForFilter: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + }; + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"]; + }; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the user does not have permission to view the filter. + */ + 400: { + content: never; + }; + }; + }; + /** + * Change filter owner + * @description Changes the owner of the filter. + * + * **[Permissions](#permissions) required:** Permission to access Jira. However, the user must own the filter or have the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + changeFilterOwner: { + parameters: { + path: { + /** @description The ID of the filter to update. */ + id: number; + }; + }; + /** @description The account ID of the new owner of the filter. */ + requestBody: { + content: { + /** + * @example { + * "accountId": "0000-0000-0000-0000" + * } + */ + "application/json": components["schemas"]["ChangeFilterOwner"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned when: + * + * * The new owner of the filter owns a filter with the same name. + * * An attempt is made to change owner of the default filter. + */ + 400: { + content: never; + }; + /** @description Returned if the requesting user is not an owner of the filter or does not have *Administer Jira* global permission. */ + 403: { + content: never; + }; + /** @description Returned if the filter or the new owner of the filter is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get share permissions + * @description Returns the share permissions for a filter. A filter can be shared with groups, projects, all logged-in users, or the public. Sharing with all logged-in users or the public is known as a global share permission. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, share permissions are only returned for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + getSharePermissions: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SharePermission"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the user does not have permission to view the filter. + */ + 404: { + content: never; + }; + }; + }; + /** + * Add share permission + * @description Add a share permissions to a filter. If you add a global share permission (one for all logged-in users or the public) it will overwrite all share permissions for the filter. + * + * Be aware that this operation uses different objects for updating share permissions compared to [Update filter](#api-rest-api-3-filter-id-put). + * + * **[Permissions](#permissions) required:** *Share dashboards and filters* [global permission](https://confluence.atlassian.com/x/x4dKLg) and the user must own the filter. + */ + addSharePermission: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "groupname": "jira-administrators", + * "rights": 1, + * "type": "group" + * } + */ + "application/json": components["schemas"]["SharePermissionInputBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["SharePermission"][]; + }; + }; + /** + * @description Returned if: + * + * * the request object is invalid. For example, it contains an invalid type, the ID does not match the type, or the project or group is not found. + * * the user does not own the filter. + * * the user does not have the required permissions. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the user does not have permission to view the filter. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get share permission + * @description Returns a share permission for a filter. A filter can be shared with groups, projects, all logged-in users, or the public. Sharing with all logged-in users or the public is known as a global share permission. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, a share permission is only returned for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + getSharePermission: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + /** @description The ID of the share permission. */ + permissionId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SharePermission"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the permission is not found. + * * the user does not have permission to view the filter. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete share permission + * @description Deletes a share permission from a filter. + * + * **[Permissions](#permissions) required:** Permission to access Jira and the user must own the filter. + */ + deleteSharePermission: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + /** @description The ID of the share permission. */ + permissionId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the user does not own the filter. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get group + * @deprecated + * @description This operation is deprecated, use [`group/member`](#api-rest-api-3-group-member-get). + * + * Returns all users in a group. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getGroup: { + parameters: { + query?: { + /** + * @description As a group's name can change, use of `groupId` is recommended to identify a group. + * The name of the group. This parameter cannot be used with the `groupId` parameter. + */ + groupname?: string; + /** @description The ID of the group. This parameter cannot be used with the `groupName` parameter. */ + groupId?: string; + /** @description List of fields to expand. */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Group"]; + }; + }; + /** @description Returned if the group name is not specified. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have the Administer Jira global permission. */ + 403: { + content: never; + }; + /** @description Returned if the group is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Create group + * @description Creates a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + createGroup: { + /** @description The name of the group. */ + requestBody: { + content: { + /** + * @example { + * "name": "power-users" + * } + */ + "application/json": components["schemas"]["AddGroupBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Group"]; + }; + }; + /** @description Returned if group name is not specified or the group name is in use. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Remove group + * @description Deletes a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* strategic [group](https://confluence.atlassian.com/x/24xjL)). + */ + removeGroup: { + parameters: { + query?: { + groupname?: string; + /** @description The ID of the group. This parameter cannot be used with the `groupname` parameter. */ + groupId?: string; + /** + * @description As a group's name can change, use of `swapGroupId` is recommended to identify a group. + * The group to transfer restrictions to. Only comments and worklogs are transferred. If restrictions are not transferred, comments and worklogs are inaccessible after the deletion. This parameter cannot be used with the `swapGroupId` parameter. + */ + swapGroup?: string; + /** @description The ID of the group to transfer restrictions to. Only comments and worklogs are transferred. If restrictions are not transferred, comments and worklogs are inaccessible after the deletion. This parameter cannot be used with the `swapGroup` parameter. */ + swapGroupId?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** @description Returned if the group name is not specified. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing from the request. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the group is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Bulk get groups + * @description Returns a [paginated](#pagination) list of groups. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + bulkGetGroups: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The ID of a group. To specify multiple IDs, pass multiple `groupId` parameters. For example, `groupId=5b10a2844c20165700ede21g&groupId=5b10ac8d82e05b22cc7d4ef5`. */ + groupId?: string[]; + /** @description The name of a group. To specify multiple names, pass multiple `groupName` parameters. For example, `groupName=administrators&groupName=jira-software-users`. */ + groupName?: string[]; + /** @description The access level of a group. Valid values: 'site-admin', 'admin', 'user'. */ + accessType?: string; + /** @description The application key of the product user groups to search for. Valid values: 'jira-servicedesk', 'jira-software', 'jira-product-discovery', 'jira-core'. */ + applicationKey?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanGroupDetails"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the group with the given access level can't be retrieved. */ + 500: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get users from group + * @description Returns a [paginated](#pagination) list of all users in a group. + * + * Note that users are ordered by username, however the username is not returned in the results due to privacy reasons. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getUsersFromGroup: { + parameters: { + query?: { + /** + * @description As a group's name can change, use of `groupId` is recommended to identify a group. + * The name of the group. This parameter cannot be used with the `groupId` parameter. + */ + groupname?: string; + /** @description The ID of the group. This parameter cannot be used with the `groupName` parameter. */ + groupId?: string; + /** @description Include inactive users. */ + includeInactiveUsers?: boolean; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanUserDetails"]; + }; + }; + /** @description Returned if the group name is not specified. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have the Administer Jira global permission. */ + 403: { + content: never; + }; + /** @description Returned if the group is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Add user to group + * @description Adds a user to a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + addUserToGroup: { + parameters: { + query?: { + /** + * @description As a group's name can change, use of `groupId` is recommended to identify a group. + * The name of the group. This parameter cannot be used with the `groupId` parameter. + */ + groupname?: string; + /** @description The ID of the group. This parameter cannot be used with the `groupName` parameter. */ + groupId?: string; + }; + }; + /** @description The user to add to the group. */ + requestBody: { + content: { + /** + * @example { + * "accountId": "5b10ac8d82e05b22cc7d4ef5" + * } + */ + "application/json": components["schemas"]["UpdateUserToGroupBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Group"]; + }; + }; + /** + * @description Returned if: + * + * * `groupname` is not provided. + * * `accountId` is missing. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing from the request. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the group or user are not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Remove user from group + * @description Removes a user from a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + removeUserFromGroup: { + parameters: { + query: { + /** + * @description As a group's name can change, use of `groupId` is recommended to identify a group. + * The name of the group. This parameter cannot be used with the `groupId` parameter. + */ + groupname?: string; + /** @description The ID of the group. This parameter cannot be used with the `groupName` parameter. */ + groupId?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** + * @description Returned if: + * + * * `groupName` is missing. + * * `accountId` is missing. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing from the request. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the group or user are not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Find groups + * @description Returns a list of groups whose names contain a query string. A list of group names can be provided to exclude groups from the results. + * + * The primary use case for this resource is to populate a group picker suggestions list. To this end, the returned object includes the `html` field where the matched query term is highlighted in the group name with the HTML strong tag. Also, the groups list is wrapped in a response object that contains a header for use in the picker, specifically *Showing X of Y matching groups*. + * + * The list returns with the groups sorted. If no groups match the list criteria, an empty list is returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg). Anonymous calls and calls by users without the required permission return an empty list. + * + * *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Without this permission, calls where query is not an exact match to an existing group will return an empty list. + */ + findGroups: { + parameters: { + query?: { + /** @description This parameter is deprecated, setting it does not affect the results. To find groups containing a particular user, use [Get user groups](#api-rest-api-3-user-groups-get). */ + accountId?: string; + /** @description The string to find in group names. */ + query?: string; + /** + * @description As a group's name can change, use of `excludeGroupIds` is recommended to identify a group. + * A group to exclude from the result. To exclude multiple groups, provide an ampersand-separated list. For example, `exclude=group1&exclude=group2`. This parameter cannot be used with the `excludeGroupIds` parameter. + */ + exclude?: string[]; + /** @description A group ID to exclude from the result. To exclude multiple groups, provide an ampersand-separated list. For example, `excludeId=group1-id&excludeId=group2-id`. This parameter cannot be used with the `excludeGroups` parameter. */ + excludeId?: string[]; + /** @description The maximum number of groups to return. The maximum number of groups that can be returned is limited by the system property `jira.ajax.autocomplete.limit`. */ + maxResults?: number; + /** @description Whether the search for groups should be case insensitive. */ + caseInsensitive?: boolean; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + userName?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["FoundGroups"]; + }; + }; + }; + }; + /** + * Find users and groups + * @description Returns a list of users and groups matching a string. The string is used: + * + * * for users, to find a case-insensitive match with display name and e-mail address. Note that if a user has hidden their email address in their user profile, partial matches of the email address will not find the user. An exact match is required. + * * for groups, to find a case-sensitive match with group name. + * + * For example, if the string *tin* is used, records with the display name *Tina*, email address *sarah@tinplatetraining.com*, and the group *accounting* would be returned. + * + * Optionally, the search can be refined to: + * + * * the projects and issue types associated with a custom field, such as a user picker. The search can then be further refined to return only users and groups that have permission to view specific: + * + * * projects. + * * issue types. + * + * If multiple projects or issue types are specified, they must be a subset of those enabled for the custom field or no results are returned. For example, if a field is enabled for projects A, B, and C then the search could be limited to projects B and C. However, if the search is limited to projects B and D, nothing is returned. + * * not return Connect app users and groups. + * * return groups that have a case-insensitive match with the query. + * + * The primary use case for this resource is to populate a picker field suggestion list with users or groups. To this end, the returned object includes an `html` field for each list. This field highlights the matched query term in the item name with the HTML strong tag. Also, each list is wrapped in a response object that contains a header for use in a picker, specifically *Showing X of Y matching groups*. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/yodKLg). + */ + findUsersAndGroups: { + parameters: { + query: { + /** @description The search string. */ + query: string; + /** @description The maximum number of items to return in each list. */ + maxResults?: number; + /** @description Whether the user avatar should be returned. If an invalid value is provided, the default value is used. */ + showAvatar?: boolean; + /** @description The custom field ID of the field this request is for. */ + fieldId?: string; + /** @description The ID of a project that returned users and groups must have permission to view. To include multiple projects, provide an ampersand-separated list. For example, `projectId=10000&projectId=10001`. This parameter is only used when `fieldId` is present. */ + projectId?: string[]; + /** @description The ID of an issue type that returned users and groups must have permission to view. To include multiple issue types, provide an ampersand-separated list. For example, `issueTypeId=10000&issueTypeId=10001`. Special values, such as `-1` (all standard issue types) and `-2` (all subtask issue types), are supported. This parameter is only used when `fieldId` is present. */ + issueTypeId?: string[]; + /** @description The size of the avatar to return. If an invalid value is provided, the default value is used. */ + avatarSize?: "xsmall" | "xsmall@2x" | "xsmall@3x" | "small" | "small@2x" | "small@3x" | "medium" | "medium@2x" | "medium@3x" | "large" | "large@2x" | "large@3x" | "xlarge" | "xlarge@2x" | "xlarge@3x" | "xxlarge" | "xxlarge@2x" | "xxlarge@3x" | "xxxlarge" | "xxxlarge@2x" | "xxxlarge@3x"; + /** @description Whether the search for groups should be case insensitive. */ + caseInsensitive?: boolean; + /** @description Whether Connect app users and groups should be excluded from the search results. If an invalid value is provided, the default value is used. */ + excludeConnectAddons?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["FoundUsersAndGroups"]; + }; + }; + /** @description Returned if the query parameter is not provided. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Get license + * @description Returns licensing information about the Jira instance. + * + * **[Permissions](#permissions) required:** None. + */ + getLicense: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["License"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create issue + * @description Creates an issue or, where the option to create subtasks is enabled in Jira, a subtask. A transition may be applied, to move the issue or subtask to a workflow step other than the default start step, and issue properties set. + * + * The content of the issue or subtask is defined using `update` and `fields`. The fields that can be set in the issue or subtask are determined using the [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get). These are the same fields that appear on the issue's create screen. Note that the `description`, `environment`, and any `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`) accept a string and don't handle Atlassian Document Format content. + * + * Creating a subtask differs from creating an issue as follows: + * + * * `issueType` must be set to a subtask issue type (use [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get) to find subtask issue types). + * * `parent` must contain the ID or key of the parent issue. + * + * In a next-gen project any issue may be made a child providing that the parent and child are members of the same project. + * + * **[Permissions](#permissions) required:** *Browse projects* and *Create issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in which the issue or subtask is created. + */ + createIssue: { + parameters: { + query?: { + /** @description Whether the project in which the issue is created is added to the user's **Recently viewed** project list, as shown under **Projects** in Jira. When provided, the issue type and request type are added to the user's history for a project. These values are then used to provide defaults on the issue create screen. */ + updateHistory?: boolean; + }; + }; + requestBody: { + content: { + /** + * @example { + * "fields": { + * "assignee": { + * "id": "5b109f2e9729b51b54dc274d" + * }, + * "components": [ + * { + * "id": "10000" + * } + * ], + * "customfield_10000": "09/Jun/19", + * "customfield_20000": "06/Jul/19 3:25 PM", + * "customfield_30000": [ + * "10000", + * "10002" + * ], + * "customfield_40000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Occurs on all orders", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_50000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Could impact day-to-day work.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_60000": "jira-software-users", + * "customfield_70000": [ + * "jira-administrators", + * "jira-software-users" + * ], + * "customfield_80000": { + * "value": "red" + * }, + * "description": { + * "content": [ + * { + * "content": [ + * { + * "text": "Order entry fails when selecting supplier.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "duedate": "2019-05-11", + * "environment": { + * "content": [ + * { + * "content": [ + * { + * "text": "UAT", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "fixVersions": [ + * { + * "id": "10001" + * } + * ], + * "issuetype": { + * "id": "10000" + * }, + * "labels": [ + * "bugfix", + * "blitz_test" + * ], + * "parent": { + * "key": "PROJ-123" + * }, + * "priority": { + * "id": "20000" + * }, + * "project": { + * "id": "10000" + * }, + * "reporter": { + * "id": "5b10a2844c20165700ede21g" + * }, + * "security": { + * "id": "10000" + * }, + * "summary": "Main order flow broken", + * "timetracking": { + * "originalEstimate": "10", + * "remainingEstimate": "5" + * }, + * "versions": [ + * { + * "id": "10000" + * } + * ] + * }, + * "update": {} + * } + */ + "application/json": components["schemas"]["IssueUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["CreatedIssue"]; + }; + }; + /** + * @description Returned if the request: + * + * * is missing required fields. + * * contains invalid field values. + * * contains fields that cannot be set for the issue type. + * * is by a user who does not have the necessary permission. + * * is to create a subtype in a project different that of the parent issue. + * * is for a subtask when the option to create subtasks is disabled. + * * is invalid for any other reason. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if a configuration problem prevents the creation of the issue. (refer to the [changelog](https://developer.atlassian.com/changelog/#CHANGE-1364) *for more details.* */ + 422: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Archive issue(s) by issue ID/key + * @description Enables admins to archive up to 1000 issues in a single request using issue ID/key, returning details of the issue(s) archived in the process and the errors encountered, if any. + * + * **Note that:** + * + * * you can't archive subtasks directly, only through their parent issues + * * you can only archive issues from software, service management, and business projects + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + */ + archiveIssues: { + /** @description Contains a list of issue keys or IDs to be archived. */ + requestBody: { + content: { + /** + * @example { + * "issueIdsOrKeys": [ + * "PR-1", + * "1001", + * "PROJECT-2" + * ] + * } + */ + "application/json": components["schemas"]["IssueArchivalSyncRequest"]; + }; + }; + responses: { + /** @description Returned if there is at least one valid issue to archive in the request. The return message will include the count of archived issues and subtasks, as well as error details for issues which failed to get archived. */ + 200: { + content: { + "application/json": components["schemas"]["IssueArchivalSyncResponse"]; + }; + }; + /** + * @description Returned if none of the issues in the request can be archived. Possible reasons: + * + * * the issues weren't found + * * the issues are subtasks + * * the issues belong to unlicensed projects + * * the issues belong to archived projects + */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were archived because the provided authentication credentials are either missing or invalid. */ + 401: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were archived because the user lacks the required Jira admin or site admin permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if one or more issues were successfully archived, but the operation was incomplete because the number of issue IDs or keys provided exceeds 1000. */ + 412: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Archive issue(s) by JQL + * @description Enables admins to archive up to 100,000 issues in a single request using JQL, returning the URL to check the status of the submitted request. + * + * You can use the [get task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-get) and [cancel task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-cancel-post) APIs to manage the request. + * + * **Note that:** + * + * * you can't archive subtasks directly, only through their parent issues + * * you can only archive issues from software, service management, and business projects + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + * + * **Rate limiting:** Only a single request per jira instance can be active at any given time. + */ + archiveIssuesAsync: { + /** @description A JQL query specifying the issues to archive. Note that subtasks can only be archived through their parent issues. */ + requestBody: { + content: { + /** + * @example { + * "jql": "project = FOO AND updated < -2y" + * } + */ + "application/json": components["schemas"]["ArchiveIssueAsyncRequest"]; + }; + }; + responses: { + /** @description Returns the URL to check the status of the submitted request. */ + 202: { + content: { + "application/json": string; + }; + }; + /** @description Returned if no issues were archived due to a bad request, for example an invalid JQL query. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were archived because the provided authentication credentials are either missing or invalid. */ + 401: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were archived because the user lacks the required Jira admin or site admin permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if a request to archive issue(s) is already running. */ + 412: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Bulk create issue + * @description Creates upto **50** issues and, where the option to create subtasks is enabled in Jira, subtasks. Transitions may be applied, to move the issues or subtasks to a workflow step other than the default start step, and issue properties set. + * + * The content of each issue or subtask is defined using `update` and `fields`. The fields that can be set in the issue or subtask are determined using the [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get). These are the same fields that appear on the issues' create screens. Note that the `description`, `environment`, and any `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`) accept a string and don't handle Atlassian Document Format content. + * + * Creating a subtask differs from creating an issue as follows: + * + * * `issueType` must be set to a subtask issue type (use [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get) to find subtask issue types). + * * `parent` the must contain the ID or key of the parent issue. + * + * **[Permissions](#permissions) required:** *Browse projects* and *Create issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in which each issue or subtask is created. + */ + createIssues: { + requestBody: { + content: { + /** + * @example { + * "issueUpdates": [ + * { + * "fields": { + * "assignee": { + * "id": "5b109f2e9729b51b54dc274d" + * }, + * "components": [ + * { + * "id": "10000" + * } + * ], + * "customfield_10000": "09/Jun/19", + * "customfield_20000": "06/Jul/19 3:25 PM", + * "customfield_30000": [ + * "10000", + * "10002" + * ], + * "customfield_40000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Occurs on all orders", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_50000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Could impact day-to-day work.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_60000": "jira-software-users", + * "customfield_70000": [ + * "jira-administrators", + * "jira-software-users" + * ], + * "customfield_80000": { + * "value": "red" + * }, + * "description": { + * "content": [ + * { + * "content": [ + * { + * "text": "Order entry fails when selecting supplier.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "duedate": "2011-03-11", + * "environment": { + * "content": [ + * { + * "content": [ + * { + * "text": "UAT", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "fixVersions": [ + * { + * "id": "10001" + * } + * ], + * "issuetype": { + * "id": "10000" + * }, + * "labels": [ + * "bugfix", + * "blitz_test" + * ], + * "priority": { + * "id": "20000" + * }, + * "project": { + * "id": "10000" + * }, + * "reporter": { + * "id": "5b10a2844c20165700ede21g" + * }, + * "security": { + * "id": "10000" + * }, + * "summary": "Main order flow broken", + * "timetracking": { + * "originalEstimate": "10", + * "remainingEstimate": "5" + * }, + * "versions": [ + * { + * "id": "10000" + * } + * ] + * }, + * "update": { + * "worklog": [ + * { + * "add": { + * "started": "2019-07-05T11:05:00.000+0000", + * "timeSpent": "60m" + * } + * } + * ] + * } + * }, + * { + * "fields": { + * "assignee": { + * "id": "5b109f2e9729b51b54dc274d" + * }, + * "components": [ + * { + * "id": "10000" + * } + * ], + * "customfield_10000": "09/Jun/19", + * "customfield_20000": "06/Jul/19 3:25 PM", + * "customfield_30000": [ + * "10000", + * "10002" + * ], + * "customfield_40000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Occurs on all orders", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_50000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Could impact day-to-day work.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_60000": "jira-software-users", + * "customfield_70000": [ + * "jira-administrators", + * "jira-software-users" + * ], + * "customfield_80000": { + * "value": "red" + * }, + * "description": { + * "content": [ + * { + * "content": [ + * { + * "text": "Order remains pending after approved.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "duedate": "2019-04-16", + * "environment": { + * "content": [ + * { + * "content": [ + * { + * "text": "UAT", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "fixVersions": [ + * { + * "id": "10001" + * } + * ], + * "issuetype": { + * "id": "10000" + * }, + * "labels": [ + * "new_release" + * ], + * "priority": { + * "id": "20000" + * }, + * "project": { + * "id": "1000" + * }, + * "reporter": { + * "id": "5b10a2844c20165700ede21g" + * }, + * "security": { + * "id": "10000" + * }, + * "summary": "Order stuck in pending", + * "timetracking": { + * "originalEstimate": "15", + * "remainingEstimate": "5" + * }, + * "versions": [ + * { + * "id": "10000" + * } + * ] + * }, + * "update": {} + * } + * ] + * } + */ + "application/json": components["schemas"]["IssuesUpdateBean"]; + }; + }; + responses: { + /** + * @description Returned if any of the issue or subtask creation requests were successful. A request may be unsuccessful when it: + * + * * is missing required fields. + * * contains invalid field values. + * * contains fields that cannot be set for the issue type. + * * is by a user who does not have the necessary permission. + * * is to create a subtype in a project different that of the parent issue. + * * is for a subtask when the option to create subtasks is disabled. + * * is invalid for any other reason. + */ + 201: { + content: { + "application/json": components["schemas"]["CreatedIssues"]; + }; + }; + /** + * @description Returned if all requests are invalid. Requests may be unsuccessful when they: + * + * * are missing required fields. + * * contain invalid field values. + * * contain fields that cannot be set for the issue type. + * * are by a user who does not have the necessary permission. + * * are to create a subtype in a project different that of the parent issue. + * * is for a subtask when the option to create subtasks is disabled. + * * are invalid for any other reason. + */ + 400: { + content: { + "application/json": components["schemas"]["CreatedIssues"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get create issue metadata + * @deprecated + * @description Returns details of projects, issue types within projects, and, when requested, the create screen fields for each issue type for the user. Use the information to populate the requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). + * + * The request can be restricted to specific projects or issue types using the query parameters. The response will contain information for the valid projects, issue types, or project and issue type combinations requested. Note that invalid project, issue type, or project and issue type combinations do not generate errors. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects. + */ + getCreateIssueMeta: { + parameters: { + query?: { + /** @description List of project IDs. This parameter accepts a comma-separated list. Multiple project IDs can also be provided using an ampersand-separated list. For example, `projectIds=10000,10001&projectIds=10020,10021`. This parameter may be provided with `projectKeys`. */ + projectIds?: string[]; + /** @description List of project keys. This parameter accepts a comma-separated list. Multiple project keys can also be provided using an ampersand-separated list. For example, `projectKeys=proj1,proj2&projectKeys=proj3`. This parameter may be provided with `projectIds`. */ + projectKeys?: string[]; + /** @description List of issue type IDs. This parameter accepts a comma-separated list. Multiple issue type IDs can also be provided using an ampersand-separated list. For example, `issuetypeIds=10000,10001&issuetypeIds=10020,10021`. This parameter may be provided with `issuetypeNames`. */ + issuetypeIds?: string[]; + /** @description List of issue type names. This parameter accepts a comma-separated list. Multiple issue type names can also be provided using an ampersand-separated list. For example, `issuetypeNames=name1,name2&issuetypeNames=name3`. This parameter may be provided with `issuetypeIds`. */ + issuetypeNames?: string[]; + /** @description Use [expand](#expansion) to include additional information about issue metadata in the response. This parameter accepts `projects.issuetypes.fields`, which returns information about the fields in the issue creation screen for each issue type. Fields hidden from the screen are not returned. Use the information to populate the `fields` and `update` fields in [Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueCreateMetadata"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get create metadata issue types for a project + * @description Returns a page of issue type metadata for a specified project. Use the information to populate the requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects. + */ + getCreateIssueMetaIssueTypes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID or key of the project. */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageOfCreateMetaIssueTypes"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get create field metadata for a project and issue type id + * @description Returns a page of field metadata for a specified project and issuetype id. Use the information to populate the requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects. + */ + getCreateIssueMetaIssueTypeId: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID or key of the project. */ + projectIdOrKey: string; + /** @description The issuetype ID. */ + issueTypeId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageOfCreateMetaIssueTypeWithField"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get issue picker suggestions + * @description Returns lists of issues matching a query string. Use this resource to provide auto-completion suggestions when the user is looking for an issue using a word or string. + * + * This operation returns two lists: + * + * * `History Search` which includes issues from the user's history of created, edited, or viewed issues that contain the string in the `query` parameter. + * * `Current Search` which includes issues that match the JQL expression in `currentJQL` and contain the string in the `query` parameter. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getIssuePickerResource: { + parameters: { + query?: { + /** @description A string to match against text fields in the issue such as title, description, or comments. */ + query?: string; + /** @description A JQL query defining a list of issues to search for the query term. Note that `username` and `userkey` cannot be used as search terms for this parameter, due to privacy reasons. Use `accountId` instead. */ + currentJQL?: string; + /** @description The key of an issue to exclude from search results. For example, the issue the user is viewing when they perform this query. */ + currentIssueKey?: string; + /** @description The ID of a project that suggested issues must belong to. */ + currentProjectId?: string; + /** @description Indicate whether to include subtasks in the suggestions list. */ + showSubTasks?: boolean; + /** @description When `currentIssueKey` is a subtask, whether to include the parent issue in the suggestions if it matches the query. */ + showSubTaskParent?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssuePickerSuggestions"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Bulk set issues properties by list + * @description Sets or updates a list of entity property values on issues. A list of up to 10 entity properties can be specified along with up to 10,000 issues on which to set or update that list of entity properties. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON. The maximum length of single issue property value is 32768 characters. This operation can be accessed anonymously. + * + * This operation is: + * + * * transactional, either all properties are updated in all eligible issues or, when errors occur, no properties are updated. + * * [asynchronous](#async). 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](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + bulkSetIssuesPropertiesList: { + /** @description Issue properties to be set or updated with values. */ + requestBody: { + content: { + "application/json": components["schemas"]["IssueEntityProperties"]; + }; + }; + responses: { + /** @description Returned if the operation is successful. */ + 303: { + content: never; + }; + /** @description Return if the request is invalid or the user does not have the necessary permission. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Bulk set issue properties by issue + * @description Sets or updates entity property values on issues. Up to 10 entity properties can be specified for each issue and up to 100 issues included in the request. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON. + * + * This operation is: + * + * * [asynchronous](#async). 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. + * * non-transactional. Updating some entities may fail. Such information will available in the task result. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + bulkSetIssuePropertiesByIssue: { + /** @description Details of the issue properties to be set or updated. Note that if an issue is not found, it is ignored. */ + requestBody: { + content: { + /** + * @example { + * "issues": [ + * { + * "issueID": 1000, + * "properties": { + * "myProperty": { + * "owner": "admin", + * "weight": 100 + * } + * } + * }, + * { + * "issueID": 1001, + * "properties": { + * "myOtherProperty": { + * "cost": 150, + * "transportation": "car" + * } + * } + * } + * ] + * } + */ + "application/json": components["schemas"]["MultiIssueEntityProperties"]; + }; + }; + responses: { + /** @description Returned if the operation is successful. */ + 303: { + content: never; + }; + /** @description Return if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Return if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Bulk set issue property + * @description Sets a property value on multiple issues. + * + * The value set can be a constant or determined by a [Jira expression](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/). Expressions must be computable with constant complexity when applied to a set of issues. Expressions must also comply with the [restrictions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#restrictions) that apply to all Jira expressions. + * + * The issues to be updated can be specified by a filter. + * + * The filter identifies issues eligible for update using these criteria: + * + * * `entityIds` Only issues from this list are eligible. + * * `currentValue` Only issues with the property set to this value are eligible. + * * `hasProperty`: + * + * * If *true*, only issues with the property are eligible. + * * If *false*, only issues without the property are eligible. + * + * If more than one criteria is specified, they are joined with the logical *AND*: only issues that satisfy all criteria are eligible. + * + * If an invalid combination of criteria is provided, an error is returned. For example, specifying a `currentValue` and `hasProperty` as *false* would not match any issues (because without the property the property cannot have a value). + * + * The filter is optional. Without the filter all the issues visible to the user and where the user has the EDIT\_ISSUES permission for the issue are considered eligible. + * + * This operation is: + * + * * transactional, either all eligible issues are updated or, when errors occur, none are updated. + * * [asynchronous](#async). 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](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing issues. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Edit issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue. + */ + bulkSetIssueProperty: { + parameters: { + path: { + /** @description The key of the property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "filter": { + * "currentValue": { + * "owner": "admin", + * "weight": 50 + * }, + * "entityIds": [ + * 10100, + * 100010 + * ], + * "hasProperty": true + * }, + * "value": { + * "owner": "admin", + * "weight": 100 + * } + * } + */ + "application/json": components["schemas"]["BulkIssuePropertyUpdateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Bulk delete issue property + * @description Deletes a property value from multiple issues. The issues to be updated can be specified by filter criteria. + * + * The criteria the filter used to identify eligible issues are: + * + * * `entityIds` Only issues from this list are eligible. + * * `currentValue` Only issues with the property set to this value are eligible. + * + * If both criteria is specified, they are joined with the logical *AND*: only issues that satisfy both criteria are considered eligible. + * + * If no filter criteria are specified, all the issues visible to the user and where the user has the EDIT\_ISSUES permission for the issue are considered eligible. + * + * This operation is: + * + * * transactional, either the property is deleted from all eligible issues or, when errors occur, no properties are deleted. + * * [asynchronous](#async). 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](#permissions) required:** + * + * * *Browse projects* [ project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing issues. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Edit issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue. + */ + bulkDeleteIssueProperty: { + parameters: { + path: { + /** @description The key of the property. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "currentValue": "deprecated value", + * "entityIds": [ + * 10100, + * 100010 + * ] + * } + */ + "application/json": components["schemas"]["IssueFilterForBulkPropertyDelete"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Unarchive issue(s) by issue keys/ID + * @description Enables admins to unarchive up to 1000 issues in a single request using issue ID/key, returning details of the issue(s) unarchived in the process and the errors encountered, if any. + * + * **Note that:** + * + * * you can't unarchive subtasks directly, only through their parent issues + * * you can only unarchive issues from software, service management, and business projects + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + */ + unarchiveIssues: { + /** @description Contains a list of issue keys or IDs to be unarchived. */ + requestBody: { + content: { + /** + * @example { + * "issueIdsOrKeys": [ + * "PR-1", + * "1001", + * "PROJECT-2" + * ] + * } + */ + "application/json": components["schemas"]["IssueArchivalSyncRequest"]; + }; + }; + responses: { + /** @description Returned if there is at least one valid issue to unarchive in the request. It will return the count of unarchived issues, which also includes the count of the subtasks unarchived, and it will show the detailed errors for those issues which are not unarchived. */ + 200: { + content: { + "application/json": components["schemas"]["IssueArchivalSyncResponse"]; + }; + }; + /** + * @description Returned if none of the issues in the request are eligible to be unarchived. Possible reasons: + * + * * the issues weren't found + * * the issues are subtasks + * * the issues belong to archived projects + */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were unarchived because the provided authentication credentials are either missing or invalid. */ + 401: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were unarchived because the user lacks the required Jira admin or site admin permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if one or more issues were successfully unarchived, but the operation was incomplete because the number of issue IDs or keys provided exceeds 1000. */ + 412: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get is watching issue bulk + * @description Returns, for the user, details of the watched status of issues from a list. If an issue ID is invalid, the returned watched status is `false`. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getIsWatchingIssueBulk: { + /** @description A list of issue IDs. */ + requestBody: { + content: { + /** + * @example { + * "issueIds": [ + * "10001", + * "10002", + * "10005" + * ] + * } + */ + "application/json": components["schemas"]["IssueList"]; + }; + }; + responses: { + /** @description Returned if the request is successful */ + 200: { + content: { + "application/json": components["schemas"]["BulkIssueIsWatching"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get issue + * @description Returns the details for an issue. + * + * The issue is identified by its ID or key, however, if the identifier doesn't match an issue, a case-insensitive search and check for moved issues is performed. If a matching issue is found its details are returned, a 302 or other redirect is **not** returned. The issue key returned in the response is the key of the issue found. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getIssue: { + parameters: { + query?: { + /** + * @description A list of fields to return for the issue. This parameter accepts a comma-separated list. Use it to retrieve a subset of fields. Allowed values: + * + * * `*all` Returns all fields. + * * `*navigable` Returns navigable fields. + * * Any issue field, prefixed with a minus to exclude. + * + * Examples: + * + * * `summary,comment` Returns only the summary and comments fields. + * * `-description` Returns all (default) fields except description. + * * `*navigable,-comment` Returns all navigable fields except comment. + * + * This parameter may be specified multiple times. For example, `fields=field1,field2& fields=field3`. + * + * Note: All fields are returned by default. This differs from [Search for issues using JQL (GET)](#api-rest-api-3-search-get) and [Search for issues using JQL (POST)](#api-rest-api-3-search-post) where the default is all navigable fields. + */ + fields?: string[]; + /** @description Whether fields in `fields` are referenced by keys rather than IDs. This parameter is useful where fields have been added by a connect app and a field's key may differ from its ID. */ + fieldsByKeys?: boolean; + /** + * @description Use [expand](#expansion) to include additional information about the issues in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `renderedFields` Returns field values rendered in HTML format. + * * `names` Returns the display name of each field. + * * `schema` Returns the schema describing a field type. + * * `transitions` Returns all possible transitions for the issue. + * * `editmeta` Returns information about how each field can be edited. + * * `changelog` Returns a list of recent updates to an issue, sorted by date, starting from the most recent. + * * `versionedRepresentations` Returns a JSON array for each version of a field's value, with the highest number representing the most recent version. Note: When included in the request, the `fields` parameter is ignored. + */ + expand?: string; + /** + * @description A list of issue properties to return for the issue. This parameter accepts a comma-separated list. Allowed values: + * + * * `*all` Returns all issue properties. + * * Any issue property key, prefixed with a minus to exclude. + * + * Examples: + * + * * `*all` Returns all properties. + * * `*all,-prop1` Returns all properties except `prop1`. + * * `prop1,prop2` Returns `prop1` and `prop2` properties. + * + * This parameter may be specified multiple times. For example, `properties=prop1,prop2& properties=prop3`. + */ + properties?: string[]; + /** @description Whether the project in which the issue is created is added to the user's **Recently viewed** project list, as shown under **Projects** in Jira. This also populates the [JQL issues search](#api-rest-api-3-search-get) `lastViewed` field. */ + updateHistory?: boolean; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueBean"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Edit issue + * @description Edits an issue. A transition may be applied and issue properties updated as part of the edit. + * + * The edits to the issue's fields are defined using `update` and `fields`. The fields that can be edited are determined using [ Get edit issue metadata](#api-rest-api-3-issue-issueIdOrKey-editmeta-get). + * + * The parent field may be set by key or ID. For standard issue types, the parent may be removed by setting `update.parent.set.none` to *true*. Note that the `description`, `environment`, and any `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`) accept a string and don't handle Atlassian Document Format content. + * + * Connect apps having an app user with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), can override the screen security configuration using `overrideScreenSecurity` and `overrideEditableFlag`. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [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. + */ + editIssue: { + parameters: { + query?: { + /** @description Whether a notification email about the issue update is sent to all watchers. To disable the notification, administer Jira or administer project permissions are required. If the user doesn't have the necessary permission the request is ignored. */ + notifyUsers?: boolean; + /** @description Whether screen security is overridden to enable hidden fields to be edited. Available to Connect app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideScreenSecurity?: boolean; + /** @description Whether screen security is overridden to enable uneditable fields to be edited. Available to Connect app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideEditableFlag?: boolean; + /** @description Whether the response should contain the issue with fields edited in this request. The returned issue will have the same format as in the [Get issue API](#api-rest-api-3-issue-issueidorkey-get). */ + returnIssue?: boolean; + /** @description The Get issue API expand parameter to use in the response if the `returnIssue` parameter is `true`. */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "fields": { + * "customfield_10000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Investigation underway", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_10010": 1, + * "summary": "Completed orders still displaying in pending" + * }, + * "historyMetadata": { + * "activityDescription": "Complete order processing", + * "actor": { + * "avatarUrl": "http://mysystem/avatar/tony.jpg", + * "displayName": "Tony", + * "id": "tony", + * "type": "mysystem-user", + * "url": "http://mysystem/users/tony" + * }, + * "cause": { + * "id": "myevent", + * "type": "mysystem-event" + * }, + * "description": "From the order testing process", + * "extraData": { + * "Iteration": "10a", + * "Step": "4" + * }, + * "generator": { + * "id": "mysystem-1", + * "type": "mysystem-application" + * }, + * "type": "myplugin:type" + * }, + * "properties": [ + * { + * "key": "key1", + * "value": "Order number 10784" + * }, + * { + * "key": "key2", + * "value": "Order number 10923" + * } + * ], + * "update": { + * "components": [ + * { + * "set": "" + * } + * ], + * "labels": [ + * { + * "add": "triaged" + * }, + * { + * "remove": "blocker" + * } + * ], + * "summary": [ + * { + * "set": "Bug in business logic" + * } + * ], + * "timetracking": [ + * { + * "edit": { + * "originalEstimate": "1w 1d", + * "remainingEstimate": "4d" + * } + * } + * ] + * } + * } + */ + "application/json": components["schemas"]["IssueUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful and the `returnIssue` parameter is `true` */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * the request body is missing. + * * the user does not have the necessary permission to edit one or more fields. + * * the request includes one or more fields that are not found or are not associated with the issue's edit screen. + * * the request includes an invalid transition. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user uses `overrideScreenSecurity` or `overrideEditableFlag` but doesn't have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + /** @description Returned if the issue could not be updated due to a conflicting update. (refer to the [changelog](https://developer.atlassian.com/changelog/#CHANGE-1364) *for more details.* */ + 409: { + content: never; + }; + /** @description Returned if a configuration problem prevents the issue being updated. (refer to the [changelog](https://developer.atlassian.com/changelog/#CHANGE-1364) *for more details.* */ + 422: { + content: never; + }; + }; + }; + /** + * Delete issue + * @description Deletes an issue. + * + * An issue cannot be deleted if it has one or more subtasks. To delete an issue with subtasks, set `deleteSubtasks`. This causes the issue's subtasks to be deleted with the issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Delete issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + deleteIssue: { + parameters: { + query?: { + /** @description Whether the issue's subtasks are deleted when the issue is deleted. */ + deleteSubtasks?: "true" | "false"; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the issue has subtasks and `deleteSubtasks` is not set to *true*. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to delete the issue. */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Assign issue + * @description Assigns an issue to a user. Use this operation when the calling user does not have the *Edit Issues* permission but has the *Assign issue* permission for the project that the issue is in. + * + * If `name` or `accountId` is set to: + * + * * `"-1"`, the issue is assigned to the default assignee for the project. + * * `null`, the issue is set to unassigned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse Projects* and *Assign Issues* [ 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. + */ + assignIssue: { + parameters: { + path: { + /** @description The ID or key of the issue to be assigned. */ + issueIdOrKey: string; + }; + }; + /** @description The request object with the user that the issue is assigned to. */ + requestBody: { + content: { + /** + * @example { + * "accountId": "5b10ac8d82e05b22cc7d4ef5" + * } + */ + "application/json": components["schemas"]["User"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * the user is not found. + * * `name`, `key`, or `accountId` is missing. + * * more than one of `name`, `key`, and `accountId` are provided. + */ + 400: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Add attachment + * @description Adds one or more attachments to an issue. Attachments are posted as multipart/form-data ([RFC 1867](https://www.ietf.org/rfc/rfc1867.txt)). + * + * Note that: + * + * * The request must have a `X-Atlassian-Token: no-check` header, if not it is blocked. See [Special headers](#special-request-headers) for more information. + * * The name of the multipart/form-data parameter that contains the attachments must be `file`. + * + * The following examples upload a file called *myfile.txt* to the issue *TEST-123*: + * + * #### curl #### + * + * curl --location --request POST 'https://your-domain.atlassian.net/rest/api/3/issue/TEST-123/attachments' + * -u 'email@example.com:' + * -H 'X-Atlassian-Token: no-check' + * --form 'file=@"myfile.txt"' + * + * #### Node.js #### + * + * // This code sample uses the 'node-fetch' and 'form-data' libraries: + * // https://www.npmjs.com/package/node-fetch + * // https://www.npmjs.com/package/form-data + * const fetch = require('node-fetch'); + * const FormData = require('form-data'); + * const fs = require('fs'); + * + * const filePath = 'myfile.txt'; + * const form = new FormData(); + * const stats = fs.statSync(filePath); + * const fileSizeInBytes = stats.size; + * const fileStream = fs.createReadStream(filePath); + * + * form.append('file', fileStream, {knownLength: fileSizeInBytes}); + * + * fetch('https://your-domain.atlassian.net/rest/api/3/issue/TEST-123/attachments', { + * method: 'POST', + * body: form, + * headers: { + * 'Authorization': `Basic ${Buffer.from( + * 'email@example.com:' + * ).toString('base64')}`, + * 'Accept': 'application/json', + * 'X-Atlassian-Token': 'no-check' + * } + * }) + * .then(response => { + * console.log( + * `Response: ${response.status} ${response.statusText}` + * ); + * return response.text(); + * }) + * .then(text => console.log(text)) + * .catch(err => console.error(err)); + * + * #### Java #### + * + * // This code sample uses the 'Unirest' library: + * // http://unirest.io/java.html + * HttpResponse response = Unirest.post("https://your-domain.atlassian.net/rest/api/2/issue/{issueIdOrKey}/attachments") + * .basicAuth("email@example.com", "") + * .header("Accept", "application/json") + * .header("X-Atlassian-Token", "no-check") + * .field("file", new File("myfile.txt")) + * .asJson(); + * + * System.out.println(response.getBody()); + * + * #### Python #### + * + * # This code sample uses the 'requests' library: + * # http://docs.python-requests.org + * import requests + * from requests.auth import HTTPBasicAuth + * import json + * + * url = "https://your-domain.atlassian.net/rest/api/2/issue/{issueIdOrKey}/attachments" + * + * auth = HTTPBasicAuth("email@example.com", "") + * + * headers = { + * "Accept": "application/json", + * "X-Atlassian-Token": "no-check" + * } + * + * response = requests.request( + * "POST", + * url, + * headers = headers, + * auth = auth, + * files = { + * "file": ("myfile.txt", open("myfile.txt","rb"), "application-type") + * } + * ) + * + * print(json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": "))) + * + * #### PHP #### + * + * // This code sample uses the 'Unirest' library: + * // http://unirest.io/php.html + * Unirest\Request::auth('email@example.com', ''); + * + * $headers = array( + * 'Accept' => 'application/json', + * 'X-Atlassian-Token' => 'no-check' + * ); + * + * $parameters = array( + * 'file' => File::add('myfile.txt') + * ); + * + * $response = Unirest\Request::post( + * 'https://your-domain.atlassian.net/rest/api/2/issue/{issueIdOrKey}/attachments', + * $headers, + * $parameters + * ); + * + * var_dump($response) + * + * #### Forge #### + * + * // This sample uses Atlassian Forge and the `form-data` library. + * // https://developer.atlassian.com/platform/forge/ + * // https://www.npmjs.com/package/form-data + * import api from "@forge/api"; + * import FormData from "form-data"; + * + * const form = new FormData(); + * form.append('file', fileStream, {knownLength: fileSizeInBytes}); + * + * const response = await api.asApp().requestJira('/rest/api/2/issue/{issueIdOrKey}/attachments', { + * method: 'POST', + * body: form, + * headers: { + * 'Accept': 'application/json', + * 'X-Atlassian-Token': 'no-check' + * } + * }); + * + * console.log(`Response: ${response.status} ${response.statusText}`); + * console.log(await response.json()); + * + * Tip: Use a client library. Many client libraries have classes for handling multipart POST operations. For example, in Java, the Apache HTTP Components library provides a [MultiPartEntity](http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html) class for multipart POST operations. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse Projects* and *Create attachments* [ 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. + */ + addAttachment: { + parameters: { + path: { + /** @description The ID or key of the issue that attachments are added to. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + "multipart/form-data": components["schemas"]["MultipartFile"][]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Attachment"][]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * the issue is not found. + * * the user does not have permission to view the issue. + */ + 404: { + content: never; + }; + /** @description The attachments exceed the maximum attachment size for issues, or more than 60 files are requested to be uploaded. See [Configuring file attachments](https://confluence.atlassian.com/x/wIXKM) for details. */ + 413: { + content: never; + }; + }; + }; + /** + * Get changelogs + * @description Returns a [paginated](#pagination) list of all changelogs for an issue sorted by date, starting from the oldest. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getChangeLogs: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanChangelog"]; + }; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get changelogs by IDs + * @description Returns changelogs for an issue specified by a list of changelog IDs. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getChangeLogsByIds: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "changelogIds": [ + * 10001, + * 10002 + * ] + * } + */ + "application/json": components["schemas"]["IssueChangelogIds"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageOfChangelogs"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Get comments + * @description Returns all comments for an issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Comments are included in the response where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the comment. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is role visibility is restricted to. + */ + getComments: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description [Order](#ordering) the results by a field. Accepts *created* to sort comments by their created date. */ + orderBy?: "created" | "-created" | "+created"; + /** @description Use [expand](#expansion) to include additional information about comments in the response. This parameter accepts `renderedBody`, which returns the comment body rendered in HTML. */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageOfComments"]; + }; + }; + /** @description Returned if `orderBy` is set to a value other than *created*. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Add comment + * @description Adds a comment to an issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Add comments* [ project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue containing the comment is in. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + addComment: { + parameters: { + query?: { + /** @description Use [expand](#expansion) to include additional information about comments in the response. This parameter accepts `renderedBody`, which returns the comment body rendered in HTML. */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "body": { + * "content": [ + * { + * "content": [ + * { + * "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "visibility": { + * "identifier": "Administrators", + * "type": "role", + * "value": "Administrators" + * } + * } + */ + "application/json": components["schemas"]["Comment"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Comment"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get comment + * @description Returns a comment. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the comment. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted to. + */ + getComment: { + parameters: { + query?: { + /** @description Use [expand](#expansion) to include additional information about comments in the response. This parameter accepts `renderedBody`, which returns the comment body rendered in HTML. */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the comment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Comment"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue or comment is not found or the user does not have permission to view the issue or comment. */ + 404: { + content: never; + }; + }; + }; + /** + * Update comment + * @description Updates a comment. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue containing the comment is in. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Edit all comments*[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any comment or *Edit own comments* to update comment created by the user. + * * If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted to. + */ + updateComment: { + parameters: { + query?: { + /** @description Whether users are notified when a comment is updated. */ + notifyUsers?: boolean; + /** @description Whether screen security is overridden to enable uneditable fields to be edited. Available to Connect app users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideEditableFlag?: boolean; + /** @description Use [expand](#expansion) to include additional information about comments in the response. This parameter accepts `renderedBody`, which returns the comment body rendered in HTML. */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the comment. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "body": { + * "content": [ + * { + * "content": [ + * { + * "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "visibility": { + * "identifier": "Administrators", + * "type": "role", + * "value": "Administrators" + * } + * } + */ + "application/json": components["schemas"]["Comment"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Comment"]; + }; + }; + /** @description Returned if the user does not have permission to edit the comment or the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue or comment is not found or the user does not have permission to view the issue or comment. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete comment + * @description Deletes a comment. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue containing the comment is in. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Delete all comments*[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any comment or *Delete own comments* to delete comment created by the user, + * * If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted to. + */ + deleteComment: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the comment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the user does not have permission to delete the comment. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue or comment is not found or the user does not have permission to view the issue or comment. */ + 404: { + content: never; + }; + /** @description Returned if an anonymous call is made to the operation. */ + 405: { + content: never; + }; + }; + }; + /** + * Get edit issue metadata + * @description Returns the edit screen fields for an issue that are visible to and editable by the user. Use the information to populate the requests in [Edit issue](#api-rest-api-3-issue-issueIdOrKey-put). + * + * This endpoint will check for these conditions: + * + * 1. Field is available on a field screen - through screen, screen scheme, issue type screen scheme, and issue type scheme configuration. `overrideScreenSecurity=true` skips this condition. + * 2. Field is visible in the [field configuration](https://support.atlassian.com/jira-cloud-administration/docs/change-a-field-configuration/). `overrideScreenSecurity=true` skips this condition. + * 3. Field is shown on the issue: each field has different conditions here. For example: Attachment field only shows if attachments are enabled. Assignee only shows if user has permissions to assign the issue. + * 4. If a field is custom then it must have valid custom field context, applicable for its project and issue type. All system fields are assumed to have context in all projects and all issue types. + * 5. Issue has a project, issue type, and status defined. + * 6. Issue is assigned to a valid workflow, and the current status has assigned a workflow step. `overrideEditableFlag=true` skips this condition. + * 7. The current workflow step is editable. This is true by default, but [can be disabled by setting](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) the `jira.issue.editable` property to `false`. `overrideEditableFlag=true` skips this condition. + * 8. User has [Edit issues permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/). + * 9. Workflow permissions allow editing a field. This is true by default but [can be modified](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) using `jira.permission.*` workflow properties. + * + * Fields hidden using [Issue layout settings page](https://support.atlassian.com/jira-software-cloud/docs/configure-field-layout-in-the-issue-view/) remain editable. + * + * Connect apps having an app user with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), can return additional details using: + * + * * `overrideScreenSecurity` When this flag is `true`, then this endpoint skips checking if fields are available through screens, and field configuration (conditions 1. and 2. from the list above). + * * `overrideEditableFlag` When this flag is `true`, then this endpoint skips checking if workflow is present and if the current step is editable (conditions 6. and 7. from the list above). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * + * Note: For any fields to be editable the user must have the *Edit issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the issue. + */ + getEditIssueMeta: { + parameters: { + query?: { + /** @description Whether hidden fields are returned. Available to Connect app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideScreenSecurity?: boolean; + /** @description Whether non-editable fields are returned. Available to Connect app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideEditableFlag?: boolean; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueUpdateMetadata"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user uses an override parameter but doesn't have permission to do so. */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Send notification for issue + * @description Creates an email notification for an issue and adds it to the mail queue. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + notify: { + parameters: { + path: { + /** @description ID or key of the issue that the notification is sent for. */ + issueIdOrKey: string; + }; + }; + /** @description The request object for the notification and recipients. */ + requestBody: { + content: { + /** + * @example { + * "htmlBody": "The latest test results for this ticket are now available.", + * "restrict": { + * "groupIds": [], + * "groups": [ + * { + * "name": "notification-group" + * } + * ], + * "permissions": [ + * { + * "key": "BROWSE" + * } + * ] + * }, + * "subject": "Latest test results", + * "textBody": "The latest test results for this ticket are now available.", + * "to": { + * "assignee": false, + * "groupIds": [], + * "groups": [ + * { + * "name": "notification-group" + * } + * ], + * "reporter": false, + * "users": [ + * { + * "accountId": "5b10a2844c20165700ede21g", + * "active": false + * } + * ], + * "voters": true, + * "watchers": true + * } + * } + */ + "application/json": components["schemas"]["Notification"]; + }; + }; + responses: { + /** @description Returned if the email is queued for sending. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * the recipient is the same as the calling user. + * * the recipient is invalid. For example, the recipient is set to the assignee, but the issue is unassigned. + * * the request is invalid. For example, required fields are missing or have invalid values. + */ + 400: { + content: never; + }; + /** + * @description Returned if: + * + * * outgoing emails are disabled. + * * no SMTP server is configured. + */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue property keys + * @description Returns the URLs and keys of an issue's properties. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Property details are only returned where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + getIssuePropertyKeys: { + parameters: { + path: { + /** @description The key or ID of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the issue is not found or the user does not have permissions to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue property + * @description Returns the key and value of an issue's property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + getIssueProperty: { + parameters: { + path: { + /** @description The key or ID of the issue. */ + issueIdOrKey: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue or property is not found or the user does not have permission to see the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Set issue property + * @description Sets the value of an issue's property. Use this resource to store custom data against an issue. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + setIssueProperty: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The key of the issue property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the issue property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to edit the issue. */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue property + * @description Deletes an issue's property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + deleteIssueProperty: { + parameters: { + path: { + /** @description The key or ID of the issue. */ + issueIdOrKey: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue or property is not found, or the user does not have permission to edit the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Get remote issue links + * @description Returns the remote issue links for an issue. When a remote issue link global ID is provided the record with that global ID is returned, otherwise all remote issue links are returned. Where a global ID includes reserved URL characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1` as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getRemoteIssueLinks: { + parameters: { + query?: { + /** @description The global ID of the remote issue link. */ + globalId?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["RemoteIssueLink"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if issue linking is disabled. */ + 403: { + content: never; + }; + /** @description Returned if the issue or remote issue link is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Create or update remote issue link + * @description Creates or updates a remote issue link for an issue. + * + * If a `globalId` is provided and a remote issue link with that global ID is found it is updated. Any fields without values in the request are set to null. Otherwise, the remote issue link is created. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Link issues* [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. + */ + createOrUpdateRemoteIssueLink: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "application": { + * "name": "My Acme Tracker", + * "type": "com.acme.tracker" + * }, + * "globalId": "system=http://www.mycompany.com/support&id=1", + * "object": { + * "icon": { + * "title": "Support Ticket", + * "url16x16": "http://www.mycompany.com/support/ticket.png" + * }, + * "status": { + * "icon": { + * "link": "http://www.mycompany.com/support?id=1&details=closed", + * "title": "Case Closed", + * "url16x16": "http://www.mycompany.com/support/resolved.png" + * }, + * "resolved": true + * }, + * "summary": "Customer support issue", + * "title": "TSTSUP-111",board + * "url": "http://www.mycompany.com/support?id=1" + * }, + * "relationship": "causes" + * } + */ + "application/json": components["schemas"]["RemoteIssueLinkRequest"]; + }; + }; + responses: { + /** @description Returned if the remote issue link is updated. */ + 200: { + content: { + "application/json": components["schemas"]["RemoteIssueLinkIdentifies"]; + }; + }; + /** @description Returned if the remote issue link is created. */ + 201: { + content: { + "application/json": components["schemas"]["RemoteIssueLinkIdentifies"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to link issues. */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete remote issue link by global ID + * @description Deletes the remote issue link from the issue using the link's global ID. Where the global ID includes reserved URL characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1` as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Link issues* [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 implemented, issue-level security permission to view the issue. + */ + deleteRemoteIssueLinkByGlobalId: { + parameters: { + query: { + /** @description The global ID of a remote issue link. */ + globalId: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if a global ID isn't provided. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to link issues. */ + 403: { + content: never; + }; + /** @description Returned if the issue or remote issue link is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Get remote issue link by ID + * @description Returns a remote issue link for an issue. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getRemoteIssueLinkById: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the remote issue link. */ + linkId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["RemoteIssueLink"]; + }; + }; + /** @description Returned if the link ID is invalid or the remote issue link does not belong to the issue. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if issue linking is disabled. */ + 403: { + content: never; + }; + /** @description Returned if the issue or remote issue link is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Update remote issue link by ID + * @description Updates a remote issue link for an issue. + * + * Note: Fields without values in the request are set to null. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Link issues* [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. + */ + updateRemoteIssueLink: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the remote issue link. */ + linkId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "application": { + * "name": "My Acme Tracker", + * "type": "com.acme.tracker" + * }, + * "globalId": "system=http://www.mycompany.com/support&id=1", + * "object": { + * "icon": { + * "title": "Support Ticket", + * "url16x16": "http://www.mycompany.com/support/ticket.png" + * }, + * "status": { + * "icon": { + * "link": "http://www.mycompany.com/support?id=1&details=closed", + * "title": "Case Closed", + * "url16x16": "http://www.mycompany.com/support/resolved.png" + * }, + * "resolved": true + * }, + * "summary": "Customer support issue", + * "title": "TSTSUP-111", + * "url": "http://www.mycompany.com/support?id=1" + * }, + * "relationship": "causes" + * } + */ + "application/json": components["schemas"]["RemoteIssueLinkRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * the link ID is invalid. + * * the remote issue link does not belong to the issue. + * * the request body is invalid. + */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to link issues. */ + 403: { + content: never; + }; + /** @description Returned if the issue or remote issue link is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete remote issue link by ID + * @description Deletes a remote issue link from an issue. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects*, *Edit issues*, and *Link issues* [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. + */ + deleteRemoteIssueLinkById: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of a remote issue link. */ + linkId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the link ID is invalid or the remote issue link does not belong to the issue. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to link issues. */ + 403: { + content: never; + }; + /** @description Returned if the issue or remote issue link is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Get transitions + * @description Returns either all transitions or a transition that can be performed by the user on an issue, based on the issue's status. + * + * Note, if a request is made for a transition that does not exist or cannot be performed on the issue, given its status, the response will return any empty transitions list. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required: A list or transition is returned only when the user has:** + * + * * *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. + * + * However, if the user does not have the *Transition issues* [ project permission](https://confluence.atlassian.com/x/yodKLg) the response will not list any transitions. + */ + getTransitions: { + parameters: { + query?: { + /** @description Use [expand](#expansion) to include additional information about transitions in the response. This parameter accepts `transitions.fields`, which returns information about the fields in the transition screen for each transition. Fields hidden from the screen are not returned. Use this information to populate the `fields` and `update` fields in [Transition issue](#api-rest-api-3-issue-issueIdOrKey-transitions-post). */ + expand?: string; + /** @description The ID of the transition. */ + transitionId?: string; + /** @description Whether transitions with the condition *Hide From User Condition* are included in the response. */ + skipRemoteOnlyCondition?: boolean; + /** @description Whether details of transitions that fail a condition are included in the response */ + includeUnavailableTransitions?: boolean; + /** @description Whether the transitions are sorted by ops-bar sequence value first then category order (Todo, In Progress, Done) or only by ops-bar sequence value. */ + sortByOpsBarAndStatus?: boolean; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Transitions"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Transition issue + * @description Performs an issue transition and, if the transition has a screen, updates the fields from the transition screen. + * + * sortByCategory To update the fields on the transition screen, specify the fields in the `fields` or `update` parameters in the request body. Get details about the fields using [ Get transitions](#api-rest-api-3-issue-issueIdOrKey-transitions-get) with the `transitions.fields` expand. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Transition issues* [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. + */ + doTransition: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "fields": { + * "assignee": { + * "name": "bob" + * }, + * "resolution": { + * "name": "Fixed" + * } + * }, + * "historyMetadata": { + * "activityDescription": "Complete order processing", + * "actor": { + * "avatarUrl": "http://mysystem/avatar/tony.jpg", + * "displayName": "Tony", + * "id": "tony", + * "type": "mysystem-user", + * "url": "http://mysystem/users/tony" + * }, + * "cause": { + * "id": "myevent", + * "type": "mysystem-event" + * }, + * "description": "From the order testing process", + * "extraData": { + * "Iteration": "10a", + * "Step": "4" + * }, + * "generator": { + * "id": "mysystem-1", + * "type": "mysystem-application" + * }, + * "type": "myplugin:type" + * }, + * "transition": { + * "id": "5" + * }, + * "update": { + * "comment": [ + * { + * "add": { + * "body": { + * "content": [ + * { + * "content": [ + * { + * "text": "Bug has been fixed", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * } + * } + * } + * ] + * } + * } + */ + "application/json": components["schemas"]["IssueUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * no transition is specified. + * * the user does not have permission to transition the issue. + * * a field that isn't included on the transition screen is defined in `fields` or `update`. + * * a field is specified in both `fields` and `update`. + * * the request is invalid for any other reason. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + /** @description Returned if the issue could not be updated due to a conflicting update. (refer to the [changelog](https://developer.atlassian.com/changelog/#CHANGE-1364) *for more details.* */ + 409: { + content: never; + }; + /** @description Returned if a configuration problem prevents the creation of the issue. (refer to the [changelog](https://developer.atlassian.com/changelog/#CHANGE-1364) *for more details.* */ + 422: { + content: never; + }; + }; + }; + /** + * Get votes + * @description Returns details about the votes on an issue. + * + * This operation requires the **Allow users to vote on issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is ini + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * + * Note that users with the necessary permissions for this operation but without the *View voters and watchers* project permissions are not returned details in the `voters` field. + */ + getVotes: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Votes"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * voting is disabled. + * * the user does not have permission to view the issue. + * * the issue is not found. + */ + 404: { + content: never; + }; + }; + }; + /** + * Add vote + * @description Adds the user's vote to an issue. This is the equivalent of the user clicking *Vote* on an issue in Jira. + * + * This operation requires the **Allow users to vote on issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + addVote: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * voting is disabled. + * * the issue is not found. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete vote + * @description Deletes a user's vote from an issue. This is the equivalent of the user clicking *Unvote* on an issue in Jira. + * + * This operation requires the **Allow users to vote on issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + removeVote: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * voting is disabled. + * * the user has not voted on the issue. + * * the issue is not found. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue watchers + * @description Returns the watchers for an issue. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is ini + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * To see details of users on the watchlist other than themselves, *View voters and watchers* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in. + */ + getIssueWatchers: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful */ + 200: { + content: { + "application/json": components["schemas"]["Watchers"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Add watcher + * @description Adds a user as a watcher of an issue by passing the account ID of the user. For example, `"5b10ac8d82e05b22cc7d4ef5"`. If no user is specified the calling user is added. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * To add users other than themselves to the watchlist, *Manage watcher list* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in. + */ + addWatcher: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + /** @description The account ID of the user. Note that username cannot be used due to privacy changes. */ + requestBody: { + content: { + "application/json": string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the permission to manage the watcher list. */ + 403: { + content: never; + }; + /** @description Returned if the issue or the user is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete watcher + * @description Deletes a user as a watcher of an issue. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * To remove users other than themselves from the watchlist, *Manage watcher list* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in. + */ + removeWatcher: { + parameters: { + query?: { + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Required. */ + accountId?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if `accountId` is not supplied. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the permission to manage the watcher list. */ + 403: { + content: never; + }; + /** @description Returned if the issue or the user is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue worklogs + * @description Returns worklogs for an issue, starting from the oldest worklog or from the worklog started on or after a date and time. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Workloads are only returned where the user has: + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getIssueWorklog: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The worklog start date and time, as a UNIX timestamp in milliseconds, after which worklogs are returned. */ + startedAfter?: number; + /** @description The worklog start date and time, as a UNIX timestamp in milliseconds, before which worklogs are returned. */ + startedBefore?: number; + /** @description Use [expand](#expansion) to include additional information about worklogs in the response. This parameter accepts`properties`, which returns worklog properties. */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful */ + 200: { + content: { + "application/json": components["schemas"]["PageOfWorklogs"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue is not found or the user does not have permission to view the issue. + * * `startAt` or `maxResults` has non-numeric values. + * * time tracking is disabled. + */ + 404: { + content: never; + }; + }; + }; + /** + * Add worklog + * @description Adds a worklog to an issue. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Work on issues* [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. + */ + addWorklog: { + parameters: { + query?: { + /** @description Whether users watching the issue are notified by email. */ + notifyUsers?: boolean; + /** + * @description Defines how to update the issue's time estimate, the options are: + * + * * `new` Sets the estimate to a specific value, defined in `newEstimate`. + * * `leave` Leaves the estimate unchanged. + * * `manual` Reduces the estimate by amount specified in `reduceBy`. + * * `auto` Reduces the estimate by the value of `timeSpent` in the worklog. + */ + adjustEstimate?: "new" | "leave" | "manual" | "auto"; + /** @description The value to set as the issue's remaining time estimate, as days (\#d), hours (\#h), or minutes (\#m or \#). For example, *2d*. Required when `adjustEstimate` is `new`. */ + newEstimate?: string; + /** @description The amount to reduce the issue's remaining estimate by, as days (\#d), hours (\#h), or minutes (\#m). For example, *2d*. Required when `adjustEstimate` is `manual`. */ + reduceBy?: string; + /** @description Use [expand](#expansion) to include additional information about work logs in the response. This parameter accepts `properties`, which returns worklog properties. */ + expand?: string; + /** @description Whether the worklog entry should be added to the issue even if the issue is not editable, because jira.issue.editable set to false or missing. For example, the issue is closed. Connect and Forge app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) can use this flag. */ + overrideEditableFlag?: boolean; + }; + path: { + /** @description The ID or key the issue. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "comment": { + * "content": [ + * { + * "content": [ + * { + * "text": "I did some work here.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "started": "2021-01-17T12:34:00.000+0000", + * "timeSpentSeconds": 12000, + * "visibility": { + * "identifier": "276f955c-63d7-42c8-9520-92d01dca0625", + * "type": "group" + * } + * } + */ + "application/json": components["schemas"]["Worklog"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Worklog"]; + }; + }; + /** + * @description Returned if: + * + * * `adjustEstimate` is set to `new` but `newEstimate` is not provided or is invalid. + * * `adjustEstimate` is set to `manual` but `reduceBy` is not provided or is invalid. + * * the user does not have permission to add the worklog. + * * the request JSON is malformed. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get worklog + * @description Returns a worklog. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getWorklog: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about work logs in the response. This parameter accepts + * + * `properties`, which returns worklog properties. + */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Worklog"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue is not found or the user does not have permission to view it. + * * the worklog is not found or the user does not have permission to view it. + * * time tracking is disabled. + * + * . + */ + 404: { + content: never; + }; + }; + }; + /** + * Update worklog + * @description Updates a worklog. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * *Edit all worklogs*[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or *Edit own worklogs* to update worklogs created by the user. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + updateWorklog: { + parameters: { + query?: { + /** @description Whether users watching the issue are notified by email. */ + notifyUsers?: boolean; + /** + * @description Defines how to update the issue's time estimate, the options are: + * + * * `new` Sets the estimate to a specific value, defined in `newEstimate`. + * * `leave` Leaves the estimate unchanged. + * * `auto` Updates the estimate by the difference between the original and updated value of `timeSpent` or `timeSpentSeconds`. + */ + adjustEstimate?: "new" | "leave" | "manual" | "auto"; + /** @description The value to set as the issue's remaining time estimate, as days (\#d), hours (\#h), or minutes (\#m or \#). For example, *2d*. Required when `adjustEstimate` is `new`. */ + newEstimate?: string; + /** @description Use [expand](#expansion) to include additional information about worklogs in the response. This parameter accepts `properties`, which returns worklog properties. */ + expand?: string; + /** @description Whether the worklog should be added to the issue even if the issue is not editable. For example, because the issue is closed. Connect and Forge app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) can use this flag. */ + overrideEditableFlag?: boolean; + }; + path: { + /** @description The ID or key the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "comment": { + * "content": [ + * { + * "content": [ + * { + * "text": "I did some work here.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "started": "2021-01-17T12:34:00.000+0000", + * "timeSpentSeconds": 12000, + * "visibility": { + * "identifier": "276f955c-63d7-42c8-9520-92d01dca0625", + * "type": "group" + * } + * } + */ + "application/json": components["schemas"]["Worklog"]; + }; + }; + responses: { + /** @description Returned if the request is successful */ + 200: { + content: { + "application/json": components["schemas"]["Worklog"]; + }; + }; + /** + * @description Returned if: + * + * * `adjustEstimate` is set to `new` but `newEstimate` is not provided or is invalid. + * * the user does not have permission to update the worklog. + * * the request JSON is malformed. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue is not found or user does not have permission to view the issue. + * * the worklog is not found or the user does not have permission to view it. + * * time tracking is disabled. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete worklog + * @description Deletes a worklog from an issue. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * *Delete all worklogs*[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any worklog or *Delete own worklogs* to delete worklogs created by the user, + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + deleteWorklog: { + parameters: { + query?: { + /** @description Whether users watching the issue are notified by email. */ + notifyUsers?: boolean; + /** + * @description Defines how to update the issue's time estimate, the options are: + * + * * `new` Sets the estimate to a specific value, defined in `newEstimate`. + * * `leave` Leaves the estimate unchanged. + * * `manual` Increases the estimate by amount specified in `increaseBy`. + * * `auto` Reduces the estimate by the value of `timeSpent` in the worklog. + */ + adjustEstimate?: "new" | "leave" | "manual" | "auto"; + /** @description The value to set as the issue's remaining time estimate, as days (\#d), hours (\#h), or minutes (\#m or \#). For example, *2d*. Required when `adjustEstimate` is `new`. */ + newEstimate?: string; + /** @description The amount to increase the issue's remaining estimate by, as days (\#d), hours (\#h), or minutes (\#m or \#). For example, *2d*. Required when `adjustEstimate` is `manual`. */ + increaseBy?: string; + /** @description Whether the work log entry should be added to the issue even if the issue is not editable, because jira.issue.editable set to false or missing. For example, the issue is closed. Connect and Forge app users with admin permission can use this flag. */ + overrideEditableFlag?: boolean; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** + * @description Returned if: + * + * * `adjustEstimate` is set to `new` but `newEstimate` is not provided or is invalid. + * * `adjustEstimate` is set to `manual` but `reduceBy` is not provided or is invalid. + * * the user does not have permission to delete the worklog. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue is not found or user does not have permission to view the issue. + * * the worklog is not found or the user does not have permission to view it. + * * time tracking is disabled. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get worklog property keys + * @description Returns the keys of all properties for a worklog. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getWorklogPropertyKeys: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + worklogId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the worklog ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue or worklog is not found. + * * the user does not have permission to view the issue or worklog. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get worklog property + * @description Returns the value of a worklog property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getWorklogProperty: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + worklogId: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the worklog ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue, worklog, or property is not found. + * * the user does not have permission to view the issue or worklog. + */ + 404: { + content: never; + }; + }; + }; + /** + * Set worklog property + * @description Sets the value of a worklog property. Use this operation to store custom data against the worklog. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * *Edit all worklogs*[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or *Edit own worklogs* to update worklogs created by the user. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + setWorklogProperty: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + worklogId: string; + /** @description The key of the issue property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the worklog property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the worklog property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the worklog ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to edit the worklog. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue or worklog is not found. + * * the user does not have permission to view the issue or worklog. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete worklog property + * @description Deletes a worklog property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + deleteWorklogProperty: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + worklogId: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the worklog property is removed. */ + 204: { + content: never; + }; + /** @description Returned if the worklog key or id is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to edit the worklog. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue, worklog, or property is not found. + * * the user does not have permission to view the issue or worklog. + */ + 404: { + content: never; + }; + }; + }; + /** + * Create issue link + * @description Creates a link between two issues. Use this operation to indicate a relationship between two issues and optionally add a comment to the from (outward) issue. To use this resource the site must have [Issue Linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * This resource returns nothing on the creation of an issue link. To obtain the ID of the issue link, use `https://your-domain.atlassian.net/rest/api/3/issue/[linked issue key]?fields=issuelinks`. + * + * If the link request duplicates a link, the response indicates that the issue link was created. If the request included a comment, the comment is added. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse project* [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the issues to be linked, + * * *Link issues* [project permission](https://confluence.atlassian.com/x/yodKLg) on the project containing the from (outward) issue, + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + linkIssues: { + /** @description The issue link request. */ + requestBody: { + content: { + /** + * @example { + * "comment": { + * "body": { + * "content": [ + * { + * "content": [ + * { + * "text": "Linked related issue!", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "visibility": { + * "identifier": "276f955c-63d7-42c8-9520-92d01dca0625", + * "type": "group", + * "value": "jira-software-users" + * } + * }, + * "inwardIssue": { + * "key": "HSP-1" + * }, + * "outwardIssue": { + * "key": "MKY-1" + * }, + * "type": { + * "name": "Duplicate" + * } + * } + */ + "application/json": components["schemas"]["LinkIssueRequestJsonBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the comment is not created. The response contains an error message indicating why the comment wasn't created. The issue link is also not created. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the user cannot view one or both of the issues. For example, the user doesn't have *Browse project* project permission for a project containing one of the issues. + * * the user does not have *link issues* project permission. + * * either of the link issues are not found. + * * the issue link type is not found. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue link + * @description Returns an issue link. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse project* [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the linked issues. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the issues. + */ + getIssueLink: { + parameters: { + path: { + /** @description The ID of the issue link. */ + linkId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueLink"]; + }; + }; + /** @description Returned if the issue link ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the issue link is not found. + * * the user doesn't have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue link + * @description Deletes an issue link. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * Browse project [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the issues in the link. + * * *Link issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one of the projects containing issues in the link. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the issues. + */ + deleteIssueLink: { + parameters: { + path: { + /** @description The ID of the issue link. */ + linkId: string; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: never; + }; + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the issue link ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the issue link is not found. + * * the user doesn't have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue link types + * @description Returns a list of all issue link types. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site. + */ + getIssueLinkTypes: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueLinkTypes"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if issue linking is disabled. */ + 404: { + content: never; + }; + }; + }; + /** + * Create issue link type + * @description Creates an issue link type. Use this operation to create descriptions of the reasons why issues are linked. The issue link type consists of a name and descriptions for a link's inward and outward relationships. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createIssueLinkType: { + requestBody: { + content: { + /** + * @example { + * "inward": "Duplicated by", + * "name": "Duplicate", + * "outward": "Duplicates" + * } + */ + "application/json": components["schemas"]["IssueLinkType"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["IssueLinkType"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the issue link type name is in use. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue link type + * @description Returns an issue link type. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site. + */ + getIssueLinkType: { + parameters: { + path: { + /** @description The ID of the issue link type. */ + issueLinkTypeId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueLinkType"]; + }; + }; + /** @description Returned if the issue link type ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the issue link type is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Update issue link type + * @description Updates an issue link type. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateIssueLinkType: { + parameters: { + path: { + /** @description The ID of the issue link type. */ + issueLinkTypeId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "inward": "Duplicated by", + * "name": "Duplicate", + * "outward": "Duplicates" + * } + */ + "application/json": components["schemas"]["IssueLinkType"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueLinkType"]; + }; + }; + /** @description Returned if the issue link type ID or the request body are invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the issue link type is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue link type + * @description Deletes an issue link type. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteIssueLinkType: { + parameters: { + path: { + /** @description The ID of the issue link type. */ + issueLinkTypeId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the issue link type ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the issue link type is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Export archived issue(s) + * @description Enables admins to retrieve details of all archived issues. Upon a successful request, the admin who submitted it will receive an email with a link to download a CSV file with the issue details. + * + * Note that this API only exports the values of system fields and archival-specific fields (`ArchivedBy` and `ArchivedDate`). Custom fields aren't supported. + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + * + * **Rate limiting:** Only a single request can be active at any given time. + */ + exportArchivedIssues: { + /** @description You can filter the issues in your request by the `projects`, `archivedBy`, `archivedDate`, `issueTypes`, and `reporters` fields. All filters are optional. If you don't provide any filters, you'll get a list of up to one million archived issues. */ + requestBody: { + content: { + /** + * @example { + * "archivedBy": [ + * "uuid-rep-001", + * "uuid-rep-002" + * ], + * "archivedDate": { + * "dateAfter": "2023-01-01", + * "dateBefore": "2023-01-12" + * }, + * "archivedDateRange": { + * "dateAfter": "2023-01-01", + * "dateBefore": "2023-01-12" + * }, + * "issueTypes": [ + * "10001", + * "10002" + * ], + * "projects": [ + * "FOO", + * "BAR" + * ], + * "reporters": [ + * "uuid-rep-001", + * "uuid-rep-002" + * ] + * } + */ + "application/json": components["schemas"]["ArchivedIssuesFilterRequest"]; + }; + }; + responses: { + /** @description Returns the details of your export task. You can use the [get task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-get) API to view the progress of your request. */ + 202: { + content: { + "application/json": components["schemas"]["ExportArchivedIssuesTaskProgressResponse"]; + }; + }; + /** + * @description Returned when: + * + * * The request is invalid, or the filters provided are incorrect + * * You requested too many issues for export. The limit is one million issues per request + */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were unarchived because the provided authentication credentials are either missing or invalid. */ + 401: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were unarchived because the user lacks the required Jira admin or site admin permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if a request to export archived issues is already running. */ + 412: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue security schemes + * @description Returns all [issue security schemes](https://confluence.atlassian.com/x/J4lKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueSecuritySchemes: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SecuritySchemes"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to administer issue security schemes. */ + 403: { + content: never; + }; + }; + }; + /** + * Create issue security scheme + * @description Creates a security scheme with security scheme levels and levels' members. You can create up to 100 security scheme levels and security scheme levels' members per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createIssueSecurityScheme: { + requestBody: { + content: { + /** + * @example { + * "description": "Newly created issue security scheme", + * "levels": [ + * { + * "description": "Newly created level", + * "isDefault": true, + * "members": [ + * { + * "parameter": "administrators", + * "type": "group" + * } + * ], + * "name": "New level" + * } + * ], + * "name": "New security scheme" + * } + */ + "application/json": components["schemas"]["CreateIssueSecuritySchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["SecuritySchemeId"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get issue security levels + * @description Returns a [paginated](#pagination) list of issue security levels. + * + * Only issue security levels in the context of classic projects are returned. + * + * Filtering using IDs is inclusive: if you specify both security scheme IDs and level IDs, the result will include both specified issue security levels and all issue security levels from the specified schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getSecurityLevels: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of issue security scheme level IDs. To include multiple issue security levels, separate IDs with an ampersand: `id=10000&id=10001`. */ + id?: string[]; + /** @description The list of issue security scheme IDs. To include multiple issue security schemes, separate IDs with an ampersand: `schemeId=10000&schemeId=10001`. */ + schemeId?: string[]; + /** @description When set to true, returns multiple default levels for each security scheme containing a default. If you provide scheme and level IDs not associated with the default, returns an empty page. The default value is false. */ + onlyDefault?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanSecurityLevel"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Set default issue security levels + * @description Sets default issue security levels for schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setDefaultLevels: { + requestBody: { + content: { + /** + * @example { + * "defaultValues": [ + * { + * "defaultLevelId": "20000", + * "issueSecuritySchemeId": "10000" + * }, + * { + * "defaultLevelId": "30000", + * "issueSecuritySchemeId": "12000" + * } + * ] + * } + */ + "application/json": components["schemas"]["SetDefaultLevelsRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue resolution isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get issue security level members + * @description Returns a [paginated](#pagination) list of issue security level members. + * + * Only issue security level members in the context of classic projects are returned. + * + * Filtering using parameters is inclusive: if you specify both security scheme IDs and level IDs, the result will include all issue security level members from the specified schemes and levels. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getSecurityLevelMembers: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of issue security level member IDs. To include multiple issue security level members separate IDs with an ampersand: `id=10000&id=10001`. */ + id?: string[]; + /** @description The list of issue security scheme IDs. To include multiple issue security schemes separate IDs with an ampersand: `schemeId=10000&schemeId=10001`. */ + schemeId?: string[]; + /** @description The list of issue security level IDs. To include multiple issue security levels separate IDs with an ampersand: `levelId=10000&levelId=10001`. */ + levelId?: string[]; + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `all` Returns all expandable information + * * `field` Returns information about the custom field granted the permission + * * `group` Returns information about the group that is granted the permission + * * `projectRole` Returns information about the project role granted the permission + * * `user` Returns information about the user who is granted the permission + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanSecurityLevelMember"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get projects using issue security schemes + * @description Returns a [paginated](#pagination) mapping of projects that are using security schemes. You can provide either one or multiple security scheme IDs or project IDs to filter by. If you don't provide any, this will return a list of all mappings. Only issue security schemes in the context of classic projects are supported. **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + searchProjectsUsingSecuritySchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of security scheme IDs to be filtered out. */ + issueSecuritySchemeId?: string[]; + /** @description The list of project IDs to be filtered out. */ + projectId?: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueSecuritySchemeToProjectMapping"]; + }; + }; + /** @description Returned if the search criteria is invalid.If you specify the project ID parameter */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Associate security scheme to project + * @description Associates an issue security scheme with a project and remaps security levels of issues to the new levels, if provided. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + associateSchemesToProjects: { + requestBody: { + content: { + /** + * @example { + * "oldToNewSecurityLevelMappings": [ + * { + * "newLevelId": "30001", + * "oldLevelId": "30000" + * } + * ], + * "projectId": "10000", + * "schemeId": "20000" + * } + */ + "application/json": components["schemas"]["AssociateSecuritySchemeWithProjectDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the security scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if a task to remove the issue security level is already running. */ + 409: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Search issue security schemes + * @description Returns a [paginated](#pagination) list of issue security schemes. + * If you specify the project ID parameter, the result will contain issue security schemes and related project IDs you filter by. Use \{@link IssueSecuritySchemeResource\#searchProjectsUsingSecuritySchemes(String, String, Set, Set)\} to obtain all projects related to scheme. + * + * Only issue security schemes in the context of classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + searchSecuritySchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of issue security scheme IDs. To include multiple issue security scheme IDs, separate IDs with an ampersand: `id=10000&id=10001`. */ + id?: string[]; + /** @description The list of project IDs. To include multiple project IDs, separate IDs with an ampersand: `projectId=10000&projectId=10001`. */ + projectId?: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanSecuritySchemeWithProjects"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue security scheme + * @description Returns an issue security scheme along with its security levels. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project that uses the requested issue security scheme. + */ + getIssueSecurityScheme: { + parameters: { + path: { + /** @description The ID of the issue security scheme. Use the [Get issue security schemes](#api-rest-api-3-issuesecurityschemes-get) operation to get a list of issue security scheme IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SecurityScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the administrator permission and the scheme is not used in any project where the user has administrative permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Update issue security scheme + * @description Updates the issue security scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateIssueSecurityScheme: { + parameters: { + path: { + /** @description The ID of the issue security scheme. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "My issue security scheme description", + * "name": "My issue security scheme name" + * } + */ + "application/json": components["schemas"]["UpdateIssueSecuritySchemeRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue security scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get issue security level members + * @description Returns issue security level members. + * + * Only issue security level members in context of classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueSecurityLevelMembers: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of issue security level IDs. To include multiple issue security levels separate IDs with ampersand: `issueSecurityLevelId=10000&issueSecurityLevelId=10001`. */ + issueSecurityLevelId?: string[]; + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + path: { + /** @description The ID of the issue security scheme. Use the [Get issue security schemes](#api-rest-api-3-issuesecurityschemes-get) operation to get a list of issue security scheme IDs. */ + issueSecuritySchemeId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueSecurityLevelMember"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if no issue security level members are found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue security scheme + * @description Deletes an issue security scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteSecurityScheme: { + parameters: { + path: { + /** @description The ID of the issue security scheme. */ + schemeId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue security scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Add issue security levels + * @description Adds levels and levels' members to the issue security scheme. You can add up to 100 levels per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addSecurityLevel: { + parameters: { + path: { + /** @description The ID of the issue security scheme. */ + schemeId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "levels": [ + * { + * "description": "First Level Description", + * "isDefault": true, + * "members": [ + * { + * "type": "reporter" + * }, + * { + * "parameter": "jira-administrators", + * "type": "group" + * } + * ], + * "name": "First Level" + * } + * ] + * } + */ + "application/json": components["schemas"]["AddSecuritySchemeLevelsRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the security scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Update issue security level + * @description Updates the issue security level. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateSecurityLevel: { + parameters: { + path: { + /** @description The ID of the issue security scheme level belongs to. */ + schemeId: string; + /** @description The ID of the issue security level to update. */ + levelId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "New level description", + * "name": "New level name" + * } + */ + "application/json": components["schemas"]["UpdateIssueSecurityLevelDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue security level isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Remove issue security level + * @description Deletes an issue security level. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeLevel: { + parameters: { + query?: { + /** @description The ID of the issue security level that will replace the currently selected level. */ + replaceWith?: string; + }; + path: { + /** @description The ID of the issue security scheme. */ + schemeId: string; + /** @description The ID of the issue security level to remove. */ + levelId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue security level isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if a task to remove the issue security level is already running. */ + 409: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Add issue security level members + * @description Adds members to the issue security level. You can add up to 100 members per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addSecurityLevelMembers: { + parameters: { + path: { + /** @description The ID of the issue security scheme. */ + schemeId: string; + /** @description The ID of the issue security level. */ + levelId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "members": [ + * { + * "type": "reporter" + * }, + * { + * "parameter": "jira-administrators", + * "type": "group" + * } + * ] + * } + */ + "application/json": components["schemas"]["SecuritySchemeMembersRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the security scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Remove member from issue security level + * @description Removes an issue security level member from an issue security scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeMemberFromSecurityLevel: { + parameters: { + path: { + /** @description The ID of the issue security scheme. */ + schemeId: string; + /** @description The ID of the issue security level. */ + levelId: string; + /** @description The ID of the issue security level member to be removed. */ + memberId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the security scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all issue types for user + * @description Returns all issue types. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Issue types are only returned as follows: + * + * * if the user has the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), all issue types are returned. + * * if the user has the *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, the issue types associated with the projects the user has permission to browse are returned. + */ + getIssueAllTypes: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeDetails"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create issue type + * @description Creates an issue type and adds it to the default issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createIssueType: { + requestBody: { + content: { + /** + * @example { + * "description": "description", + * "name": "name", + * "type": "standard" + * } + */ + "application/json": components["schemas"]["IssueTypeCreateBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["IssueTypeDetails"]; + }; + }; + /** + * @description Returned if the request is invalid because: + * + * * no content is sent. + * * the issue type name exceeds 60 characters. + * * a subtask issue type is requested on an instance where subtasks are disabled. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue type name is in use. */ + 409: { + content: never; + }; + }; + }; + /** + * Get issue types for project + * @description Returns issue types for a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) in the relevant project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypesForProject: { + parameters: { + query: { + /** @description The ID of the project. */ + projectId: number; + /** + * @description The level of the issue type to filter by. Use: + * + * * `-1` for Subtask. + * * `0` for Base. + * * `1` for Epic. + */ + level?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeDetails"][]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the project is not found. + * * the user does not have the necessary permission. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue type + * @description Returns an issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) in a project the issue type is associated with or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueType: { + parameters: { + path: { + /** @description The ID of the issue type. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeDetails"]; + }; + }; + /** @description Returned if the issue type ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue type is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Update issue type + * @description Updates the issue type. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateIssueType: { + parameters: { + path: { + /** @description The ID of the issue type. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "avatarId": 1, + * "description": "description", + * "name": "name" + * } + */ + "application/json": components["schemas"]["IssueTypeUpdateBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeDetails"]; + }; + }; + /** + * @description Returned if the request is invalid because: + * + * * no content is sent. + * * the issue type name exceeds 60 characters. + * * the avatar is not associated with this issue type. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue type is not found. */ + 404: { + content: never; + }; + /** @description Returned if the issue type name is in use. */ + 409: { + content: never; + }; + }; + }; + /** + * Delete issue type + * @description Deletes the issue type. If the issue type is in use, all uses are updated with the alternative issue type (`alternativeIssueTypeId`). A list of alternative issue types are obtained from the [Get alternative issue types](#api-rest-api-3-issuetype-id-alternatives-get) resource. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteIssueType: { + parameters: { + query?: { + /** @description The ID of the replacement issue type. */ + alternativeIssueTypeId?: string; + }; + path: { + /** @description The ID of the issue type. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if any issues cannot be updated with the alternative issue type. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue type is in use and an alternative issue type is not specified. + * * the issue type or alternative issue type is not found. + */ + 404: { + content: never; + }; + /** + * @description Returned if the issue type is in use and: + * + * * also specified as the alternative issue type. + * * is a *standard* issue type and the alternative issue type is a *subtask*. + */ + 409: { + content: never; + }; + }; + }; + /** + * Get alternative issue types + * @description Returns a list of issue types that can be used to replace the issue type. The alternative issue types are those assigned to the same workflow scheme, field configuration scheme, and screen scheme. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAlternativeIssueTypes: { + parameters: { + path: { + /** @description The ID of the issue type. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeDetails"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue type is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Load issue type avatar + * @description Loads an avatar for the issue type. + * + * Specify the avatar's local file location in the body of the request. Also, include the following headers: + * + * * `X-Atlassian-Token: no-check` To prevent XSRF protection blocking the request, for more information see [Special Headers](#special-request-headers). + * * `Content-Type: image/image type` Valid image types are JPEG, GIF, or PNG. + * + * For example: + * `curl --request POST \ --user email@example.com: \ --header 'X-Atlassian-Token: no-check' \ --header 'Content-Type: image/< image_type>' \ --data-binary "<@/path/to/file/with/your/avatar>" \ --url 'https://your-domain.atlassian.net/rest/api/3/issuetype/{issueTypeId}'This` + * + * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of the image. The length of the square's sides is set to the smaller of the height or width of the image. + * + * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size. + * + * After creating the avatar, use [ Update issue type](#api-rest-api-3-issuetype-id-put) to set it as the issue type's displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createIssueTypeAvatar: { + parameters: { + query: { + /** @description The X coordinate of the top-left corner of the crop region. */ + x?: number; + /** @description The Y coordinate of the top-left corner of the crop region. */ + y?: number; + /** @description The length of each side of the crop region. */ + size: number; + }; + path: { + /** @description The ID of the issue type. */ + id: string; + }; + }; + requestBody: { + content: { + "*/*": unknown; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Avatar"]; + }; + }; + /** + * @description Returned if: + * + * * an image isn't included in the request. + * * the image type is unsupported. + * * the crop parameters extend the crop area beyond the edge of the image. + * * `cropSize` is missing. + * * the issue type ID is invalid. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue type property keys + * @description Returns all the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties) keys of the issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the property keys of any issue type. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) to get the property keys of any issue types associated with the projects the user has permission to browse. + */ + getIssueTypePropertyKeys: { + parameters: { + path: { + /** @description The ID of the issue type. */ + issueTypeId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the issue type ID is invalid. */ + 400: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue type is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue type property + * @description Returns the key and value of the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the details of any issue type. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) to get the details of any issue types associated with the projects the user has permission to browse. + */ + getIssueTypeProperty: { + parameters: { + path: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The key of the property. Use [Get issue type property keys](#api-rest-api-3-issuetype-issueTypeId-properties-get) to get a list of all issue type property keys. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the issue type ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue type or property is not found or the user does not have the required permissions. */ + 404: { + content: never; + }; + }; + }; + /** + * Set issue type property + * @description Creates or updates the value of the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). Use this resource to store and update data against an issue type. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setIssueTypeProperty: { + parameters: { + path: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The key of the issue type property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "number": 5, + * "string": "string-value" + * } + */ + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the issue type property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * the issue type ID is invalid. + * * a property value is not provided. + * * the property value JSON content is invalid. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to modify the issue type. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue type is not found. + * * the user does not have the permission view the issue type. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue type property + * @description Deletes the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteIssueTypeProperty: { + parameters: { + path: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The key of the property. Use [Get issue type property keys](#api-rest-api-3-issuetype-issueTypeId-properties-get) to get a list of all issue type property keys. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the issue type property is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the issue type ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue type or property is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all issue type schemes + * @description Returns a [paginated](#pagination) list of issue type schemes. + * + * Only issue type schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllIssueTypeSchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of issue type schemes IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. */ + id?: number[]; + /** + * @description [Order](#ordering) the results by a field: + * + * * `name` Sorts by issue type scheme name. + * * `id` Sorts by issue type scheme ID. + */ + orderBy?: "name" | "-name" | "+name" | "id" | "-id" | "+id"; + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `projects` For each issue type schemes, returns information about the projects the issue type scheme is assigned to. + * * `issueTypes` For each issue type schemes, returns information about the issueTypes the issue type scheme have. + */ + expand?: string; + /** @description String used to perform a case-insensitive partial match with issue type scheme name. */ + queryString?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeScheme"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Create issue type scheme + * @description Creates an issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createIssueTypeScheme: { + requestBody: { + content: { + /** + * @example { + * "defaultIssueTypeId": "10002", + * "description": "A collection of issue types suited to use in a kanban style project.", + * "issueTypeIds": [ + * "10001", + * "10002", + * "10003" + * ], + * "name": "Kanban Issue Type Scheme" + * } + */ + "application/json": components["schemas"]["IssueTypeSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["IssueTypeSchemeID"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the scheme name is used by another scheme. */ + 409: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue type scheme items + * @description Returns a [paginated](#pagination) list of issue type scheme items. + * + * Only issue type scheme items used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypeSchemesMapping: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of issue type scheme IDs. To include multiple IDs, provide an ampersand-separated list. For example, `issueTypeSchemeId=10000&issueTypeSchemeId=10001`. */ + issueTypeSchemeId?: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeSchemeMapping"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Get issue type schemes for projects + * @description Returns a [paginated](#pagination) list of issue type schemes and, for each issue type scheme, a list of the projects that use it. + * + * Only issue type schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypeSchemeForProjects: { + parameters: { + query: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of project IDs. To include multiple project IDs, provide an ampersand-separated list. For example, `projectId=10000&projectId=10001`. */ + projectId: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeSchemeProjects"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Assign issue type scheme to project + * @description Assigns an issue type scheme to a project. + * + * If any issues in the project are assigned issue types not present in the new scheme, the operation will fail. To complete the assignment those issues must be updated to use issue types in the new scheme. + * + * Issue type schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + assignIssueTypeSchemeToProject: { + requestBody: { + content: { + /** + * @example { + * "issueTypeSchemeId": "10000", + * "projectId": "10000" + * } + */ + "application/json": components["schemas"]["IssueTypeSchemeProjectAssociation"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type scheme or the project is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update issue type scheme + * @description Updates an issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateIssueTypeScheme: { + parameters: { + path: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "defaultIssueTypeId": "10002", + * "description": "A collection of issue types suited to use in a kanban style project.", + * "name": "Kanban Issue Type Scheme" + * } + */ + "application/json": components["schemas"]["IssueTypeSchemeUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete issue type scheme + * @description Deletes an issue type scheme. + * + * Only issue type schemes used in classic projects can be deleted. + * + * Any projects assigned to the scheme are reassigned to the default issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteIssueTypeScheme: { + parameters: { + path: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: number; + }; + }; + responses: { + /** @description Returned if the issue type scheme is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is to delete the default issue type scheme. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Add issue types to issue type scheme + * @description Adds issue types to an issue type scheme. + * + * The added issue types are appended to the issue types list. + * + * If any of the issue types exist in the issue type scheme, the operation fails and no issue types are added. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addIssueTypesToIssueTypeScheme: { + parameters: { + path: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypeIds": [ + * "10000", + * "10002", + * "10003" + * ] + * } + */ + "application/json": components["schemas"]["IssueTypeIds"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type or the issue type scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Change order of issue types + * @description Changes the order of issue types in an issue type scheme. + * + * The request body parameters must meet the following requirements: + * + * * all of the issue types must belong to the issue type scheme. + * * either `after` or `position` must be provided. + * * the issue type in `after` must not be in the issue type list. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + reorderIssueTypesInIssueTypeScheme: { + parameters: { + path: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "after": "10008", + * "issueTypeIds": [ + * "10001", + * "10004", + * "10002" + * ] + * } + */ + "application/json": components["schemas"]["OrderOfIssueTypes"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Remove issue type from issue type scheme + * @description Removes an issue type from an issue type scheme. + * + * This operation cannot remove: + * + * * any issue type used by issues. + * * any issue types from the default issue type scheme. + * * the last standard issue type from an issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeIssueTypeFromIssueTypeScheme: { + parameters: { + path: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: number; + /** @description The ID of the issue type. */ + issueTypeId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type scheme is missing or the issue type is not found in the issue type scheme. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue type screen schemes + * @description Returns a [paginated](#pagination) list of issue type screen schemes. + * + * Only issue type screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypeScreenSchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of issue type screen scheme IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. */ + id?: number[]; + /** @description String used to perform a case-insensitive partial match with issue type screen scheme name. */ + queryString?: string; + /** + * @description [Order](#ordering) the results by a field: + * + * * `name` Sorts by issue type screen scheme name. + * * `id` Sorts by issue type screen scheme ID. + */ + orderBy?: "name" | "-name" | "+name" | "id" | "-id" | "+id"; + /** @description Use [expand](#expansion) to include additional information in the response. This parameter accepts `projects` that, for each issue type screen schemes, returns information about the projects the issue type screen scheme is assigned to. */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeScreenScheme"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Create issue type screen scheme + * @description Creates an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createIssueTypeScreenScheme: { + /** @description An issue type screen scheme bean. */ + requestBody: { + content: { + /** + * @example { + * "issueTypeMappings": [ + * { + * "issueTypeId": "default", + * "screenSchemeId": "10001" + * }, + * { + * "issueTypeId": "10001", + * "screenSchemeId": "10002" + * }, + * { + * "issueTypeId": "10002", + * "screenSchemeId": "10002" + * } + * ], + * "name": "Scrum issue type screen scheme" + * } + */ + "application/json": components["schemas"]["IssueTypeScreenSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["IssueTypeScreenSchemeId"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type or screen scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type is a sub-task, but sub-tasks are disabled in Jira settings. */ + 409: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue type screen scheme items + * @description Returns a [paginated](#pagination) list of issue type screen scheme items. + * + * Only issue type screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypeScreenSchemeMappings: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of issue type screen scheme IDs. To include multiple issue type screen schemes, separate IDs with ampersand: `issueTypeScreenSchemeId=10000&issueTypeScreenSchemeId=10001`. */ + issueTypeScreenSchemeId?: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeScreenSchemeItem"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Get issue type screen schemes for projects + * @description Returns a [paginated](#pagination) list of issue type screen schemes and, for each issue type screen scheme, a list of the projects that use it. + * + * Only issue type screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypeScreenSchemeProjectAssociations: { + parameters: { + query: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of project IDs. To include multiple projects, separate IDs with ampersand: `projectId=10000&projectId=10001`. */ + projectId: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeScreenSchemesProjects"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Assign issue type screen scheme to project + * @description Assigns an issue type screen scheme to a project. + * + * Issue type screen schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + assignIssueTypeScreenSchemeToProject: { + requestBody: { + content: { + /** + * @example { + * "issueTypeScreenSchemeId": "10001", + * "projectId": "10002" + * } + */ + "application/json": components["schemas"]["IssueTypeScreenSchemeProjectAssociation"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * project is not found. + * * issue type screen scheme is not found. + * * the project is not a classic project. + */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type screen scheme or the project are missing. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update issue type screen scheme + * @description Updates an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateIssueTypeScreenScheme: { + parameters: { + path: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: string; + }; + }; + /** @description The issue type screen scheme update details. */ + requestBody: { + content: { + /** + * @example { + * "description": "Screens for scrum issue types.", + * "name": "Scrum scheme" + * } + */ + "application/json": components["schemas"]["IssueTypeScreenSchemeUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type screen scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete issue type screen scheme + * @description Deletes an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteIssueTypeScreenScheme: { + parameters: { + path: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: string; + }; + }; + responses: { + /** @description Returned if the issue type screen scheme is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the issue type screen scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Append mappings to issue type screen scheme + * @description Appends issue type to screen scheme mappings to an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + appendMappingsForIssueTypeScreenScheme: { + parameters: { + path: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypeMappings": [ + * { + * "issueTypeId": "10000", + * "screenSchemeId": "10001" + * }, + * { + * "issueTypeId": "10001", + * "screenSchemeId": "10002" + * }, + * { + * "issueTypeId": "10002", + * "screenSchemeId": "10002" + * } + * ] + * } + */ + "application/json": components["schemas"]["IssueTypeScreenSchemeMappingDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the issue type screen scheme, issue type, or screen scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type is a sub-task, but sub-tasks are disabled in Jira settings. */ + 409: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update issue type screen scheme default screen scheme + * @description Updates the default screen scheme of an issue type screen scheme. The default screen scheme is used for all unmapped issue types. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateDefaultScreenScheme: { + parameters: { + path: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "screenSchemeId": "10010" + * } + */ + "application/json": components["schemas"]["UpdateDefaultScreenScheme"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type screen scheme or the screen scheme is not found, or the screen scheme isn't used in classic projects. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Remove mappings from issue type screen scheme + * @description Removes issue type to screen scheme mappings from an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeMappingsFromIssueTypeScreenScheme: { + parameters: { + path: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypeIds": [ + * "10000", + * "10001", + * "10004" + * ] + * } + */ + "application/json": components["schemas"]["IssueTypeIds"]; + }; + }; + responses: { + /** @description Returned if the screen scheme mappings are removed from the issue type screen scheme. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type screen scheme or one or more issue type mappings are not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue type screen scheme projects + * @description Returns a [paginated](#pagination) list of projects associated with an issue type screen scheme. + * + * Only company-managed projects associated with an issue type screen scheme are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getProjectsForIssueTypeScreenScheme: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + query?: string; + }; + path: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanProjectDetails"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Get field reference data (GET) + * @description Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom query builder. + * + * To filter visible field details by project or collapse non-unique fields by field type then [Get field reference data (POST)](#api-rest-api-3-jql-autocompletedata-post) can be used. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAutoComplete: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["JQLReferenceData"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get field reference data (POST) + * @description Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom query builder. + * + * This operation can filter the custom fields returned by project. Invalid project IDs in `projectIds` are ignored. System fields are always returned. + * + * It can also return the collapsed field for custom fields. Collapsed fields enable searches to be performed across all fields with the same name and of the same field type. For example, the collapsed field `Component - Component[Dropdown]` enables dropdown fields `Component - cf[10061]` and `Component - cf[10062]` to be searched simultaneously. + * + * **[Permissions](#permissions) required:** None. + */ + getAutoCompletePost: { + requestBody: { + content: { + /** + * @example { + * "includeCollapsedFields": true, + * "projectIds": [ + * 10000, + * 10001, + * 10002 + * ] + * } + */ + "application/json": components["schemas"]["SearchAutoCompleteFilter"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["JQLReferenceData"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get field auto complete suggestions + * @description Returns the JQL search auto complete suggestions for a field. + * + * Suggestions can be obtained by providing: + * + * * `fieldName` to get a list of all values for the field. + * * `fieldName` and `fieldValue` to get a list of values containing the text in `fieldValue`. + * * `fieldName` and `predicateName` to get a list of all predicate values for the field. + * * `fieldName`, `predicateName`, and `predicateValue` to get a list of predicate values containing the text in `predicateValue`. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getFieldAutoCompleteForQueryString: { + parameters: { + query?: { + /** @description The name of the field. */ + fieldName?: string; + /** @description The partial field item name entered by the user. */ + fieldValue?: string; + /** @description The name of the [ CHANGED operator predicate](https://confluence.atlassian.com/x/hQORLQ#Advancedsearching-operatorsreference-CHANGEDCHANGED) for which the suggestions are generated. The valid predicate operators are *by*, *from*, and *to*. */ + predicateName?: string; + /** @description The partial predicate item name entered by the user. */ + predicateValue?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["AutoCompleteSuggestions"]; + }; + }; + /** @description Returned if an invalid combination of parameters is passed. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get precomputations (apps) + * @description Returns the list of a function's precomputations along with information about when they were created, updated, and last used. Each precomputation has a `value` \- the JQL fragment to replace the custom function clause with. + * + * **[Permissions](#permissions) required:** This API is only accessible to apps and apps can only inspect their own functions. + */ + getPrecomputations: { + parameters: { + query?: { + /** + * @description The function key in format: + * + * * Forge: `ari:cloud:ecosystem::extension/[App ID]/[Environment ID]/static/[Function key from manifest]` + * * Connect: `[App key]__[Module key]` + */ + functionKey?: string[]; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** + * @description [Order](#ordering) the results by a field: + * + * * `functionKey` Sorts by the functionKey. + * * `used` Sorts by the used timestamp. + * * `created` Sorts by the created timestamp. + * * `updated` Sorts by the updated timestamp. + */ + orderBy?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanJqlFunctionPrecomputationBean"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request is not authenticated as the app that provided the function. */ + 403: { + content: never; + }; + /** @description Returned if the function is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update precomputations (apps) + * @description Update the precomputation value of a function created by a Forge/Connect app. + * + * **[Permissions](#permissions) required:** An API for apps to update their own precomputations. + */ + updatePrecomputations: { + requestBody: { + content: { + /** + * @example { + * "values": [ + * { + * "id": "f2ef228b-367f-4c6b-bd9d-0d0e96b5bd7b", + * "value": "issue in (TEST-1, TEST-2, TEST-3)" + * }, + * { + * "error": "Error message to be displayed to the user", + * "id": "2a854f11-d0e1-4260-aea8-64a562a7062a" + * } + * ] + * } + */ + "application/json": components["schemas"]["JqlFunctionPrecomputationUpdateRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as the app that provided the function. */ + 403: { + content: never; + }; + /** @description Returned if the function is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Check issues against JQL + * @description Checks whether one or more issues would be returned by one or more JQL queries. + * + * **[Permissions](#permissions) required:** None, however, issues are only matched against JQL queries where the user has: + * + * * *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. + */ + matchIssues: { + requestBody: { + content: { + /** + * @example { + * "issueIds": [ + * 10001, + * 1000, + * 10042 + * ], + * "jqls": [ + * "project = FOO", + * "issuetype = Bug", + * "summary ~ \"some text\" AND project in (FOO, BAR)" + * ] + * } + */ + "application/json": components["schemas"]["IssuesAndJQLQueries"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueMatches"]; + }; + }; + /** @description Returned if `jqls` exceeds the maximum number of JQL queries or `issueIds` exceeds the maximum number of issue IDs. */ + 400: { + content: never; + }; + }; + }; + /** + * Parse JQL query + * @description Parses and validates JQL queries. + * + * Validation is performed in context of the current user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + parseJqlQueries: { + parameters: { + query?: { + /** + * @description How to validate the JQL query and treat the validation results. Validation options include: + * + * * `strict` Returns all errors. If validation fails, the query structure is not returned. + * * `warn` Returns all errors. If validation fails but the JQL query is correctly formed, the query structure is returned. + * * `none` No validation is performed. If JQL query is correctly formed, the query structure is returned. + */ + validation?: "strict" | "warn" | "none"; + }; + }; + requestBody: { + content: { + /** + * @example { + * "queries": [ + * "summary ~ test AND (labels in (urgent, blocker) OR lastCommentedBy = currentUser()) AND status CHANGED AFTER startOfMonth(-1M) ORDER BY updated DESC", + * "issue.property[\"spaces here\"].value in (\"Service requests\", Incidents)", + * "invalid query", + * "summary = test", + * "summary in test", + * "project = INVALID", + * "universe = 42" + * ] + * } + */ + "application/json": components["schemas"]["JqlQueriesToParse"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ParsedJqlQueries"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Convert user identifiers to account IDs in JQL queries + * @description Converts one or more JQL queries with user identifiers (username or user key) to equivalent JQL queries with account IDs. + * + * You may wish to use this operation if your system stores JQL queries and you want to make them GDPR-compliant. For more information about GDPR-related changes, see the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/). + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + migrateQueries: { + requestBody: { + content: { + /** + * @example { + * "queryStrings": [ + * "assignee = mia", + * "issuetype = Bug AND assignee in (mia) AND reporter in (alana) order by lastViewed DESC" + * ] + * } + */ + "application/json": components["schemas"]["JQLPersonalDataMigrationRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. Note that the JQL queries are returned in the same order that they were passed. */ + 200: { + content: { + "application/json": components["schemas"]["ConvertedJQLQueries"]; + }; + }; + /** @description Returned if at least one of the queries cannot be converted. For example, the JQL has invalid operators or invalid keywords, or the users in the query cannot be found. */ + 400: { + content: { + "application/json": string; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": string; + }; + }; + }; + }; + /** + * Sanitize JQL queries + * @description Sanitizes one or more JQL queries by converting readable details into IDs where a user doesn't have permission to view the entity. + * + * For example, if the query contains the clause *project = 'Secret project'*, and a user does not have browse permission for the project "Secret project", the sanitized query replaces the clause with *project = 12345"* (where 12345 is the ID of the project). If a user has the required permission, the clause is not sanitized. If the account ID is null, sanitizing is performed for an anonymous user. + * + * Note that sanitization doesn't make the queries GDPR-compliant, because it doesn't remove user identifiers (username or user key). If you need to make queries GDPR-compliant, use [Convert user identifiers to account IDs in JQL queries](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-jql/#api-rest-api-3-jql-sanitize-post). + * + * Before sanitization each JQL query is parsed. The queries are returned in the same order that they were passed. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + sanitiseJqlQueries: { + requestBody: { + content: { + /** + * @example { + * "queries": [ + * { + * "query": "project = 'Sample project'" + * }, + * { + * "accountId": "5b10ac8d82e05b22cc7d4ef5", + * "query": "project = 'Sample project'" + * }, + * { + * "accountId": "cda2aa1395ac195d951b3387", + * "query": "project = 'Sample project'" + * }, + * { + * "accountId": "5b10ac8d82e05b22cc7d4ef5", + * "query": "invalid query" + * } + * ] + * } + */ + "application/json": components["schemas"]["JqlQueriesToSanitize"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SanitizedJqlQueries"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all labels + * @description Returns a [paginated](#pagination) list of labels. + */ + getAllLabels: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanString"]; + }; + }; + }; + }; + /** + * Get approximate license count + * @description Returns the approximate number of user accounts across all Jira licenses. Note that this information is cached with a 7-day lifecycle and could be stale at the time of call. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getApproximateLicenseCount: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["LicenseMetric"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollections"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollections"]; + }; + }; + }; + }; + /** + * Get approximate application license count + * @description Returns the total approximate number of user accounts for a single Jira license. Note that this information is cached with a 7-day lifecycle and could be stale at the time of call. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getApproximateApplicationLicenseCount: { + parameters: { + path: { + /** @description The ID of the application, represents a specific version of Jira. */ + applicationKey: "jira-core" | "jira-product-discovery" | "jira-software" | "jira-servicedesk"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["LicenseMetric"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get my permissions + * @description Returns a list of permissions indicating which permissions the user has. Details of the user's permissions can be obtained in a global, project, issue or comment context. + * + * The user is reported as having a project permission: + * + * * in the global context, if the user has the project permission in any project. + * * for a project, where the project permission is determined using issue data, if the user meets the permission's criteria for any issue in the project. Otherwise, if the user has the project permission in the project. + * * for an issue, where a project permission is determined using issue data, if the user has the permission in the issue. Otherwise, if the user has the project permission in the project containing the issue. + * * for a comment, where the user has both the permission to browse the comment and the project permission for the comment's parent issue. Only the BROWSE\_PROJECTS permission is supported. If a `commentId` is provided whose `permissions` does not equal BROWSE\_PROJECTS, a 400 error will be returned. + * + * This means that users may be shown as having an issue permission (such as EDIT\_ISSUES) in the global context or a project context but may not have the permission for any or all issues. For example, if Reporters have the EDIT\_ISSUES permission a user would be shown as having this permission in the global context or the context of a project, because any user can be a reporter. However, if they are not the user who reported the issue queried they would not have EDIT\_ISSUES permission for that issue. + * + * Global permissions are unaffected by context. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:permission:jira` + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getMyPermissions: { + parameters: { + query?: { + /** @description The key of project. Ignored if `projectId` is provided. */ + projectKey?: string; + /** @description The ID of project. */ + projectId?: string; + /** @description The key of the issue. Ignored if `issueId` is provided. */ + issueKey?: string; + /** @description The ID of the issue. */ + issueId?: string; + /** @description A list of permission keys. (Required) This parameter accepts a comma-separated list. To get the list of available permissions, use [Get all permissions](#api-rest-api-3-permissions-get). */ + permissions?: string; + projectUuid?: string; + projectConfigurationUuid?: string; + /** @description The ID of the comment. */ + commentId?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Permissions"]; + }; + }; + /** @description Returned if `permissions` is empty, contains an invalid key, or does not equal BROWSE\_PROJECTS when commentId is provided. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the project or issue is not found or the user does not have permission to view the project or issue. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get preference + * @description Returns the value of a preference of the current user. + * + * Note that these keys are deprecated: + * + * * *jira.user.locale* The locale of the user. By default this is not set and the user takes the locale of the instance. + * * *jira.user.timezone* The time zone of the user. By default this is not set and the user takes the timezone of the instance. + * + * These system preferences keys will be deprecated by 15/07/2024. You can still retrieve these keys, but it will not have any impact on Notification behaviour. + * + * * *user.notifiy.own.changes* Whether the user gets notified of their own changes. + * * *user.notifications.watcher* Whether the user gets notified when they are watcher. + * * *user.notifications.assignee* Whether the user gets notified when they are assignee. + * * *user.notifications.reporter* Whether the user gets notified when they are reporter. + * * *user.notifications.mentions* Whether the user gets notified when they are mentions. + * + * Use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API to manage timezone and locale instead. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getPreference: { + parameters: { + query: { + /** @description The key of the preference. */ + key: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": string; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the key is not provided or not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set preference + * @description Creates a preference for the user or updates a preference's value by sending a plain text string. For example, `false`. An arbitrary preference can be created with the value containing up to 255 characters. In addition, the following keys define system preferences that can be set or created: + * + * * *user.notifications.mimetype* The mime type used in notifications sent to the user. Defaults to `html`. + * * *user.default.share.private* Whether new [ filters](https://confluence.atlassian.com/x/eQiiLQ) are set to private. Defaults to `true`. + * * *user.keyboard.shortcuts.disabled* Whether keyboard shortcuts are disabled. Defaults to `false`. + * * *user.autowatch.disabled* Whether the user automatically watches issues they create or add a comment to. By default, not set: the user takes the instance autowatch setting. + * + * Note that these keys are deprecated: + * + * * *jira.user.locale* The locale of the user. By default, not set. The user takes the instance locale. + * * *jira.user.timezone* The time zone of the user. By default, not set. The user takes the instance timezone. + * + * These system preferences keys will be deprecated by 15/07/2024. You can still use these keys to create arbitrary preferences, but it will not have any impact on Notification behaviour. + * + * * *user.notifiy.own.changes* Whether the user gets notified of their own changes. + * * *user.notifications.watcher* Whether the user gets notified when they are watcher. + * * *user.notifications.assignee* Whether the user gets notified when they are assignee. + * * *user.notifications.reporter* Whether the user gets notified when they are reporter. + * * *user.notifications.mentions* Whether the user gets notified when they are mentions. + * + * Use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API to manage timezone and locale instead. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + setPreference: { + parameters: { + query: { + /** @description The key of the preference. The maximum length is 255 characters. */ + key: string; + }; + }; + /** @description The value of the preference as a plain text string. The maximum length is 255 characters. */ + requestBody: { + content: { + "application/json": string; + "text/plain": string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the key or value is not provided or invalid. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete preference + * @description Deletes a preference of the user, which restores the default value of system defined settings. + * + * Note that these keys are deprecated: + * + * * *jira.user.locale* The locale of the user. By default, not set. The user takes the instance locale. + * * *jira.user.timezone* The time zone of the user. By default, not set. The user takes the instance timezone. + * + * Use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API to manage timezone and locale instead. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + removePreference: { + parameters: { + query: { + /** @description The key of the preference. */ + key: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the key is not provided or not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get locale + * @description Returns the locale for the user. + * + * If the user has no language preference set (which is the default setting) or this resource is accessed anonymous, the browser locale detected by Jira is returned. Jira detects the browser locale using the *Accept-Language* header in the request. However, if this doesn't match a locale available Jira, the site default locale is returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getLocale: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Locale"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Set locale + * @deprecated + * @description Deprecated, use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API instead. + * + * Sets the locale of the user. The locale must be one supported by the instance of Jira. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + setLocale: { + /** @description The locale defined in a LocaleBean. */ + requestBody: { + content: { + /** + * @example { + * "locale": "en_US" + * } + */ + "application/json": components["schemas"]["Locale"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Delete locale + * @deprecated + * @description Deprecated, use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API instead. + * + * Deletes the locale of the user, which restores the default setting. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + deleteLocale: { + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get current user + * @description Returns details for the current user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getCurrentUser: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about user in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `groups` Returns all groups, including nested groups, the user belongs to. + * * `applicationRoles` Returns the application roles the user is assigned to. + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get notification schemes paginated + * @description Returns a [paginated](#pagination) list of [notification schemes](https://confluence.atlassian.com/x/8YdKLg) ordered by the display name. + * + * *Note that you should allow for events without recipients to appear in responses.* + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, the user must have permission to administer at least one project associated with a notification scheme for it to be returned. + */ + getNotificationSchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of notification schemes IDs to be filtered by */ + id?: string[]; + /** @description The list of projects IDs to be filtered by */ + projectId?: string[]; + /** @description When set to true, returns only the default notification scheme. If you provide project IDs not associated with the default, returns an empty page. The default value is false. */ + onlyDefault?: boolean; + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `all` Returns all expandable information + * * `field` Returns information about any custom fields assigned to receive an event + * * `group` Returns information about any groups assigned to receive an event + * * `notificationSchemeEvents` Returns a list of event associations. This list is returned for all expandable information + * * `projectRole` Returns information about any project roles assigned to receive an event + * * `user` Returns information about any users assigned to receive an event + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. Only returns notification schemes that the user has permission to access. An empty list is returned if the user lacks permission to access all notification schemes. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanNotificationScheme"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create notification scheme + * @description Creates a notification scheme with notifications. You can create up to 1000 notifications per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createNotificationScheme: { + requestBody: { + content: { + /** + * @example { + * "description": "My new scheme description", + * "name": "My new notification scheme", + * "notificationSchemeEvents": [ + * { + * "event": { + * "id": "1" + * }, + * "notifications": [ + * { + * "notificationType": "Group", + * "parameter": "jira-administrators" + * } + * ] + * } + * ] + * } + */ + "application/json": components["schemas"]["CreateNotificationSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["NotificationSchemeId"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get projects using notification schemes paginated + * @description Returns a [paginated](#pagination) mapping of project that have notification scheme assigned. You can provide either one or multiple notification scheme IDs or project IDs to filter by. If you don't provide any, this will return a list of all mappings. Note that only company-managed (classic) projects are supported. This is because team-managed projects don't have a concept of a default notification scheme. The mappings are ordered by projectId. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getNotificationSchemeToProjectMappings: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of notifications scheme IDs to be filtered out */ + notificationSchemeId?: string[]; + /** @description The list of project IDs to be filtered out */ + projectId?: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanNotificationSchemeAndProjectMappingJsonBean"]; + }; + }; + /** @description Returned if search criteria are invalid, strings vs numbers for projectId, notificationSchemeId, startAt and maxResult */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get notification scheme + * @description Returns a [notification scheme](https://confluence.atlassian.com/x/8YdKLg), including the list of events and the recipients who will receive notifications for those events. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, the user must have permission to administer at least one project associated with the notification scheme. + */ + getNotificationScheme: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `all` Returns all expandable information + * * `field` Returns information about any custom fields assigned to receive an event + * * `group` Returns information about any groups assigned to receive an event + * * `notificationSchemeEvents` Returns a list of event associations. This list is returned for all expandable information + * * `projectRole` Returns information about any project roles assigned to receive an event + * * `user` Returns information about any users assigned to receive an event + */ + expand?: string; + }; + path: { + /** @description The ID of the notification scheme. Use [Get notification schemes paginated](#api-rest-api-3-notificationscheme-get) to get a list of notification scheme IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["NotificationScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the notification scheme is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Update notification scheme + * @description Updates a notification scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateNotificationScheme: { + parameters: { + path: { + /** @description The ID of the notification scheme. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "My updated notification scheme description", + * "name": "My updated notification scheme" + * } + */ + "application/json": components["schemas"]["UpdateNotificationSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the notification scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Add notifications to notification scheme + * @description Adds notifications to a notification scheme. You can add up to 1000 notifications per request. + * + * *Deprecated: The notification type `EmailAddress` is no longer supported in Cloud. Refer to the [changelog](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-1031) for more details.* + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addNotifications: { + parameters: { + path: { + /** @description The ID of the notification scheme. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "notificationSchemeEvents": [ + * { + * "event": { + * "id": "1" + * }, + * "notifications": [ + * { + * "notificationType": "Group", + * "parameter": "jira-administrators" + * } + * ] + * } + * ] + * } + */ + "application/json": components["schemas"]["AddNotificationsDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the notification scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Delete notification scheme + * @description Deletes a notification scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteNotificationScheme: { + parameters: { + path: { + /** @description The ID of the notification scheme. */ + notificationSchemeId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the notification scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Remove notification from notification scheme + * @description Removes a notification from a notification scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeNotificationFromNotificationScheme: { + parameters: { + path: { + /** @description The ID of the notification scheme. */ + notificationSchemeId: string; + /** @description The ID of the notification. */ + notificationId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if either the notification scheme or notification isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all permissions + * @description Returns all permissions, including: + * + * * global permissions. + * * project permissions. + * * global permissions added by plugins. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllPermissions: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Permissions"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get bulk permissions + * @description Returns: + * + * * for a list of global permissions, the global permissions granted to a user. + * * for a list of project permissions and lists of projects and issues, for each project permission a list of the projects and issues a user can access or manipulate. + * + * If no account ID is provided, the operation returns details for the logged in user. + * + * Note that: + * + * * Invalid project and issue IDs are ignored. + * * A maximum of 1000 projects and 1000 issues can be checked. + * * Null values in `globalPermissions`, `projectPermissions`, `projectPermissions.projects`, and `projectPermissions.issues` are ignored. + * * Empty strings in `projectPermissions.permissions` are ignored. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:permission:jira` + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) to check the permissions for other users, otherwise none. However, Connect apps can make a call from the app server to the product to obtain permission details for any user, without admin permission. This Connect app ability doesn't apply to calls made using AP.request() in a browser. + */ + getBulkPermissions: { + /** @description Details of the permissions to check. */ + requestBody: { + content: { + /** + * @example { + * "accountId": "5b10a2844c20165700ede21g", + * "globalPermissions": [ + * "ADMINISTER" + * ], + * "projectPermissions": [ + * { + * "issues": [ + * 10010, + * 10011, + * 10012, + * 10013, + * 10014 + * ], + * "permissions": [ + * "EDIT_ISSUES" + * ], + * "projects": [ + * 10001 + * ] + * } + * ] + * } + */ + "application/json": components["schemas"]["BulkPermissionsRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["BulkPermissionGrants"]; + }; + }; + /** + * @description Returned if: + * + * * `projectPermissions` is provided without at least one project permission being provided. + * * an invalid global permission is provided in the global permissions list. + * * an invalid project permission is provided in the project permissions list. + * * more than 1000 valid project IDs or more than 1000 valid issue IDs are provided. + * * an invalid account ID is provided. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get permitted projects + * @description Returns all the projects where the user is granted a list of project permissions. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:permission:jira`, `read:project:jira` + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getPermittedProjects: { + requestBody: { + content: { + "application/json": components["schemas"]["PermissionsKeysBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermittedProjects"]; + }; + }; + /** @description Returned if a project permission is not found. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get all permission schemes + * @description Returns all permission schemes. + * + * ### About permission schemes and grants ### + * + * A permission scheme is a collection of permission grants. A permission grant consists of a `holder` and a `permission`. + * + * #### Holder object #### + * + * The `holder` object contains information about the user or group being granted the permission. For example, the *Administer projects* permission is granted to a group named *Teams in space administrators*. In this case, the type is `"type": "group"`, and the parameter is the group name, `"parameter": "Teams in space administrators"` and the value is group ID, `"value": "ca85fac0-d974-40ca-a615-7af99c48d24f"`. + * + * The `holder` object is defined by the following properties: + * + * * `type` Identifies the user or group (see the list of types below). + * * `parameter` As a group's name can change, use of `value` is recommended. The value of this property depends on the `type`. For example, if the `type` is a group, then you need to specify the group name. + * * `value` The value of this property depends on the `type`. If the `type` is a group, then you need to specify the group ID. For other `type` it has the same value as `parameter` + * + * The following `types` are available. The expected values for `parameter` and `value` are given in parentheses (some types may not have a `parameter` or `value`): + * + * * `anyone` Grant for anonymous users. + * * `applicationRole` Grant for users with access to the specified application (application name, application name). See [Update product access settings](https://confluence.atlassian.com/x/3YxjL) for more information. + * * `assignee` Grant for the user currently assigned to an issue. + * * `group` Grant for the specified group (`parameter` : group name, `value` : group ID). + * * `groupCustomField` Grant for a user in the group selected in the specified custom field (`parameter` : custom field ID, `value` : custom field ID). + * * `projectLead` Grant for a project lead. + * * `projectRole` Grant for the specified project role (`parameter` :project role ID, `value` : project role ID). + * * `reporter` Grant for the user who reported the issue. + * * `sd.customer.portal.only` Jira Service Desk only. Grants customers permission to access the customer portal but not Jira. See [Customizing Jira Service Desk permissions](https://confluence.atlassian.com/x/24dKLg) for more information. + * * `user` Grant for the specified user (`parameter` : user ID - historically this was the userkey but that is deprecated and the account ID should be used, `value` : user ID). + * * `userCustomField` Grant for a user selected in the specified custom field (`parameter` : custom field ID, `value` : custom field ID). + * + * #### Built-in permissions #### + * + * The [built-in Jira permissions](https://confluence.atlassian.com/x/yodKLg) are listed below. Apps can also define custom permissions. See the [project permission](https://developer.atlassian.com/cloud/jira/platform/modules/project-permission/) and [global permission](https://developer.atlassian.com/cloud/jira/platform/modules/global-permission/) module documentation for more information. + * + * **Project permissions** + * + * * `ADMINISTER_PROJECTS` + * * `BROWSE_PROJECTS` + * * `MANAGE_SPRINTS_PERMISSION` (Jira Software only) + * * `SERVICEDESK_AGENT` (Jira Service Desk only) + * * `VIEW_DEV_TOOLS` (Jira Software only) + * * `VIEW_READONLY_WORKFLOW` + * + * **Issue permissions** + * + * * `ASSIGNABLE_USER` + * * `ASSIGN_ISSUES` + * * `CLOSE_ISSUES` + * * `CREATE_ISSUES` + * * `DELETE_ISSUES` + * * `EDIT_ISSUES` + * * `LINK_ISSUES` + * * `MODIFY_REPORTER` + * * `MOVE_ISSUES` + * * `RESOLVE_ISSUES` + * * `SCHEDULE_ISSUES` + * * `SET_ISSUE_SECURITY` + * * `TRANSITION_ISSUES` + * + * **Voters and watchers permissions** + * + * * `MANAGE_WATCHERS` + * * `VIEW_VOTERS_AND_WATCHERS` + * + * **Comments permissions** + * + * * `ADD_COMMENTS` + * * `DELETE_ALL_COMMENTS` + * * `DELETE_OWN_COMMENTS` + * * `EDIT_ALL_COMMENTS` + * * `EDIT_OWN_COMMENTS` + * + * **Attachments permissions** + * + * * `CREATE_ATTACHMENTS` + * * `DELETE_ALL_ATTACHMENTS` + * * `DELETE_OWN_ATTACHMENTS` + * + * **Time tracking permissions** + * + * * `DELETE_ALL_WORKLOGS` + * * `DELETE_OWN_WORKLOGS` + * * `EDIT_ALL_WORKLOGS` + * * `EDIT_OWN_WORKLOGS` + * * `WORK_ON_ISSUES` + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getAllPermissionSchemes: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionSchemes"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create permission scheme + * @description Creates a new permission scheme. You can create a permission scheme with or without defining a set of permission grants. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createPermissionScheme: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are always included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + }; + /** @description The permission scheme to create. */ + requestBody: { + content: { + /** + * @example { + * "description": "description", + * "name": "Example permission scheme", + * "permissions": [ + * { + * "holder": { + * "parameter": "jira-core-users", + * "type": "group", + * "value": "ca85fac0-d974-40ca-a615-7af99c48d24f" + * }, + * "permission": "ADMINISTER_PROJECTS" + * } + * ] + * } + */ + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + responses: { + /** @description Returned if the permission scheme is created. */ + 201: { + content: { + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or the feature is not available in the Jira plan. */ + 403: { + content: never; + }; + }; + }; + /** + * Get permission scheme + * @description Returns a permission scheme. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getPermissionScheme: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + path: { + /** @description The ID of the permission scheme to return. */ + schemeId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the permission scheme is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Update permission scheme + * @description Updates a permission scheme. Below are some important things to note when using this resource: + * + * * If a permissions list is present in the request, then it is set in the permission scheme, overwriting *all existing* grants. + * * If you want to update only the name and description, then do not send a permissions list in the request. + * * Sending an empty list will remove all permission grants from the permission scheme. + * + * If you want to add or delete a permission grant instead of updating the whole list, see [Create permission grant](#api-rest-api-3-permissionscheme-schemeId-permission-post) or [Delete permission scheme entity](#api-rest-api-3-permissionscheme-schemeId-permission-permissionId-delete). + * + * See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more details. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updatePermissionScheme: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are always included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + path: { + /** @description The ID of the permission scheme to update. */ + schemeId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "description", + * "name": "Example permission scheme", + * "permissions": [ + * { + * "holder": { + * "parameter": "jira-core-users", + * "type": "group", + * "value": "ca85fac0-d974-40ca-a615-7af99c48d24f" + * }, + * "permission": "ADMINISTER_PROJECTS" + * } + * ] + * } + */ + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + responses: { + /** @description Returned if the scheme is updated. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the user does not have the necessary permission to update permission schemes. + * * the Jira instance is Jira Core Free or Jira Software Free. Permission schemes cannot be updated on free plans. + */ + 403: { + content: never; + }; + /** @description Returned if the permission scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete permission scheme + * @description Deletes a permission scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deletePermissionScheme: { + parameters: { + path: { + /** @description The ID of the permission scheme being deleted. */ + schemeId: number; + }; + }; + responses: { + /** @description Returned if the permission scheme is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the permission scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get permission scheme grants + * @description Returns all permission grants for a permission scheme. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getPermissionSchemeGrants: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are always included when you specify any value. Expand options include: + * + * * `permissions` Returns all permission grants for each permission scheme. + * * `user` Returns information about the user who is granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `projectRole` Returns information about the project role granted the permission. + * * `field` Returns information about the custom field granted the permission. + * * `all` Returns all expandable information. + */ + expand?: string; + }; + path: { + /** @description The ID of the permission scheme. */ + schemeId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionGrants"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the permission schemes is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Create permission grant + * @description Creates a permission grant in a permission scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createPermissionGrant: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are always included when you specify any value. Expand options include: + * + * * `permissions` Returns all permission grants for each permission scheme. + * * `user` Returns information about the user who is granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `projectRole` Returns information about the project role granted the permission. + * * `field` Returns information about the custom field granted the permission. + * * `all` Returns all expandable information. + */ + expand?: string; + }; + path: { + /** @description The ID of the permission scheme in which to create a new permission grant. */ + schemeId: number; + }; + }; + /** @description The permission grant to create. */ + requestBody: { + content: { + /** + * @example { + * "holder": { + * "parameter": "jira-core-users", + * "type": "group", + * "value": "ca85fac0-d974-40ca-a615-7af99c48d24f" + * }, + * "permission": "ADMINISTER_PROJECTS" + * } + */ + "application/json": components["schemas"]["PermissionGrant"]; + }; + }; + responses: { + /** @description Returned if the scheme permission is created. */ + 201: { + content: { + "application/json": components["schemas"]["PermissionGrant"]; + }; + }; + /** @description Returned if the value for expand is invalid or the same permission grant is present. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get permission scheme grant + * @description Returns a permission grant. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getPermissionSchemeGrant: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are always included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + path: { + /** @description The ID of the permission scheme. */ + schemeId: number; + /** @description The ID of the permission grant. */ + permissionId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionGrant"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the permission scheme or permission grant is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete permission scheme grant + * @description Deletes a permission grant from a permission scheme. See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more details. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deletePermissionSchemeEntity: { + parameters: { + path: { + /** @description The ID of the permission scheme to delete the permission grant from. */ + schemeId: number; + /** @description The ID of the permission grant to delete. */ + permissionId: number; + }; + }; + responses: { + /** @description Returned if the permission grant is deleted. */ + 204: { + content: never; + }; + /** @description Returned if permission grant with the provided ID is not found. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get priorities + * @deprecated + * @description Returns the list of all issue priorities. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getPriorities: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Priority"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Create priority + * @description Creates an issue priority. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createPriority: { + requestBody: { + content: { + /** + * @example { + * "description": "My priority description", + * "iconUrl": "images/icons/priorities/major.png", + * "name": "My new priority", + * "statusColor": "#ABCDEF" + * } + */ + "application/json": components["schemas"]["CreatePriorityDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["PriorityId"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Set default priority + * @description Sets default issue priority. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setDefaultPriority: { + requestBody: { + content: { + /** + * @example { + * "id": "3" + * } + */ + "application/json": components["schemas"]["SetDefaultPriorityRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue priority isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Move priorities + * @description Changes the order of issue priorities. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + movePriorities: { + requestBody: { + content: { + /** + * @example { + * "after": "10003", + * "ids": [ + * "10004", + * "10005" + * ] + * } + */ + "application/json": components["schemas"]["ReorderIssuePriorities"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue priority isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Search priorities + * @description Returns a [paginated](#pagination) list of priorities. The list can contain all priorities or a subset determined by any combination of these criteria: + * + * * a list of priority IDs. Any invalid priority IDs are ignored. + * * a list of project IDs. Only priorities that are available in these projects will be returned. Any invalid project IDs are ignored. + * * whether the field configuration is a default. This returns priorities from company-managed (classic) projects only, as there is no concept of default priorities in team-managed projects. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + searchPriorities: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of priority IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=2&id=3`. */ + id?: string[]; + /** @description The list of projects IDs. To include multiple IDs, provide an ampersand-separated list. For example, `projectId=10010&projectId=10111`. */ + projectId?: string[]; + /** @description The name of priority to search for. */ + priorityName?: string; + /** @description Whether only the default priority is returned. */ + onlyDefault?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanPriority"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get priority + * @description Returns an issue priority. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getPriority: { + parameters: { + path: { + /** @description The ID of the issue priority. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Priority"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the issue priority isn't found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update priority + * @description Updates an issue priority. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updatePriority: { + parameters: { + path: { + /** @description The ID of the issue priority. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "My updated priority description", + * "iconUrl": "images/icons/priorities/minor.png", + * "name": "My updated priority", + * "statusColor": "#123456" + * } + */ + "application/json": components["schemas"]["UpdatePriorityDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue priority isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Delete priority + * @deprecated + * @description *Deprecated: please refer to the* [changelog](https://developer.atlassian.com/changelog/#CHANGE-1066) *for more details.* + * + * Deletes an issue priority. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deletePriority: { + parameters: { + query: { + /** @description The ID of the issue priority that will replace the currently selected resolution. */ + replaceWith: string; + }; + path: { + /** @description The ID of the issue priority. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue priority isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if a task to delete the issue priority is already running. */ + 409: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all projects + * @deprecated + * @description Returns all projects visible to the user. Deprecated, use [ Get projects paginated](#api-rest-api-3-project-search-get) that supports search and pagination. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Projects are returned only where the user has *Browse Projects* or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getAllProjects: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expanded options include: + * + * * `description` Returns the project description. + * * `issueTypes` Returns all issue types associated with the project. + * * `lead` Returns information about the project lead. + * * `projectKeys` Returns all project keys associated with the project. + */ + expand?: string; + /** @description Returns the user's most recently accessed projects. You may specify the number of results to return up to a maximum of 20. If access is anonymous, then the recently accessed projects are based on the current HTTP session. */ + recent?: number; + /** @description A list of project properties to return for the project. This parameter accepts a comma-separated list. */ + properties?: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Project"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create project + * @description Creates a project based on a project type template, as shown in the following table: + * + * | Project Type Key | Project Template Key | + * |--|--| + * | `business` | `com.atlassian.jira-core-project-templates:jira-core-simplified-content-management`, `com.atlassian.jira-core-project-templates:jira-core-simplified-document-approval`, `com.atlassian.jira-core-project-templates:jira-core-simplified-lead-tracking`, `com.atlassian.jira-core-project-templates:jira-core-simplified-process-control`, `com.atlassian.jira-core-project-templates:jira-core-simplified-procurement`, `com.atlassian.jira-core-project-templates:jira-core-simplified-project-management`, `com.atlassian.jira-core-project-templates:jira-core-simplified-recruitment`, `com.atlassian.jira-core-project-templates:jira-core-simplified-task-tracking` | + * | `service_desk` | `com.atlassian.servicedesk:simplified-it-service-management`, `com.atlassian.servicedesk:simplified-general-service-desk-it`, `com.atlassian.servicedesk:simplified-general-service-desk-business`, `com.atlassian.servicedesk:simplified-external-service-desk`, `com.atlassian.servicedesk:simplified-hr-service-desk`, `com.atlassian.servicedesk:simplified-facilities-service-desk`, `com.atlassian.servicedesk:simplified-legal-service-desk`, `com.atlassian.servicedesk:simplified-analytics-service-desk`, `com.atlassian.servicedesk:simplified-marketing-service-desk`, `com.atlassian.servicedesk:simplified-design-service-desk`, `com.atlassian.servicedesk:simplified-sales-service-desk`, `com.atlassian.servicedesk:simplified-blank-project-business`, `com.atlassian.servicedesk:simplified-blank-project-it`, `com.atlassian.servicedesk:simplified-finance-service-desk`, `com.atlassian.servicedesk:next-gen-it-service-desk`, `com.atlassian.servicedesk:next-gen-hr-service-desk`, `com.atlassian.servicedesk:next-gen-legal-service-desk`, `com.atlassian.servicedesk:next-gen-marketing-service-desk`, `com.atlassian.servicedesk:next-gen-facilities-service-desk`, `com.atlassian.servicedesk:next-gen-general-it-service-desk`, `com.atlassian.servicedesk:next-gen-general-business-service-desk`, `com.atlassian.servicedesk:next-gen-analytics-service-desk`, `com.atlassian.servicedesk:next-gen-finance-service-desk`, `com.atlassian.servicedesk:next-gen-design-service-desk`, `com.atlassian.servicedesk:next-gen-sales-service-desk` | + * | `software` | `com.pyxis.greenhopper.jira:gh-simplified-agility-kanban`, `com.pyxis.greenhopper.jira:gh-simplified-agility-scrum`, `com.pyxis.greenhopper.jira:gh-simplified-basic`, `com.pyxis.greenhopper.jira:gh-simplified-kanban-classic`, `com.pyxis.greenhopper.jira:gh-simplified-scrum-classic` | + * The project types are available according to the installed Jira features as follows: + * + * * Jira Core, the default, enables `business` projects. + * * Jira Service Management enables `service_desk` projects. + * * Jira Software enables `software` projects. + * + * To determine which features are installed, go to **Jira settings** > **Apps** > **Manage apps** and review the System Apps list. To add Jira Software or Jira Service Management into a JIRA instance, use **Jira settings** > **Apps** > **Finding new apps**. For more information, see [ Managing add-ons](https://confluence.atlassian.com/x/S31NLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createProject: { + /** @description The JSON representation of the project being created. */ + requestBody: { + content: { + /** + * @example { + * "assigneeType": "PROJECT_LEAD", + * "avatarId": 10200, + * "categoryId": 10120, + * "description": "Cloud migration initiative", + * "issueSecurityScheme": 10001, + * "key": "EX", + * "leadAccountId": "5b10a0effa615349cb016cd8", + * "name": "Example", + * "notificationScheme": 10021, + * "permissionScheme": 10011, + * "projectTemplateKey": "com.atlassian.jira-core-project-templates:jira-core-simplified-process-control", + * "projectTypeKey": "business", + * "url": "http://atlassian.com" + * } + */ + "application/json": components["schemas"]["CreateProjectDetails"]; + }; + }; + responses: { + /** @description Returned if the project is created. */ + 201: { + content: { + "application/json": components["schemas"]["ProjectIdentifiers"]; + }; + }; + /** @description Returned if the request is not valid and the project could not be created. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to create projects. */ + 403: { + content: never; + }; + }; + }; + /** + * Get recent projects + * @description Returns a list of up to 20 projects recently viewed by the user that are still visible to the user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Projects are returned only where the user has one of: + * + * * *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getRecent: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expanded options include: + * + * * `description` Returns the project description. + * * `projectKeys` Returns all project keys associated with a project. + * * `lead` Returns information about the project lead. + * * `issueTypes` Returns all issue types associated with the project. + * * `url` Returns the URL associated with the project. + * * `permissions` Returns the permissions associated with the project. + * * `insight` EXPERIMENTAL. Returns the insight details of total issue count and last issue update time for the project. + * * `*` Returns the project with all available expand options. + */ + expand?: string; + /** @description EXPERIMENTAL. A list of project properties to return for the project. This parameter accepts a comma-separated list. Invalid property names are ignored. */ + properties?: components["schemas"]["StringList"][]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Project"][]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get projects paginated + * @description Returns a [paginated](#pagination) list of projects visible to the user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Projects are returned only where the user has one of: + * + * * *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + searchProjects: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** + * @description [Order](#ordering) the results by a field. + * + * * `category` Sorts by project category. A complete list of category IDs is found using [Get all project categories](#api-rest-api-3-projectCategory-get). + * * `issueCount` Sorts by the total number of issues in each project. + * * `key` Sorts by project key. + * * `lastIssueUpdatedTime` Sorts by the last issue update time. + * * `name` Sorts by project name. + * * `owner` Sorts by project lead. + * * `archivedDate` EXPERIMENTAL. Sorts by project archived date. + * * `deletedDate` EXPERIMENTAL. Sorts by project deleted date. + */ + orderBy?: "category" | "-category" | "+category" | "key" | "-key" | "+key" | "name" | "-name" | "+name" | "owner" | "-owner" | "+owner" | "issueCount" | "-issueCount" | "+issueCount" | "lastIssueUpdatedDate" | "-lastIssueUpdatedDate" | "+lastIssueUpdatedDate" | "archivedDate" | "+archivedDate" | "-archivedDate" | "deletedDate" | "+deletedDate" | "-deletedDate"; + /** @description The project IDs to filter the results by. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. Up to 50 project IDs can be provided. */ + id?: number[]; + /** @description The project keys to filter the results by. To include multiple keys, provide an ampersand-separated list. For example, `keys=PA&keys=PB`. Up to 50 project keys can be provided. */ + keys?: string[]; + /** @description Filter the results using a literal string. Projects with a matching `key` or `name` are returned (case insensitive). */ + query?: string; + /** @description Orders results by the [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes). This parameter accepts a comma-separated list. Valid values are `business`, `service_desk`, and `software`. */ + typeKey?: string; + /** @description The ID of the project's category. A complete list of category IDs is found using the [Get all project categories](#api-rest-api-3-projectCategory-get) operation. */ + categoryId?: number; + /** + * @description Filter results by projects for which the user can: + * + * * `view` the project, meaning that they have one of the following permissions: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * `browse` the project, meaning that they have the *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * `edit` the project, meaning that they have one of the following permissions: + * + * * *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * `create` the project, meaning that they have the *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the issue is created. + */ + action?: "view" | "browse" | "edit" | "create"; + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expanded options include: + * + * * `description` Returns the project description. + * * `projectKeys` Returns all project keys associated with a project. + * * `lead` Returns information about the project lead. + * * `issueTypes` Returns all issue types associated with the project. + * * `url` Returns the URL associated with the project. + * * `insight` EXPERIMENTAL. Returns the insight details of total issue count and last issue update time for the project. + */ + expand?: string; + /** + * @description EXPERIMENTAL. Filter results by project status: + * + * * `live` Search live projects. + * * `archived` Search archived projects. + * * `deleted` Search deleted projects, those in the recycle bin. + */ + status?: ("live" | "archived" | "deleted")[]; + /** @description EXPERIMENTAL. A list of project properties to return for the project. This parameter accepts a comma-separated list. */ + properties?: components["schemas"]["StringList"][]; + /** @description EXPERIMENTAL. A query string used to search properties. The query string cannot be specified using a JSON object. For example, to search for the value of `nested` from `{"something":{"nested":1,"other":2}}` use `[thepropertykey].something.nested=1`. Note that the propertyQuery key is enclosed in square brackets to enable searching where the propertyQuery key includes dot (.) or equals (=) characters. Note that `thepropertykey` is only returned when included in `properties`. */ + propertyQuery?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanProject"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if no projects matching the search criteria are found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all project types + * @description Returns all [project types](https://confluence.atlassian.com/x/Var1Nw), whether or not the instance has a valid license for each type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAllProjectTypes: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectType"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get licensed project types + * @description Returns all [project types](https://confluence.atlassian.com/x/Var1Nw) with a valid license. + */ + getAllAccessibleProjectTypes: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectType"][]; + }; + }; + }; + }; + /** + * Get project type by key + * @description Returns a [project type](https://confluence.atlassian.com/x/Var1Nw). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getProjectTypeByKey: { + parameters: { + path: { + /** @description The key of the project type. */ + projectTypeKey: "software" | "service_desk" | "business" | "product_discovery"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectType"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the project type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get accessible project type by key + * @description Returns a [project type](https://confluence.atlassian.com/x/Var1Nw) if it is accessible to the user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getAccessibleProjectTypeByKey: { + parameters: { + path: { + /** @description The key of the project type. */ + projectTypeKey: "software" | "service_desk" | "business" | "product_discovery"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectType"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project type is not accessible to the user. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project + * @description Returns the [project details](https://confluence.atlassian.com/x/ahLpNw) for a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProject: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Note that the project description, issue types, and project lead are included in all responses by default. Expand options include: + * + * * `description` The project description. + * * `issueTypes` The issue types associated with the project. + * * `lead` The project lead. + * * `projectKeys` All project keys associated with the project. + * * `issueTypeHierarchy` The project issue type hierarchy. + */ + expand?: string; + /** @description A list of project properties to return for the project. This parameter accepts a comma-separated list. */ + properties?: string[]; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if successful. */ + 200: { + content: { + "application/json": components["schemas"]["Project"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Update project + * @description Updates the [project details](https://confluence.atlassian.com/x/ahLpNw) of a project. + * + * All parameters are optional in the body of the request. Schemes will only be updated if they are included in the request, any omitted schemes will be left unchanged. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). is only needed when changing the schemes or project key. Otherwise you will only need *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) + */ + updateProject: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Note that the project description, issue types, and project lead are included in all responses by default. Expand options include: + * + * * `description` The project description. + * * `issueTypes` The issue types associated with the project. + * * `lead` The project lead. + * * `projectKeys` All project keys associated with the project. + */ + expand?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + /** @description The project details to be updated. */ + requestBody: { + content: { + /** + * @example { + * "assigneeType": "PROJECT_LEAD", + * "avatarId": 10200, + * "categoryId": 10120, + * "description": "Cloud migration initiative", + * "issueSecurityScheme": 10001, + * "key": "EX", + * "leadAccountId": "5b10a0effa615349cb016cd8", + * "name": "Example", + * "notificationScheme": 10021, + * "permissionScheme": 10011, + * "url": "http://atlassian.com" + * } + */ + "application/json": components["schemas"]["UpdateProjectDetails"]; + }; + }; + responses: { + /** @description Returned if the project is updated. */ + 200: { + content: { + "application/json": components["schemas"]["Project"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the user does not have the necessary permission to update project details. + * * the permission scheme is being changed and the Jira instance is Jira Core Free or Jira Software Free. Permission schemes cannot be changed on free plans. + */ + 403: { + content: never; + }; + /** @description Returned if the project is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete project + * @description Deletes a project. + * + * You can't delete a project if it's archived. To delete an archived project, restore the project and then delete it. To restore a project, use the Jira UI. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteProject: { + parameters: { + query?: { + /** @description Whether this project is placed in the Jira recycle bin where it will be available for restoration. */ + enableUndo?: boolean; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the project is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to delete it. */ + 404: { + content: never; + }; + }; + }; + /** + * Archive project + * @description Archives a project. You can't delete a project if it's archived. To delete an archived project, restore the project and then delete it. To restore a project, use the Jira UI. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + archiveProject: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set project avatar + * @description Sets the avatar displayed for a project. + * + * Use [Load project avatar](#api-rest-api-3-project-projectIdOrKey-avatar2-post) to store avatars against the project, before using this operation to set the displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + updateProjectAvatar: { + parameters: { + path: { + /** @description The ID or (case-sensitive) key of the project. */ + projectIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "id": "10010" + * } + */ + "application/json": components["schemas"]["Avatar"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to administer the project. */ + 403: { + content: never; + }; + /** @description Returned if the project or avatar is not found or the user does not have permission to view the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete project avatar + * @description Deletes a custom avatar from a project. Note that system avatars cannot be deleted. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + deleteProjectAvatar: { + parameters: { + path: { + /** @description The project ID or (case-sensitive) key. */ + projectIdOrKey: string; + /** @description The ID of the avatar. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the avatar is a system avatar or the user does not have permission to administer the project. */ + 403: { + content: never; + }; + /** @description Returned if the project or avatar is not found or the user does not have permission to view the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Load project avatar + * @description Loads an avatar for a project. + * + * Specify the avatar's local file location in the body of the request. Also, include the following headers: + * + * * `X-Atlassian-Token: no-check` To prevent XSRF protection blocking the request, for more information see [Special Headers](#special-request-headers). + * * `Content-Type: image/image type` Valid image types are JPEG, GIF, or PNG. + * + * For example: + * `curl --request POST ` + * + * `--user email@example.com: ` + * + * `--header 'X-Atlassian-Token: no-check' ` + * + * `--header 'Content-Type: image/< image_type>' ` + * + * `--data-binary "<@/path/to/file/with/your/avatar>" ` + * + * `--url 'https://your-domain.atlassian.net/rest/api/3/project/{projectIdOrKey}/avatar2'` + * + * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of the image. The length of the square's sides is set to the smaller of the height or width of the image. + * + * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size. + * + * After creating the avatar use [Set project avatar](#api-rest-api-3-project-projectIdOrKey-avatar-put) to set it as the project's displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + createProjectAvatar: { + parameters: { + query?: { + /** @description The X coordinate of the top-left corner of the crop region. */ + x?: number; + /** @description The Y coordinate of the top-left corner of the crop region. */ + y?: number; + /** @description The length of each side of the crop region. */ + size?: number; + }; + path: { + /** @description The ID or (case-sensitive) key of the project. */ + projectIdOrKey: string; + }; + }; + requestBody: { + content: { + "*/*": unknown; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Avatar"]; + }; + }; + /** + * @description Returned if: + * + * * an image isn't included in the request. + * * the image type is unsupported. + * * the crop parameters extend the crop area beyond the edge of the image. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to administer the project or an anonymous call is made to the operation. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all project avatars + * @description Returns all project avatars, grouped by system and custom avatars. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getAllProjectAvatars: { + parameters: { + path: { + /** @description The ID or (case-sensitive) key of the project. */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectAvatars"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project components paginated + * @description Returns a [paginated](#pagination) list of all components in a project. See the [Get project components](#api-rest-api-3-project-projectIdOrKey-components-get) resource if you want to get a full list of versions without pagination. + * + * If your project uses Compass components, this API will return a list of Compass components that are linked to issues in that project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectComponentsPaginated: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** + * @description [Order](#ordering) the results by a field: + * + * * `description` Sorts by the component description. + * * `issueCount` Sorts by the count of issues associated with the component. + * * `lead` Sorts by the user key of the component's project lead. + * * `name` Sorts by component name. + */ + orderBy?: "description" | "-description" | "+description" | "issueCount" | "-issueCount" | "+issueCount" | "lead" | "-lead" | "+lead" | "name" | "-name" | "+name"; + /** @description The source of the components to return. Can be `jira` (default), `compass` or `auto`. When `auto` is specified, the API will return connected Compass components if the project is opted into Compass, otherwise it will return Jira components. Defaults to `jira`. */ + componentSource?: "jira" | "compass" | "auto"; + /** @description Filter the results using a literal string. Components with a matching `name` or `description` are returned (case insensitive). */ + query?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanComponentWithIssueCount"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project components + * @description Returns all components in a project. See the [Get project components paginated](#api-rest-api-3-project-projectIdOrKey-component-get) resource if you want to get a full list of components with pagination. + * + * If your project uses Compass components, this API will return a paginated list of Compass components that are linked to issues in that project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectComponents: { + parameters: { + query?: { + /** @description The source of the components to return. Can be `jira` (default), `compass` or `auto`. When `auto` is specified, the API will return connected Compass components if the project is opted into Compass, otherwise it will return Jira components. Defaults to `jira`. */ + componentSource?: "jira" | "compass" | "auto"; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectComponent"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete project asynchronously + * @description Deletes a project asynchronously. + * + * This operation is: + * + * * transactional, that is, if part of the delete fails the project is not deleted. + * * [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteProjectAsynchronously: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project features + * @description Returns the list of features for a project. + */ + getFeaturesForProject: { + parameters: { + path: { + /** @description The ID or (case-sensitive) key of the project. */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ContainerForProjectFeatures"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set project feature state + * @description Sets the state of a project feature. + */ + toggleFeatureForProject: { + parameters: { + path: { + /** @description The ID or (case-sensitive) key of the project. */ + projectIdOrKey: string; + /** @description The key of the feature. */ + featureKey: string; + }; + }; + /** @description Details of the feature state change. */ + requestBody: { + content: { + /** + * @example { + * "state": "ENABLED" + * } + */ + "application/json": components["schemas"]["ProjectFeatureState"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ContainerForProjectFeatures"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project or project feature is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project property keys + * @description Returns all [project property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties) keys for the project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectPropertyKeys: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to view the project. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project property + * @description Returns the value of a [project property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property. + */ + getProjectProperty: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The project property key. Use [Get project property keys](#api-rest-api-3-project-projectIdOrKey-properties-get) to get a list of all project property keys. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to view the project. */ + 403: { + content: never; + }; + /** @description Returned if the project or property is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set project property + * @description Sets the value of the [project property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). You can use project properties to store custom data against the project. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the property is created. + */ + setProjectProperty: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The key of the project property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "number": 5, + * "string": "string-value" + * } + */ + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the project property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the project property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the project key or id is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to administer the project. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete project property + * @description Deletes the [property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties) from a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property. + */ + deleteProjectProperty: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The project property key. Use [Get project property keys](#api-rest-api-3-project-projectIdOrKey-properties-get) to get a list of all project property keys. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the project property is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to administer the project. */ + 403: { + content: never; + }; + /** @description Returned if the project or property is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Restore deleted or archived project + * @description Restores a project that has been archived or placed in the Jira recycle bin. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg)for Company managed projects. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project for Team managed projects. + */ + restore: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Project"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project roles for project + * @description Returns a list of [project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) for the project returning the name and self URL for each role. + * + * Note that all project roles are shared with all projects in Jira Cloud. See [Get all project roles](#api-rest-api-3-role-get) for more information. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for any project on the site or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getProjectRoles: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": { + [key: string]: string; + }; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing or if the user lacks administrative permissions for the project. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or or if the user does not have administrative permissions for the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project role for project + * @description Returns a project role's details and actors associated with the project. The list of actors is sorted by display name. + * + * To check whether a user belongs to a role based on their group memberships, use [Get user](#api-rest-api-3-user-get) with the `groups` expand parameter selected. Then check whether the user keys and groups match with the actors returned for the project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getProjectRole: { + parameters: { + query?: { + /** @description Exclude inactive users. */ + excludeInactiveUsers?: boolean; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the project or project role is not found. + * * the user does not have administrative permission. + */ + 404: { + content: never; + }; + }; + }; + /** + * Set actors for project role + * @description Sets the actors for a project role for a project, replacing all existing actors. + * + * To add actors to the project without overwriting the existing list, use [Add actors to project role](#api-rest-api-3-project-projectIdOrKey-role-id-post). + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setActors: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + /** @description The groups or users to associate with the project role for this project. Provide the user account ID, group name, or group ID. As a group's name can change, use of group ID is recommended. */ + requestBody: { + content: { + /** + * @example { + * "categorisedActors": { + * "atlassian-group-role-actor-id": [ + * "952d12c3-5b5b-4d04-bb32-44d383afc4b2" + * ], + * "atlassian-user-role-actor": [ + * "12345678-9abc-def1-2345-6789abcdef12" + * ] + * } + * } + */ + "application/json": components["schemas"]["ProjectRoleActorsUpdateBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. The complete list of actors for the project is returned. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing or if the calling user lacks administrative permissions for the project. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the project is not found. + * * a user or group is not found. + * * a group or user is not active. + */ + 404: { + content: never; + }; + }; + }; + /** + * Add actors to project role + * @description Adds actors to a project role for the project. + * + * To replace all actors for the project, use [Set actors for project role](#api-rest-api-3-project-projectIdOrKey-role-id-put). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addActorUsers: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + /** @description The groups or users to associate with the project role for this project. Provide the user account ID, group name, or group ID. As a group's name can change, use of group ID is recommended. */ + requestBody: { + content: { + /** + * @example { + * "groupId": [ + * "952d12c3-5b5b-4d04-bb32-44d383afc4b2" + * ] + * } + */ + "application/json": components["schemas"]["ActorsMap"]; + }; + }; + responses: { + /** + * @description Returned if the request is successful. The complete list of actors for the project is returned. + * + * For example, the cURL request above adds a group, *jira-developers*. For the response below to be returned as a result of that request, the user *Mia Krystof* would have previously been added as a `user` actor for this project. + */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing or if the calling user lacks administrative permissions for the project. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the project is not found. + * * the user or group is not found. + * * the group or user is not active. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete actors from project role + * @description Deletes actors from a project role for the project. + * + * To remove default actors from the project role, use [Delete default actors from project role](#api-rest-api-3-role-id-actors-delete). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteActor: { + parameters: { + query?: { + /** @description The user account ID of the user to remove from the project role. */ + user?: string; + /** @description The name of the group to remove from the project role. This parameter cannot be used with the `groupId` parameter. As a group's name can change, use of `groupId` is recommended. */ + group?: string; + /** @description The ID of the group to remove from the project role. This parameter cannot be used with the `group` parameter. */ + groupId?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** + * @description Returned if: + * + * * the project or project role is not found. + * * the calling user does not have administrative permission. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get project role details + * @description Returns all [project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) and the details for each role. Note that the list of project roles is common to all projects. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectRoleDetails: { + parameters: { + query?: { + /** @description Whether the roles should be filtered to include only those the user is assigned to. */ + currentMember?: boolean; + excludeConnectAddons?: boolean; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRoleDetails"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or if the user does not have the necessary permissions for the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all statuses for project + * @description Returns the valid statuses for a project. The statuses are grouped by issue type, as each project has a set of valid issue types and each issue type has a set of valid statuses. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getAllStatuses: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeWithStatus"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project versions paginated + * @description Returns a [paginated](#pagination) list of all versions in a project. See the [Get project versions](#api-rest-api-3-project-projectIdOrKey-versions-get) resource if you want to get a full list of versions without pagination. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectVersionsPaginated: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** + * @description [Order](#ordering) the results by a field: + * + * * `description` Sorts by version description. + * * `name` Sorts by version name. + * * `releaseDate` Sorts by release date, starting with the oldest date. Versions with no release date are listed last. + * * `sequence` Sorts by the order of appearance in the user interface. + * * `startDate` Sorts by start date, starting with the oldest date. Versions with no start date are listed last. + */ + orderBy?: "description" | "-description" | "+description" | "name" | "-name" | "+name" | "releaseDate" | "-releaseDate" | "+releaseDate" | "sequence" | "-sequence" | "+sequence" | "startDate" | "-startDate" | "+startDate"; + /** @description Filter the results using a literal string. Versions with matching `name` or `description` are returned (case insensitive). */ + query?: string; + /** @description A list of status values used to filter the results by version status. This parameter accepts a comma-separated list. The status values are `released`, `unreleased`, and `archived`. */ + status?: string; + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `issuesstatus` Returns the number of issues in each status category for each version. + * * `operations` Returns actions that can be performed on the specified version. + * * `driver` Returns the Atlassian account ID of the version driver. + * * `approvers` Returns a list containing the approvers for this version. + */ + expand?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanVersion"]; + }; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project versions + * @description Returns all versions in a project. The response is not paginated. Use [Get project versions paginated](#api-rest-api-3-project-projectIdOrKey-version-get) if you want to get the versions in a project with pagination. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectVersions: { + parameters: { + query?: { + /** @description Use [expand](#expansion) to include additional information in the response. This parameter accepts `operations`, which returns actions that can be performed on the version. */ + expand?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Version"][]; + }; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project's sender email + * @description Returns the [project's sender email address](https://confluence.atlassian.com/x/dolKLg). + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectEmail: { + parameters: { + path: { + /** @description The project ID. */ + projectId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectEmailAddress"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to read project. */ + 403: { + content: never; + }; + /** @description Returned if the project or project's sender email address is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set project's sender email + * @description Sets the [project's sender email address](https://confluence.atlassian.com/x/dolKLg). + * + * If `emailAddress` is an empty string, the default email address is restored. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + updateProjectEmail: { + parameters: { + path: { + /** @description The project ID. */ + projectId: number; + }; + }; + /** @description The project's sender email address to be set. */ + requestBody: { + content: { + /** + * @example { + * "emailAddress": "jira@example.atlassian.net" + * } + */ + "application/json": components["schemas"]["ProjectEmailAddress"]; + }; + }; + responses: { + /** @description Returned if the project's sender email address is successfully set. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid, if the email address is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to administer the project. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project issue type hierarchy + * @deprecated + * @description Get the issue type hierarchy for a next-gen project. + * + * The issue type hierarchy for a project consists of: + * + * * *Epic* at level 1 (optional). + * * One or more issue types at level 0 such as *Story*, *Task*, or *Bug*. Where the issue type *Epic* is defined, these issue types are used to break down the content of an epic. + * * *Subtask* at level -1 (optional). This issue type enables level 0 issue types to be broken down into components. Issues based on a level -1 issue type must have a parent issue. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getHierarchy: { + parameters: { + path: { + /** @description The ID of the project. */ + projectId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectIssueTypeHierarchy"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project issue security scheme + * @description Returns the [issue security scheme](https://confluence.atlassian.com/x/J4lKLg) associated with the project. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or the *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + getProjectIssueSecurityScheme: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SecurityScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is visible to the user but the user doesn't have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project notification scheme + * @description Gets a [notification scheme](https://confluence.atlassian.com/x/8YdKLg) associated with the project. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + getNotificationSchemeForProject: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `all` Returns all expandable information + * * `field` Returns information about any custom fields assigned to receive an event + * * `group` Returns information about any groups assigned to receive an event + * * `notificationSchemeEvents` Returns a list of event associations. This list is returned for all expandable information + * * `projectRole` Returns information about any project roles assigned to receive an event + * * `user` Returns information about any users assigned to receive an event + */ + expand?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["NotificationScheme"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user is not an administrator. */ + 404: { + content: never; + }; + }; + }; + /** + * Get assigned permission scheme + * @description Gets the [permission scheme](https://confluence.atlassian.com/x/yodKLg) associated with the project. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + getAssignedPermissionScheme: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to view the project's configuration. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Assign permission scheme + * @description Assigns a permission scheme with a project. See [Managing project permissions](https://confluence.atlassian.com/x/yodKLg) for more information about permission schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) + */ + assignPermissionScheme: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectKeyOrId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "id": 10000 + * } + */ + "application/json": components["schemas"]["IdBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the user does not have the necessary permission to edit the project's configuration. + * * the Jira instance is Jira Core Free or Jira Software Free. Permission schemes cannot be assigned to projects on free plans. + */ + 403: { + content: never; + }; + /** @description Returned if the project or permission scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project issue security levels + * @description Returns all [issue security](https://confluence.atlassian.com/x/J4lKLg) levels for the project that the user has access to. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project, however, issue security levels are only returned for authenticated user with *Set Issue Security* [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project. + */ + getSecurityLevelsForProject: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectIssueSecurityLevels"]; + }; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all project categories + * @description Returns all project categories. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getAllProjectCategories: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectCategory"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create project category + * @description Creates a project category. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createProjectCategory: { + requestBody: { + content: { + /** + * @example { + * "description": "Created Project Category", + * "name": "CREATED" + * } + */ + "application/json": components["schemas"]["ProjectCategory"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["ProjectCategory"]; + }; + }; + /** + * @description Returned if: + * + * * `name` is not provided or exceeds 255 characters. + * * `description` exceeds 1000 characters. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the project category name is in use. */ + 409: { + content: never; + }; + }; + }; + /** + * Get project category by ID + * @description Returns a project category. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getProjectCategoryById: { + parameters: { + path: { + /** @description The ID of the project category. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectCategory"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project category is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update project category + * @description Updates a project category. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateProjectCategory: { + parameters: { + path: { + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "Updated Project Category", + * "name": "UPDATED" + * } + */ + "application/json": components["schemas"]["ProjectCategory"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["UpdatedProjectCategory"]; + }; + }; + /** + * @description Returned if: + * + * * `name` has been modified and exceeds 255 characters. + * * `description` has been modified and exceeds 1000 characters. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the project category is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete project category + * @description Deletes a project category. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeProjectCategory: { + parameters: { + path: { + /** @description ID of the project category to delete. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the project category is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Validate project key + * @description Validates a project key by confirming the key is a valid string and not in use. + * + * **[Permissions](#permissions) required:** None. + */ + validateProjectKey: { + parameters: { + query?: { + /** @description The project key. */ + key?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get valid project key + * @description Validates a project key and, if the key is invalid or in use, generates a valid random string for the project key. + * + * **[Permissions](#permissions) required:** None. + */ + getValidProjectKey: { + parameters: { + query?: { + /** @description The project key. */ + key?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": string; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get valid project name + * @description Checks that a project name isn't in use. If the name isn't in use, the passed string is returned. If the name is in use, this operation attempts to generate a valid project name based on the one supplied, usually by adding a sequence number. If a valid project name cannot be generated, a 404 response is returned. + * + * **[Permissions](#permissions) required:** None. + */ + getValidProjectName: { + parameters: { + query: { + /** @description The project name. */ + name: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": string; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if a valid project name cannot be generated. */ + 404: { + content: never; + }; + }; + }; + /** + * Get resolutions + * @deprecated + * @description Returns a list of all issue resolution values. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getResolutions: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Resolution"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create resolution + * @description Creates an issue resolution. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createResolution: { + requestBody: { + content: { + /** + * @example { + * "description": "My resolution description", + * "name": "My new resolution" + * } + */ + "application/json": components["schemas"]["CreateResolutionDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["ResolutionId"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Set default resolution + * @description Sets default issue resolution. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setDefaultResolution: { + requestBody: { + content: { + /** + * @example { + * "id": "3" + * } + */ + "application/json": components["schemas"]["SetDefaultResolutionRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue resolution isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Move resolutions + * @description Changes the order of issue resolutions. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + moveResolutions: { + requestBody: { + content: { + /** + * @example { + * "after": "10002", + * "ids": [ + * "10000", + * "10001" + * ] + * } + */ + "application/json": components["schemas"]["ReorderIssueResolutionsRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue resolution isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Search resolutions + * @description Returns a [paginated](#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](#permissions) required:** Permission to access Jira. + */ + searchResolutions: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of resolutions IDs to be filtered out */ + id?: string[]; + /** @description When set to true, return default only, when IDs provided, if none of them is default, return empty page. Default value is false */ + onlyDefault?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanResolutionJsonBean"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get resolution + * @description Returns an issue resolution value. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getResolution: { + parameters: { + path: { + /** @description The ID of the issue resolution value. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Resolution"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue resolution value is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update resolution + * @description Updates an issue resolution. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateResolution: { + parameters: { + path: { + /** @description The ID of the issue resolution. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "My updated resolution description", + * "name": "My updated resolution" + * } + */ + "application/json": components["schemas"]["UpdateResolutionDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue resolution isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Delete resolution + * @description Deletes an issue resolution. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteResolution: { + parameters: { + query: { + /** @description The ID of the issue resolution that will replace the currently selected resolution. */ + replaceWith: string; + }; + path: { + /** @description The ID of the issue resolution. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue resolution isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if a task to delete the issue resolution is already running. */ + 409: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all project roles + * @description Gets a list of all project roles, complete with project role details and default actors. + * + * ### About project roles ### + * + * [Project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) are a flexible way to to associate users and groups with projects. In Jira Cloud, the list of project roles is shared globally with all projects, but each project can have a different set of actors associated with it (unlike groups, which have the same membership throughout all Jira applications). + * + * Project roles are used in [permission schemes](#api-rest-api-3-permissionscheme-get), [email notification schemes](#api-rest-api-3-notificationscheme-get), [issue security levels](#api-rest-api-3-issuesecurityschemes-get), [comment visibility](#api-rest-api-3-comment-list-post), and workflow conditions. + * + * #### Members and actors #### + * + * In the Jira REST API, a member of a project role is called an *actor*. An *actor* is a group or user associated with a project role. + * + * Actors may be set as [default members](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/#Specifying-'default-members'-for-a-project-role) of the project role or set at the project level: + * + * * Default actors: Users and groups that are assigned to the project role for all newly created projects. The default actors can be removed at the project level later if desired. + * * Actors: Users and groups that are associated with a project role for a project, which may differ from the default actors. This enables you to assign a user to different roles in different projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllProjectRoles: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Create project role + * @description Creates a new project role with no [default actors](#api-rest-api-3-resolution-get). You can use the [Add default actors to project role](#api-rest-api-3-role-id-actors-post) operation to add default actors to the project role after creating it. + * + * *Note that although a new project role is available to all projects upon creation, any default actors that are associated with the project role are not added to projects that existed prior to the role being created.*< + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createProjectRole: { + requestBody: { + content: { + /** + * @example { + * "description": "A project role that represents developers in a project", + * "name": "Developers" + * } + */ + "application/json": components["schemas"]["CreateUpdateRoleRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is not valid. The `name` cannot be empty or start or end with whitespace. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if a project role with the provided name already exists. */ + 409: { + content: never; + }; + }; + }; + /** + * Get project role by ID + * @description Gets the project role details and the default actors associated with the role. The list of default actors is sorted by display name. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getProjectRoleById: { + parameters: { + path: { + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Fully update project role + * @description Updates the project role's name and description. You must include both a name and a description in the request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + fullyUpdateProjectRole: { + parameters: { + path: { + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "A project role that represents developers in a project", + * "name": "Developers" + * } + */ + "application/json": components["schemas"]["CreateUpdateRoleRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is not valid. The `name` cannot be empty or start or end with whitespace. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Partial update project role + * @description Updates either the project role's name or its description. + * + * You cannot update both the name and description at the same time using this operation. If you send a request with a name and a description only the name is updated. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + partialUpdateProjectRole: { + parameters: { + path: { + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "A project role that represents developers in a project", + * "name": "Developers" + * } + */ + "application/json": components["schemas"]["CreateUpdateRoleRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete project role + * @description Deletes a project role. You must specify a replacement project role if you wish to delete a project role that is in use. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteProjectRole: { + parameters: { + query?: { + /** @description The ID of the project role that will replace the one being deleted. */ + swap?: number; + }; + path: { + /** @description The ID of the project role to delete. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid or if the replacement project role is not found. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role being deleted is not found. */ + 404: { + content: never; + }; + /** @description Returned if the project role being deleted is in use and a replacement project role is not specified in the request. */ + 409: { + content: never; + }; + }; + }; + /** + * Get default actors for project role + * @description Returns the [default actors](#api-rest-api-3-resolution-get) for the project role. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getProjectRoleActorsForRole: { + parameters: { + path: { + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Add default actors to project role + * @description Adds [default actors](#api-rest-api-3-resolution-get) to a role. You may add groups or users, but you cannot add groups and users in the same request. + * + * Changing a project role's default actors does not affect project role members for projects already created. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addProjectRoleActorsToRole: { + parameters: { + path: { + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "user": [ + * "admin" + * ] + * } + */ + "application/json": components["schemas"]["ActorInputBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete default actors from project role + * @description Deletes the [default actors](#api-rest-api-3-resolution-get) from a project role. You may delete a group or user, but you cannot delete a group and a user in the same request. + * + * Changing a project role's default actors does not affect project role members for projects already created. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteProjectRoleActorsFromRole: { + parameters: { + query?: { + /** @description The user account ID of the user to remove as a default actor. */ + user?: string; + /** @description The group ID of the group to be removed as a default actor. This parameter cannot be used with the `group` parameter. */ + groupId?: string; + /** @description The group name of the group to be removed as a default actor.This parameter cannot be used with the `groupId` parameter. As a group's name can change, use of `groupId` is recommended. */ + group?: string; + }; + path: { + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get screens + * @description Returns a [paginated](#pagination) list of all screens or those specified by one or more screen IDs. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getScreens: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of screen IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. */ + id?: number[]; + /** @description String used to perform a case-insensitive partial match with screen name. */ + queryString?: string; + /** @description The scope filter string. To filter by multiple scope, provide an ampersand-separated list. For example, `scope=GLOBAL&scope=PROJECT`. */ + scope?: ("GLOBAL" | "TEMPLATE" | "PROJECT")[]; + /** + * @description [Order](#ordering) the results by a field: + * + * * `id` Sorts by screen ID. + * * `name` Sorts by screen name. + */ + orderBy?: "name" | "-name" | "+name" | "id" | "-id" | "+id"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanScreen"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Create screen + * @description Creates a screen with a default field tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createScreen: { + requestBody: { + content: { + /** + * @example { + * "description": "Enables changes to resolution and linked issues.", + * "name": "Resolve Security Issue Screen" + * } + */ + "application/json": components["schemas"]["ScreenDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Screen"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Add field to default screen + * @description Adds a field to the default tab of the default screen. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addFieldToDefaultScreen: { + parameters: { + path: { + /** @description The ID of the field. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field it not found or the field is already present. */ + 404: { + content: never; + }; + }; + }; + /** + * Get bulk screen tabs + * @description Returns the list of tabs for a bulk of screens. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getBulkScreenTabs: { + parameters: { + query?: { + /** @description The list of screen IDs. To include multiple screen IDs, provide an ampersand-separated list. For example, `screenId=10000&screenId=10001`. */ + screenId?: number[]; + /** @description The list of tab IDs. To include multiple tab IDs, provide an ampersand-separated list. For example, `tabId=10000&tabId=10001`. */ + tabId?: number[]; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. The maximum number is 100, */ + maxResult?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the screen ID or the tab ID is empty. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Update screen + * @description Updates a screen. Only screens used in classic projects can be updated. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateScreen: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "Enables changes to resolution and linked issues for accessibility related issues.", + * "name": "Resolve Accessibility Issue Screen" + * } + */ + "application/json": components["schemas"]["UpdateScreenDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Screen"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the screen is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete screen + * @description Deletes a screen. A screen cannot be deleted if it is used in a screen scheme, workflow, or workflow draft. + * + * Only screens used in classic projects can be deleted. + */ + deleteScreen: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the screen is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get available screen fields + * @description Returns the fields that can be added to a tab on a screen. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAvailableScreenFields: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ScreenableField"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all screen tabs + * @description Returns the list of tabs for a screen. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen Scheme. + */ + getAllScreenTabs: { + parameters: { + query?: { + /** @description The key of the project. */ + projectKey?: string; + }; + path: { + /** @description The ID of the screen. */ + screenId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ScreenableTab"][]; + }; + }; + /** @description Returned if the screen ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Create screen tab + * @description Creates a tab for a screen. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addScreenTab: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "name": "Fields Tab" + * } + */ + "application/json": components["schemas"]["ScreenableTab"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ScreenableTab"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update screen tab + * @description Updates the name of a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + renameScreenTab: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["ScreenableTab"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ScreenableTab"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen or screen tab is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete screen tab + * @description Deletes a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteScreenTab: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen or screen tab is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all screen tab fields + * @description Returns all fields for a screen tab. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen Scheme. + */ + getAllScreenTabFields: { + parameters: { + query?: { + /** @description The key of the project. */ + projectKey?: string; + }; + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ScreenableField"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen or screen tab is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Add screen tab field + * @description Adds a field to a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addScreenTabField: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "fieldId": "summary" + * } + */ + "application/json": components["schemas"]["AddFieldBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ScreenableField"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen, screen tab, or field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Remove screen tab field + * @description Removes a field from a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeScreenTabField: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + /** @description The ID of the field. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen, screen tab, or field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Move screen tab field + * @description Moves a screen tab field. + * + * If `after` and `position` are provided in the request, `position` is ignored. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + moveScreenTabField: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + /** @description The ID of the field. */ + id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["MoveFieldBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen, screen tab, or field is not found or the field can't be moved to the requested position. */ + 404: { + content: never; + }; + }; + }; + /** + * Move screen tab + * @description Moves a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + moveScreenTab: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + /** @description The position of tab. The base index is 0. */ + pos: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen or screen tab is not found or the position is invalid. */ + 404: { + content: never; + }; + }; + }; + /** + * Get screen schemes + * @description Returns a [paginated](#pagination) list of screen schemes. + * + * Only screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getScreenSchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of screen scheme IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. */ + id?: number[]; + /** @description Use [expand](#expansion) include additional information in the response. This parameter accepts `issueTypeScreenSchemes` that, for each screen schemes, returns information about the issue type screen scheme the screen scheme is assigned to. */ + expand?: string; + /** @description String used to perform a case-insensitive partial match with screen scheme name. */ + queryString?: string; + /** + * @description [Order](#ordering) the results by a field: + * + * * `id` Sorts by screen scheme ID. + * * `name` Sorts by screen scheme name. + */ + orderBy?: "name" | "-name" | "+name" | "id" | "-id" | "+id"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanScreenScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Create screen scheme + * @description Creates a screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createScreenScheme: { + requestBody: { + content: { + /** + * @example { + * "description": "Manage employee data", + * "name": "Employee screen scheme", + * "screens": { + * "default": 10017, + * "edit": 10019, + * "view": 10020 + * } + * } + */ + "application/json": components["schemas"]["ScreenSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["ScreenSchemeId"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if a screen used as one of the screen types in the screen scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update screen scheme + * @description Updates a screen scheme. Only screen schemes used in classic projects can be updated. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateScreenScheme: { + parameters: { + path: { + /** @description The ID of the screen scheme. */ + screenSchemeId: string; + }; + }; + /** @description The screen scheme update details. */ + requestBody: { + content: { + /** + * @example { + * "name": "Employee screen scheme v2", + * "screens": { + * "create": "10019", + * "default": "10018" + * } + * } + */ + "application/json": components["schemas"]["UpdateScreenSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the screen scheme or a screen used as one of the screen types is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete screen scheme + * @description Deletes a screen scheme. A screen scheme cannot be deleted if it is used in an issue type screen scheme. + * + * Only screens schemes used in classic projects can be deleted. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteScreenScheme: { + parameters: { + path: { + /** @description The ID of the screen scheme. */ + screenSchemeId: string; + }; + }; + responses: { + /** @description Returned if the screen scheme is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the screen scheme is used in an issue type screen scheme. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the screen scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Search for issues using JQL (GET) + * @description Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). + * + * If the JQL query expression is too large to be encoded as a query parameter, use the [POST](#api-rest-api-3-search-post) version of this resource. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Issues are included in the response where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + searchForIssuesUsingJql: { + parameters: { + query?: { + /** + * @description The [JQL](https://confluence.atlassian.com/x/egORLQ) that defines the search. Note: + * + * * If no JQL expression is provided, all issues are returned. + * * `username` and `userkey` cannot be used as search terms due to privacy reasons. Use `accountId` instead. + * * If a user has hidden their email address in their user profile, partial matches of the email address will not find the user. An exact match is required. + */ + jql?: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. To manage page size, Jira may return fewer items per page where a large number of fields are requested. The greatest number of items returned per page is achieved when requesting `id` or `key` only. */ + maxResults?: number; + /** + * @description Determines how to validate the JQL query and treat the validation results. Supported values are: + * + * * `strict` Returns a 400 response code if any errors are found, along with a list of all errors (and warnings). + * * `warn` Returns all errors as warnings. + * * `none` No validation is performed. + * * `true` *Deprecated* A legacy synonym for `strict`. + * * `false` *Deprecated* A legacy synonym for `warn`. + * + * Note: If the JQL is not correctly formed a 400 response code is returned, regardless of the `validateQuery` value. + */ + validateQuery?: "strict" | "warn" | "none" | "true" | "false"; + /** + * @description A list of fields to return for each issue, use it to retrieve a subset of fields. This parameter accepts a comma-separated list. Expand options include: + * + * * `*all` Returns all fields. + * * `*navigable` Returns navigable fields. + * * Any issue field, prefixed with a minus to exclude. + * + * Examples: + * + * * `summary,comment` Returns only the summary and comments fields. + * * `-description` Returns all navigable (default) fields except description. + * * `*all,-comment` Returns all fields except comments. + * + * This parameter may be specified multiple times. For example, `fields=field1,field2&fields=field3`. + * + * Note: All navigable fields are returned by default. This differs from [GET issue](#api-rest-api-3-issue-issueIdOrKey-get) where the default is all fields. + */ + fields?: string[]; + /** + * @description Use [expand](#expansion) to include additional information about issues in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `renderedFields` Returns field values rendered in HTML format. + * * `names` Returns the display name of each field. + * * `schema` Returns the schema describing a field type. + * * `transitions` Returns all possible transitions for the issue. + * * `operations` Returns all possible operations for the issue. + * * `editmeta` Returns information about how each field can be edited. + * * `changelog` Returns a list of recent updates to an issue, sorted by date, starting from the most recent. + * * `versionedRepresentations` Instead of `fields`, returns `versionedRepresentations` a JSON array containing each version of a field's value, with the highest numbered item representing the most recent version. + */ + expand?: string; + /** @description A list of issue property keys for issue properties to include in the results. This parameter accepts a comma-separated list. Multiple properties can also be provided using an ampersand separated list. For example, `properties=prop1,prop2&properties=prop3`. A maximum of 5 issue property keys can be specified. */ + properties?: string[]; + /** @description Reference fields by their key (rather than ID). */ + fieldsByKeys?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SearchResults"]; + }; + }; + /** @description Returned if the JQL query is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Search for issues using JQL (POST) + * @description Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). + * + * There is a [GET](#api-rest-api-3-search-get) version of this resource that can be used for smaller JQL query expressions. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Issues are included in the response where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + searchForIssuesUsingJqlPost: { + /** @description A JSON object containing the search request. */ + requestBody: { + content: { + /** + * @example { + * "expand": [ + * "names", + * "schema", + * "operations" + * ], + * "fields": [ + * "summary", + * "status", + * "assignee" + * ], + * "fieldsByKeys": false, + * "jql": "project = HSP", + * "maxResults": 15, + * "startAt": 0 + * } + */ + "application/json": components["schemas"]["SearchRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SearchResults"]; + }; + }; + /** @description Returned if the JQL query is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get issue security level + * @description Returns details of an issue security level. + * + * Use [Get issue security scheme](#api-rest-api-3-issuesecurityschemes-id-get) to obtain the IDs of issue security levels associated with the issue security scheme. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getIssueSecurityLevel: { + parameters: { + path: { + /** @description The ID of the issue security level. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SecurityLevel"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the issue security level is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get Jira instance info + * @description Returns information about the Jira instance. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getServerInfo: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ServerInformation"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get issue navigator default columns + * @description Returns the default issue navigator columns. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueNavigatorDefaultColumns: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ColumnItem"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Set issue navigator default columns + * @description Sets the default issue navigator columns. + * + * The `columns` parameter accepts a navigable field value and is expressed as HTML form data. To specify multiple columns, pass multiple `columns` parameters. For example, in curl: + * + * `curl -X PUT -d columns=summary -d columns=description https://your-domain.atlassian.net/rest/api/3/settings/columns` + * + * If no column details are sent, then all default columns are removed. + * + * A navigable field is one that can be used as a column on the issue navigator. Find details of navigable issue columns using [Get fields](#api-rest-api-3-field-get). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setIssueNavigatorDefaultColumns: { + /** @description A navigable field value. */ + requestBody: { + content: { + "*/*": components["schemas"]["ColumnRequestBody"]; + "multipart/form-data": components["schemas"]["ColumnRequestBody"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** @description Returned if invalid parameters are passed. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if a navigable field value is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all statuses + * @description Returns a list of all statuses associated with active workflows. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getStatuses: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["StatusDetails"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get status + * @description Returns a status. The status must be associated with an active workflow to be returned. + * + * If a name is used on more than one status, only the status found first is returned. Therefore, identifying the status by its ID may be preferable. + * + * This operation can be accessed anonymously. + * + * [Permissions](#permissions) required: None. + */ + getStatus: { + parameters: { + path: { + /** @description The ID or name of the status. */ + idOrName: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["StatusDetails"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the status is not found. + * * the status is not associated with a workflow. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get all status categories + * @description Returns a list of all status categories. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getStatusCategories: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["StatusCategory"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get status category + * @description Returns a status category. Status categories provided a mechanism for categorizing [statuses](#api-rest-api-3-status-idOrName-get). + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getStatusCategory: { + parameters: { + path: { + /** @description The ID or key of the status category. */ + idOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["StatusCategory"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the status category is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Bulk get statuses + * @description Returns a list of the statuses specified by one or more status IDs. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + getStatusesById: { + parameters: { + query: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `usages` Returns the project and issue types that use the status in their workflow. + * * `workflowUsages` Returns the workflows that use the status. + */ + expand?: string; + /** + * @description The list of status IDs. To include multiple IDs, provide an ampersand-separated list. For example, id=10000&id=10001. + * + * Min items `1`, Max items `50` + */ + id: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["JiraStatus"][]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Bulk update statuses + * @description Updates statuses by ID. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + updateStatuses: { + /** @description The list of statuses that will be updated. */ + requestBody: { + content: { + /** + * @example { + * "statuses": [ + * { + * "description": "The issue is resolved", + * "id": "1000", + * "name": "Finished", + * "statusCategory": "DONE" + * } + * ] + * } + */ + "application/json": components["schemas"]["StatusUpdateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + /** @description Returned if another workflow configuration update task is ongoing. */ + 409: { + content: never; + }; + }; + }; + /** + * Bulk create statuses + * @description Creates statuses for a global or project scope. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + createStatuses: { + /** @description Details of the statuses being created and their scope. */ + requestBody: { + content: { + /** + * @example { + * "scope": { + * "project": { + * "id": "1" + * }, + * "type": "PROJECT" + * }, + * "statuses": [ + * { + * "description": "The issue is resolved", + * "name": "Finished", + * "statusCategory": "DONE" + * } + * ] + * } + */ + "application/json": components["schemas"]["StatusCreateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["JiraStatus"][]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + /** @description Returned if another workflow configuration update task is ongoing. */ + 409: { + content: never; + }; + }; + }; + /** + * Bulk delete Statuses + * @description Deletes statuses by ID. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + deleteStatusesById: { + parameters: { + query: { + /** + * @description The list of status IDs. To include multiple IDs, provide an ampersand-separated list. For example, id=10000&id=10001. + * + * Min items `1`, Max items `50` + */ + id: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Search statuses paginated + * @description Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of statuses that match a search on name or project. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + search: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `usages` Returns the project and issue types that use the status in their workflow. + * * `workflowUsages` Returns the workflows that use the status. + */ + expand?: string; + /** @description The project the status is part of or null for global statuses. */ + projectId?: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description Term to match status names against or null to search for all statuses in the search scope. */ + searchString?: string; + /** @description Category of the status to filter by. The supported values are: `TODO`, `IN_PROGRESS`, and `DONE`. */ + statusCategory?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageOfStatuses"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Get task + * @description Returns the status of a [long-running asynchronous task](#async). + * + * When a task has finished, this operation returns the JSON blob applicable to the task. See the documentation of the operation that created the task for details. Task details are not permanently retained. As of September 2019, details are retained for 14 days although this period may change without notice. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024. + * + * * `read:jira-work` + * + * **[Permissions](#permissions) required:** either of: + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * Creator of the task. + */ + getTask: { + parameters: { + path: { + /** @description The ID of the task. */ + taskId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the task is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Cancel task + * @description Cancels a task. + * + * **[Permissions](#permissions) required:** either of: + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * Creator of the task. + */ + cancelTask: { + parameters: { + path: { + /** @description The ID of the task. */ + taskId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 202: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if cancellation of the task is not possible. */ + 400: { + content: { + "application/json": string[]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": string[]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": string[]; + }; + }; + /** @description Returned if the task is not found. */ + 404: { + content: { + "application/json": string[]; + }; + }; + }; + }; + /** + * Get UI modifications + * @description Gets UI modifications. UI modifications can only be retrieved by Forge apps. + * + * **[Permissions](#permissions) required:** None. + */ + getUiModifications: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `data` Returns UI modification data. + * * `contexts` Returns UI modification contexts. + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanUiModificationDetails"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request is not from a Forge app. */ + 403: { + content: never; + }; + }; + }; + /** + * Create UI modification + * @description Creates a UI modification. UI modification can only be created by Forge apps. + * + * Each app can define up to 3000 UI modifications. Each UI modification can define up to 1000 contexts. The same context can be assigned to maximum 100 UI modifications. + * + * **[Permissions](#permissions) required:** + * + * * *None* if the UI modification is created without contexts. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the UI modification is created with contexts. + */ + createUiModification: { + /** @description Details of the UI modification. */ + requestBody: { + content: { + /** + * @example { + * "contexts": [ + * { + * "issueTypeId": "10000", + * "projectId": "10000", + * "viewType": "GIC" + * }, + * { + * "issueTypeId": "10001", + * "projectId": "10000", + * "viewType": "IssueView" + * }, + * { + * "issueTypeId": "10002", + * "projectId": "10000", + * "viewType": null + * } + * ], + * "data": "{field: 'Story Points', config: {hidden: false}}", + * "description": "Reveals Story Points field when any Sprint is selected.", + * "name": "Reveal Story Points" + * } + */ + "application/json": components["schemas"]["CreateUiModificationDetails"]; + }; + }; + responses: { + /** @description Returned if the UI modification is created. */ + 201: { + content: { + "application/json": components["schemas"]["UiModificationIdentifiers"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request is not from a Forge app. */ + 403: { + content: never; + }; + /** @description Returned if a project or an issue type in the context are not found. */ + 404: { + content: { + "application/json": components["schemas"]["DetailedErrorCollection"]; + }; + }; + }; + }; + /** + * Update UI modification + * @description Updates a UI modification. UI modification can only be updated by Forge apps. + * + * Each UI modification can define up to 1000 contexts. The same context can be assigned to maximum 100 UI modifications. + * + * **[Permissions](#permissions) required:** + * + * * *None* if the UI modification is created without contexts. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the UI modification is created with contexts. + */ + updateUiModification: { + parameters: { + path: { + /** @description The ID of the UI modification. */ + uiModificationId: string; + }; + }; + /** @description Details of the UI modification. */ + requestBody: { + content: { + /** + * @example { + * "contexts": [ + * { + * "issueTypeId": "10000", + * "projectId": "10000", + * "viewType": "GIC" + * }, + * { + * "issueTypeId": "10001", + * "projectId": "10000", + * "viewType": "IssueView" + * } + * ], + * "data": "{field: 'Story Points', config: {hidden: true}}", + * "name": "Updated Reveal Story Points" + * } + */ + "application/json": components["schemas"]["UpdateUiModificationDetails"]; + }; + }; + responses: { + /** @description Returned if the UI modification is updated. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request is not from a Forge app. */ + 403: { + content: never; + }; + /** @description Returned if the UI modification, a project or an issue type in the context are not found. */ + 404: { + content: { + "application/json": components["schemas"]["DetailedErrorCollection"]; + }; + }; + }; + }; + /** + * Delete UI modification + * @description Deletes a UI modification. All the contexts that belong to the UI modification are deleted too. UI modification can only be deleted by Forge apps. + * + * **[Permissions](#permissions) required:** None. + */ + deleteUiModification: { + parameters: { + path: { + /** @description The ID of the UI modification. */ + uiModificationId: string; + }; + }; + responses: { + /** @description Returned if the UI modification is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request is not from a Forge app. */ + 403: { + content: never; + }; + /** @description Returned if the UI modification is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get avatars + * @description Returns the system and custom avatars for a project or issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * for custom project avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the avatar belongs to. + * * for custom issue type avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the issue type is used in. + * * for system avatars, none. + */ + getAvatars: { + parameters: { + path: { + /** @description The avatar type. */ + type: "project" | "issuetype"; + /** @description The ID of the item the avatar is associated with. */ + entityId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Avatars"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the avatar type is invalid, the associated item ID is missing, or the item is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Load avatar + * @description Loads a custom avatar for a project or issue type. + * + * Specify the avatar's local file location in the body of the request. Also, include the following headers: + * + * * `X-Atlassian-Token: no-check` To prevent XSRF protection blocking the request, for more information see [Special Headers](#special-request-headers). + * * `Content-Type: image/image type` Valid image types are JPEG, GIF, or PNG. + * + * For example: + * `curl --request POST ` + * + * `--user email@example.com: ` + * + * `--header 'X-Atlassian-Token: no-check' ` + * + * `--header 'Content-Type: image/< image_type>' ` + * + * `--data-binary "<@/path/to/file/with/your/avatar>" ` + * + * `--url 'https://your-domain.atlassian.net/rest/api/3/universal_avatar/type/{type}/owner/{entityId}'` + * + * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of the image. The length of the square's sides is set to the smaller of the height or width of the image. + * + * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size. + * + * After creating the avatar use: + * + * * [Update issue type](#api-rest-api-3-issuetype-id-put) to set it as the issue type's displayed avatar. + * * [Set project avatar](#api-rest-api-3-project-projectIdOrKey-avatar-put) to set it as the project's displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + storeAvatar: { + parameters: { + query: { + /** @description The X coordinate of the top-left corner of the crop region. */ + x?: number; + /** @description The Y coordinate of the top-left corner of the crop region. */ + y?: number; + /** @description The length of each side of the crop region. */ + size: number; + }; + path: { + /** @description The avatar type. */ + type: "project" | "issuetype"; + /** @description The ID of the item the avatar is associated with. */ + entityId: string; + }; + }; + requestBody: { + content: { + "*/*": unknown; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Avatar"]; + }; + }; + /** + * @description Returned if: + * + * * an image isn't included in the request. + * * the image type is unsupported. + * * the crop parameters extend the crop area beyond the edge of the image. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permissions. */ + 403: { + content: never; + }; + /** @description Returned if the avatar type is invalid, the associated item ID is missing, or the item is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete avatar + * @description Deletes an avatar from a project or issue type. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteAvatar: { + parameters: { + path: { + /** @description The avatar type. */ + type: "project" | "issuetype"; + /** @description The ID of the item the avatar is associated with. */ + owningObjectId: string; + /** @description The ID of the avatar. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user does not have permission to delete the avatar, the avatar is not deletable. */ + 403: { + content: never; + }; + /** @description Returned if the avatar type, associated item ID, or avatar ID is invalid. */ + 404: { + content: never; + }; + }; + }; + /** + * Get avatar image by type + * @description Returns the default project or issue type avatar image. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAvatarImageByType: { + parameters: { + query?: { + /** @description The size of the avatar image. If not provided the default size is returned. */ + size?: "xsmall" | "small" | "medium" | "large" | "xlarge"; + /** @description The format to return the avatar image in. If not provided the original content format is returned. */ + format?: "png" | "svg"; + }; + path: { + /** @description The icon type of the avatar. */ + type: "issuetype" | "project"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["StreamingResponseBody"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if an avatar is not found or an avatar matching the requested size is not found. */ + 404: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + }; + }; + /** + * Get avatar image by ID + * @description Returns a project or issue type avatar image by ID. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * For system avatars, none. + * * For custom project avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the avatar belongs to. + * * For custom issue type avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the issue type is used in. + */ + getAvatarImageByID: { + parameters: { + query?: { + /** @description The size of the avatar image. If not provided the default size is returned. */ + size?: "xsmall" | "small" | "medium" | "large" | "xlarge"; + /** @description The format to return the avatar image in. If not provided the original content format is returned. */ + format?: "png" | "svg"; + }; + path: { + /** @description The icon type of the avatar. */ + type: "issuetype" | "project"; + /** @description The ID of the avatar. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["StreamingResponseBody"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if an avatar is not found or an avatar matching the requested size is not found. */ + 404: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + }; + }; + /** + * Get avatar image by owner + * @description Returns the avatar image for a project or issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * For system avatars, none. + * * For custom project avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the avatar belongs to. + * * For custom issue type avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the issue type is used in. + */ + getAvatarImageByOwner: { + parameters: { + query?: { + /** @description The size of the avatar image. If not provided the default size is returned. */ + size?: "xsmall" | "small" | "medium" | "large" | "xlarge"; + /** @description The format to return the avatar image in. If not provided the original content format is returned. */ + format?: "png" | "svg"; + }; + path: { + /** @description The icon type of the avatar. */ + type: "issuetype" | "project"; + /** @description The ID of the project or issue type the avatar belongs to. */ + entityId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["StreamingResponseBody"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if an avatar is not found or an avatar matching the requested size is not found. */ + 404: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + }; + }; + /** + * Get user + * @description Returns a user. + * + * Privacy controls are applied to the response based on the user's preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getUser: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Required. */ + accountId?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide) for details. */ + username?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide) for details. */ + key?: string; + /** + * @description Use [expand](#expansion) to include additional information about users in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `groups` includes all groups and nested groups to which the user belongs. + * * `applicationRoles` includes details of all the applications to which the user has access. + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have the *Browse users and groups* global permission. */ + 403: { + content: never; + }; + /** @description Returned if the user is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Create user + * @description Creates a user. This resource is retained for legacy compatibility. As soon as a more suitable alternative is available this resource will be deprecated. + * + * If the user exists and has access to Jira, the operation returns a 201 status. If the user exists but does not have access to Jira, the operation returns a 400 status. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createUser: { + /** @description Details about the user to be created. */ + requestBody: { + content: { + /** + * @example { + * "emailAddress": "mia@atlassian.com" + * } + */ + "application/json": components["schemas"]["NewUserDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["User"]; + }; + }; + /** @description Returned if the request is invalid or the number of licensed users is exceeded. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Delete user + * @description Deletes a user. If the operation completes successfully then the user is removed from Jira's user base. This operation does not delete the user's Atlassian account. + * + * **[Permissions](#permissions) required:** Site administration (that is, membership of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + removeUser: { + parameters: { + query: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the user cannot be removed. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the user is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Find users assignable to projects + * @description Returns a list of users who can be assigned issues in one or more projects. The list may be restricted to users whose attributes match a string. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that can be assigned issues in the projects. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who can be assigned issues in the projects, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + findBulkAssignableUsers: { + parameters: { + query: { + /** @description A query string that is matched against user attributes, such as `displayName` and `emailAddress`, to find relevant users. The string can match the prefix of the attribute's value. For example, *query=john* matches a user with a `displayName` of *John Smith* and a user with an `emailAddress` of *johnson@example.com*. Required, unless `accountId` is specified. */ + query?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description A query string that is matched exactly against user `accountId`. Required, unless `query` is specified. */ + accountId?: string; + /** @description A list of project keys (case sensitive). This parameter accepts a comma-separated list. */ + projectKeys: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** + * @description Returned if: + * + * * `projectKeys` is missing. + * * `query` or `accountId` is missing. + * * `query` and `accountId` are provided. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if one or more of the projects is not found. */ + 404: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Find users assignable to issues + * @description Returns a list of users that can be assigned to an issue. Use this operation to find the list of users who can be assigned to: + * + * * a new issue, by providing the `projectKeyOrId`. + * * an updated issue, by providing the `issueKey`. + * * to an issue during a transition (workflow action), by providing the `issueKey` and the transition id in `actionDescriptorId`. You can obtain the IDs of an issue's valid transitions using the `transitions` option in the `expand` parameter of [ Get issue](#api-rest-api-3-issue-issueIdOrKey-get). + * + * In all these cases, you can pass an account ID to determine if a user can be assigned to an issue. The user is returned in the response if they can be assigned to the issue or issue transition. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that can be assigned the issue. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who can be assigned the issue, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Assign issues* [project permission](https://confluence.atlassian.com/x/yodKLg) + */ + findAssignableUsers: { + parameters: { + query?: { + /** @description A query string that is matched against user attributes, such as `displayName`, and `emailAddress`, to find relevant users. The string can match the prefix of the attribute's value. For example, *query=john* matches a user with a `displayName` of *John Smith* and a user with an `emailAddress` of *johnson@example.com*. Required, unless `username` or `accountId` is specified. */ + query?: string; + /** @description The sessionId of this request. SessionId is the same until the assignee is set. */ + sessionId?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description A query string that is matched exactly against user `accountId`. Required, unless `query` is specified. */ + accountId?: string; + /** @description The project ID or project key (case sensitive). Required, unless `issueKey` is specified. */ + project?: string; + /** @description The key of the issue. Required, unless `project` is specified. */ + issueKey?: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return. This operation may return less than the maximum number of items even if more are available. The operation fetches users up to the maximum and then, from the fetched users, returns only the users that can be assigned to the issue. */ + maxResults?: number; + /** @description The ID of the transition. */ + actionDescriptorId?: number; + recommend?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** + * @description Returned if: + * + * * `issueKey` or `project` is missing. + * * `query` or `accountId` is missing. + * * `query` and `accountId` are provided. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project, issue, or transition is not found. */ + 404: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Bulk get users + * @description Returns a [paginated](#pagination) list of the users specified by one or more account IDs. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + bulkGetUsers: { + parameters: { + query: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string[]; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string[]; + /** @description The account ID of a user. To specify multiple users, pass multiple `accountId` parameters. For example, `accountId=5b10a2844c20165700ede21g&accountId=5b10ac8d82e05b22cc7d4ef5`. */ + accountId: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanUser"]; + }; + }; + /** @description Returned if `accountID` is missing. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get account IDs for users + * @description Returns the account IDs for the users specified in the `key` or `username` parameters. Note that multiple `key` or `username` parameters can be specified. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + bulkGetUsersMigration: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description Username of a user. To specify multiple users, pass multiple copies of this parameter. For example, `username=fred&username=barney`. Required if `key` isn't provided. Cannot be provided if `key` is present. */ + username?: string[]; + /** @description Key of a user. To specify multiple users, pass multiple copies of this parameter. For example, `key=fred&key=barney`. Required if `username` isn't provided. Cannot be provided if `username` is present. */ + key?: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["UserMigrationBean"][]; + }; + }; + /** @description Returned if `key` or `username` */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get user default columns + * @description Returns the default [issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If `accountId` is not passed in the request, the calling user's details are returned. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLgl), to get the column details for any user. + * * Permission to access Jira, to get the calling user's column details. + */ + getUserDefaultColumns: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This parameter is no longer available See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ColumnItem"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + /** @description Returned if the requested user is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set user default columns + * @description Sets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If an account ID is not passed, the calling user's default columns are set. If no column details are sent, then all default columns are removed. + * + * The parameters for this resource are expressed as HTML form data. For example, in curl: + * + * `curl -X PUT -d columns=summary -d columns=description https://your-domain.atlassian.net/rest/api/3/user/columns?accountId=5b10ac8d82e05b22cc7d4ef5'` + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user. + * * Permission to access Jira, to set the calling user's columns. + */ + setUserColumns: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + }; + }; + /** @description The ID of a column to set. To set multiple columns, send multiple `columns` parameters. */ + requestBody: { + content: { + "*/*": components["schemas"]["UserColumnRequestBody"]; + "multipart/form-data": components["schemas"]["UserColumnRequestBody"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + /** @description Returned if the requested user is not found. */ + 404: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + /** @description Returned if an invalid issue table column ID is sent. */ + 500: { + content: never; + }; + }; + }; + /** + * Reset user default columns + * @description Resets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user to the system default. If `accountId` is not passed, the calling user's default columns are reset. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user. + * * Permission to access Jira, to set the calling user's columns. + */ + resetUserColumns: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + }; + }; + /** + * Get user email + * @description Returns a user's email address. This API is only available to apps approved by Atlassian, according to these [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603). + */ + getUserEmail: { + parameters: { + query: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, `5b10ac8d82e05b22cc7d4ef5`. */ + accountId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["UnrestrictedUserEmail"]; + }; + }; + /** @description Returned if the calling app is not approved to use this API. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing from the request (for example if a user is trying to access this API). */ + 401: { + content: never; + }; + /** @description Returned if a user with the given `accountId` doesn't exist */ + 404: { + content: never; + }; + /** @description Indicates the API is not currently enabled */ + 503: { + content: never; + }; + }; + }; + /** + * Get user email bulk + * @description Returns a user's email address. This API is only available to apps approved by Atlassian, according to these [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603). + */ + getUserEmailBulk: { + parameters: { + query: { + /** @description The account IDs of the users for which emails are required. An `accountId` is an identifier that uniquely identifies the user across all Atlassian products. For example, `5b10ac8d82e05b22cc7d4ef5`. Note, this should be treated as an opaque identifier (that is, do not assume any structure in the value). */ + accountId: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["UnrestrictedUserEmail"]; + }; + }; + /** @description Returned if the calling app is not approved to use this API. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect, or missing from the request (for example if a user is trying to access this API). */ + 401: { + content: never; + }; + /** @description Indicates the API is not currently enabled. */ + 503: { + content: never; + }; + }; + }; + /** + * Get user groups + * @description Returns the groups to which a user belongs. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getUserGroups: { + parameters: { + query: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["GroupName"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have the *Browse users and groups* global permission. */ + 403: { + content: never; + }; + /** @description Returned if the user is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Find users with permissions + * @description Returns a list of users who fulfill these criteria: + * + * * their user attributes match a search string. + * * they have a set of permissions for a project or issue. + * + * If no search string is provided, a list of all users with the permissions is returned. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the search string and have permission for the project or issue. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the search string and have permission for the project or issue, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to get users for any project. + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project, to get users for that project. + */ + findUsersWithAllPermissions: { + parameters: { + query: { + /** @description A query string that is matched against user attributes, such as `displayName` and `emailAddress`, to find relevant users. The string can match the prefix of the attribute's value. For example, *query=john* matches a user with a `displayName` of *John Smith* and a user with an `emailAddress` of *johnson@example.com*. Required, unless `accountId` is specified. */ + query?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description A query string that is matched exactly against user `accountId`. Required, unless `query` is specified. */ + accountId?: string; + /** + * @description A comma separated list of permissions. Permissions can be specified as any: + * + * * permission returned by [Get all permissions](#api-rest-api-3-permissions-get). + * * custom project permission added by Connect apps. + * * (deprecated) one of the following: + * + * * ASSIGNABLE\_USER + * * ASSIGN\_ISSUE + * * ATTACHMENT\_DELETE\_ALL + * * ATTACHMENT\_DELETE\_OWN + * * BROWSE + * * CLOSE\_ISSUE + * * COMMENT\_DELETE\_ALL + * * COMMENT\_DELETE\_OWN + * * COMMENT\_EDIT\_ALL + * * COMMENT\_EDIT\_OWN + * * COMMENT\_ISSUE + * * CREATE\_ATTACHMENT + * * CREATE\_ISSUE + * * DELETE\_ISSUE + * * EDIT\_ISSUE + * * LINK\_ISSUE + * * MANAGE\_WATCHER\_LIST + * * MODIFY\_REPORTER + * * MOVE\_ISSUE + * * PROJECT\_ADMIN + * * RESOLVE\_ISSUE + * * SCHEDULE\_ISSUE + * * SET\_ISSUE\_SECURITY + * * TRANSITION\_ISSUE + * * VIEW\_VERSION\_CONTROL + * * VIEW\_VOTERS\_AND\_WATCHERS + * * VIEW\_WORKFLOW\_READONLY + * * WORKLOG\_DELETE\_ALL + * * WORKLOG\_DELETE\_OWN + * * WORKLOG\_EDIT\_ALL + * * WORKLOG\_EDIT\_OWN + * * WORK\_ISSUE + */ + permissions: string; + /** @description The issue key for the issue. */ + issueKey?: string; + /** @description The project key for the project (case sensitive). */ + projectKey?: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** + * @description Returned if: + * + * * `issueKey` or `projectKey` is missing. + * * `query` or `accountId` is missing. + * * `query` and `accountId` are provided. + * * `permissions` is empty or contains an invalid entry. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue or project is not found. */ + 404: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Find users for picker + * @description Returns a list of users whose attributes match the query term. The returned object includes the `html` field where the matched query term is highlighted with the HTML strong tag. A list of account IDs can be provided to exclude users from the results. + * + * This operation takes the users in the range defined by `maxResults`, up to the thousandth user, and then returns only the users from that range that match the query term. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the query term, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by users without the required permission return search results for an exact name match only. + */ + findUsersForPicker: { + parameters: { + query: { + /** @description A query string that is matched against user attributes, such as `displayName`, and `emailAddress`, to find relevant users. The string can match the prefix of the attribute's value. For example, *query=john* matches a user with a `displayName` of *John Smith* and a user with an `emailAddress` of *johnson@example.com*. */ + query: string; + /** @description The maximum number of items to return. The total number of matched users is returned in `total`. */ + maxResults?: number; + /** @description Include the URI to the user's avatar. */ + showAvatar?: boolean; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + exclude?: string[]; + /** @description A list of account IDs to exclude from the search results. This parameter accepts a comma-separated list. Multiple account IDs can also be provided using an ampersand-separated list. For example, `excludeAccountIds=5b10a2844c20165700ede21g,5b10a0effa615349cb016cd8&excludeAccountIds=5b10ac8d82e05b22cc7d4ef5`. Cannot be provided with `exclude`. */ + excludeAccountIds?: string[]; + avatarSize?: string; + excludeConnectUsers?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["FoundUsers"]; + }; + }; + /** @description Returned if `exclude` and `excludeAccountIds` are provided. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Get user property keys + * @description Returns the keys of all properties for a user. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to access the property keys on any user. + * * Access to Jira, to access the calling user's property keys. + */ + getUserPropertyKeys: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + userKey?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if `accountId` is missing. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + /** @description Returned if the user is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get user property + * @description Returns the value of a user's property. If no property key is provided [Get user property keys](#api-rest-api-3-user-properties-get) is called. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to get a property from any user. + * * Access to Jira, to get a property from the calling user's record. + */ + getUserProperty: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + userKey?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + }; + path: { + /** @description The key of the user's property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if `accountId` is missing. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + /** @description Returned if the user is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set user property + * @description Sets the value of a user's property. Use this resource to store custom data against a user. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to set a property on any user. + * * Access to Jira, to set a property on the calling user's record. + */ + setUserProperty: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + userKey?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + }; + path: { + /** @description The key of the user's property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + /** @description The request containing the value of the property. The value has to a valid, non-empty JSON array. The maximum length is 32768 characters. */ + requestBody: { + content: { + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the user property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the user property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if `accountId` is missing. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + /** @description Returned if the user is not found. */ + 404: { + content: never; + }; + /** @description Returned if the property key is not specified. */ + 405: { + content: never; + }; + }; + }; + /** + * Delete user property + * @description Deletes a property from a user. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to delete a property from any user. + * * Access to Jira, to delete a property from the calling user's record. + */ + deleteUserProperty: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + userKey?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + }; + path: { + /** @description The key of the user's property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the user property is deleted. */ + 204: { + content: never; + }; + /** @description Returned if `accountId` is missing. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + /** @description Returned if the user or the property is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Find users + * @description Returns a list of active users that match the search string and property. + * + * This operation first applies a filter to match the search string and property, and then takes the filtered users in the range defined by `startAt` and `maxResults`, up to the thousandth user. To get all the users who match the search string and property, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * This operation can be accessed anonymously. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls or calls by users without the required permission return empty search results. + */ + findUsers: { + parameters: { + query?: { + /** @description A query string that is matched against user attributes ( `displayName`, and `emailAddress`) to find relevant users. The string can match the prefix of the attribute's value. For example, *query=john* matches a user with a `displayName` of *John Smith* and a user with an `emailAddress` of *johnson@example.com*. Required, unless `accountId` or `property` is specified. */ + query?: string; + username?: string; + /** @description A query string that is matched exactly against a user `accountId`. Required, unless `query` or `property` is specified. */ + accountId?: string; + /** @description The index of the first item to return in a page of filtered results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description A query string used to search properties. Property keys are specified by path, so property keys containing dot (.) or equals (=) characters cannot be used. The query string cannot be specified using a JSON object. Example: To search for the value of `nested` from `{"something":{"nested":1,"other":2}}` use `thepropertykey.something.nested=1`. Required, unless `accountId` or `query` is specified. */ + property?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** + * @description Returned if: + * + * * `accountId`, `query` or `property` is missing. + * * `query` and `accountId` are provided. + * * `property` parameter is not valid. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Find users by query + * @description Finds users with a structured query and returns a [paginated](#pagination) list of user details. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the structured query. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * + * The query statements are: + * + * * `is assignee of PROJ` Returns the users that are assignees of at least one issue in project *PROJ*. + * * `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues *PROJ-1* or *PROJ-2*. + * * `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues *PROJ-1* or *PROJ-2*. + * * `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues *PROJ-1* or *PROJ-2*. + * * `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues *PROJ-1* or *PROJ-2*. + * * `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues *PROJ-1* or *PROJ-2*. + * * `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues *PROJ-1* or *PROJ-2*. + * * `[propertyKey].entity.property.path is "property value"` Returns users with the entity property value. + * + * The list of issues can be extended as needed, as in *(PROJ-1, PROJ-2, ... PROJ-n)*. Statements can be combined using the `AND` and `OR` operators to form more complex queries. For example: + * + * `is assignee of PROJ AND [propertyKey].entity.property.path is "property value"` + */ + findUsersByQuery: { + parameters: { + query: { + /** @description The search query. */ + query: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanUser"]; + }; + }; + /** @description Returned if the query is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the search is timed out. */ + 408: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Find user keys by query + * @description Finds users with a structured query and returns a [paginated](#pagination) list of user keys. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the structured query. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * + * The query statements are: + * + * * `is assignee of PROJ` Returns the users that are assignees of at least one issue in project *PROJ*. + * * `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues *PROJ-1* or *PROJ-2*. + * * `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues *PROJ-1* or *PROJ-2*. + * * `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues *PROJ-1* or *PROJ-2*. + * * `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues *PROJ-1* or *PROJ-2*. + * * `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues *PROJ-1* or *PROJ-2*. + * * `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues *PROJ-1* or *PROJ-2*. + * * `[propertyKey].entity.property.path is "property value"` Returns users with the entity property value. + * + * The list of issues can be extended as needed, as in *(PROJ-1, PROJ-2, ... PROJ-n)*. Statements can be combined using the `AND` and `OR` operators to form more complex queries. For example: + * + * `is assignee of PROJ AND [propertyKey].entity.property.path is "property value"` + */ + findUserKeysByQuery: { + parameters: { + query: { + /** @description The search query. */ + query: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResult?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanUserKey"]; + }; + }; + /** @description Returned if the query is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the search is timed out. */ + 408: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Find users with browse permission + * @description Returns a list of users who fulfill these criteria: + * + * * their user attributes match a search string. + * * they have permission to browse issues. + * + * Use this resource to find users who can browse: + * + * * an issue, by providing the `issueKey`. + * * any issue in a project, by providing the `projectKey`. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the search string and have permission to browse issues. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the search string and have permission to browse issues, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by users without the required permission return empty search results. + */ + findUsersWithBrowsePermission: { + parameters: { + query?: { + /** @description A query string that is matched against user attributes, such as `displayName` and `emailAddress`, to find relevant users. The string can match the prefix of the attribute's value. For example, *query=john* matches a user with a `displayName` of *John Smith* and a user with an `emailAddress` of *johnson@example.com*. Required, unless `accountId` is specified. */ + query?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description A query string that is matched exactly against user `accountId`. Required, unless `query` is specified. */ + accountId?: string; + /** @description The issue key for the issue. Required, unless `projectKey` is specified. */ + issueKey?: string; + /** @description The project key for the project (case sensitive). Required, unless `issueKey` is specified. */ + projectKey?: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** + * @description Returned if: + * + * * `issueKey` or `projectKey` is missing. + * * `query` or `accountId` is missing. + * * `query` and `accountId` are provided. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue or project is not found. */ + 404: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Get all users default + * @description Returns a list of all users, including active users, inactive users and previously deleted users that have an Atlassian account. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllUsersDefault: { + parameters: { + query?: { + /** @description The index of the first item to return. */ + startAt?: number; + /** @description The maximum number of items to return. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the request takes longer than 10 seconds or is interrupted. */ + 409: { + content: never; + }; + }; + }; + /** + * Get all users + * @description Returns a list of all users, including active users, inactive users and previously deleted users that have an Atlassian account. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllUsers: { + parameters: { + query?: { + /** @description The index of the first item to return. */ + startAt?: number; + /** @description The maximum number of items to return. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the request takes longer than 10 seconds or is interrupted. */ + 409: { + content: never; + }; + }; + }; + /** + * Create version + * @description Creates a project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the version is added to. + */ + createVersion: { + requestBody: { + content: { + /** + * @example { + * "archived": false, + * "description": "An excellent version", + * "name": "New Version 1", + * "projectId": 10000, + * "releaseDate": "2010-07-06", + * "released": true + * } + */ + "application/json": components["schemas"]["Version"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Version"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the project is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get version + * @description Returns a project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version. + */ + getVersion: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about version in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `operations` Returns the list of operations available for this version. + * * `issuesstatus` Returns the count of issues in this version for each of the status categories *to do*, *in progress*, *done*, and *unmapped*. The *unmapped* property represents the number of issues with a status other than *to do*, *in progress*, and *done*. + * * `driver` Returns the Atlassian account ID of the version driver. + * * `approvers` Returns a list containing the Atlassian account IDs of approvers for this version. + */ + expand?: string; + }; + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Version"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the version is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Update version + * @description Updates a project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + updateVersion: { + parameters: { + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "archived": false, + * "description": "An excellent version", + * "id": "10000", + * "name": "New Version 1", + * "overdue": true, + * "projectId": 10000, + * "releaseDate": "2010-07-06", + * "released": true, + * "self": "https://your-domain.atlassian.net/rest/api/~ver~/version/10000", + * "userReleaseDate": "6/Jul/2010" + * } + */ + "application/json": components["schemas"]["Version"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Version"]; + }; + }; + /** + * @description Returned if: + * + * * the request is invalid. + * * the user does not have the required permissions. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the version is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete version + * @deprecated + * @description Deletes a project version. + * + * Deprecated, use [ Delete and replace version](#api-rest-api-3-version-id-removeAndSwap-post) that supports swapping version values in custom fields, in addition to the swapping for `fixVersion` and `affectedVersion` provided in this resource. + * + * Alternative versions can be provided to update issues that use the deleted version in `fixVersion` or `affectedVersion`. If alternatives are not provided, occurrences of `fixVersion` and `affectedVersion` that contain the deleted version are cleared. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + deleteVersion: { + parameters: { + query?: { + /** @description The ID of the version to update `fixVersion` to when the field contains the deleted version. The replacement version must be in the same project as the version being deleted and cannot be the version being deleted. */ + moveFixIssuesTo?: string; + /** @description The ID of the version to update `affectedVersion` to when the field contains the deleted version. The replacement version must be in the same project as the version being deleted and cannot be the version being deleted. */ + moveAffectedIssuesTo?: string; + }; + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + responses: { + /** @description Returned if the version is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** + * @description Returned if: + * + * * the authentication credentials are incorrect. + * * the user does not have the required permissions. + */ + 401: { + content: never; + }; + /** @description Returned if the version is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Merge versions + * @description Merges two project versions. The merge is completed by deleting the version specified in `id` and replacing any occurrences of its ID in `fixVersion` with the version ID specified in `moveIssuesTo`. + * + * Consider using [ Delete and replace version](#api-rest-api-3-version-id-removeAndSwap-post) instead. This resource supports swapping version values in `fixVersion`, `affectedVersion`, and custom fields. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + mergeVersions: { + parameters: { + path: { + /** @description The ID of the version to delete. */ + id: string; + /** @description The ID of the version to merge into. */ + moveIssuesTo: string; + }; + }; + responses: { + /** @description Returned if the version is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** + * @description Returned if: + * + * * the authentication credentials are incorrect or missing. + * * the user does not have the required permissions. + */ + 401: { + content: never; + }; + /** @description Returned if the version to be deleted or the version to merge to are not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Move version + * @description Modifies the version's sequence within the project, which affects the display order of the versions in Jira. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* project permission for the project that contains the version. + */ + moveVersion: { + parameters: { + path: { + /** @description The ID of the version to be moved. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "after": "https://your-domain.atlassian.net/rest/api/~ver~/version/10000" + * } + */ + "application/json": components["schemas"]["VersionMoveBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Version"]; + }; + }; + /** + * @description Returned if: + * + * * no body parameters are provided. + * * `after` and `position` are provided. + * * `position` is invalid. + */ + 400: { + content: never; + }; + /** + * @description Returned if: + * + * * the authentication credentials are incorrect or missing + * * the user does not have the required commissions. + */ + 401: { + content: never; + }; + /** @description Returned if the version or move after version are not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get version's related issues count + * @description Returns the following counts for a version: + * + * * Number of issues where the `fixVersion` is set to the version. + * * Number of issues where the `affectedVersion` is set to the version. + * * Number of issues where a version custom field is set to the version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* project permission for the project that contains the version. + */ + getVersionRelatedIssues: { + parameters: { + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["VersionIssueCounts"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the version is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get related work + * @description Returns related work items for the given version id. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version. + */ + getRelatedWork: { + parameters: { + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["VersionRelatedWork"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the version is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + /** @description Returned if reading related work fails */ + 500: { + content: never; + }; + }; + }; + /** + * Update related work + * @description Updates the given related work. You can only update generic link related works via Rest APIs. Any archived version related works can't be edited. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Resolve issues:* and *Edit issues* [Managing project permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the project that contains the version. + */ + updateRelatedWork: { + parameters: { + path: { + /** @description The ID of the version to update the related work on. For the related work id, pass it to the input JSON. */ + id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["VersionRelatedWork"]; + }; + }; + responses: { + /** @description Returned if the request is successful together with updated related work. */ + 200: { + content: { + "application/json": components["schemas"]["VersionRelatedWork"]; + }; + }; + /** @description Returned if the request data is invalid */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the version or the related work is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Create related work + * @description Creates a related work for the given version. You can only create a generic link type of related works via this API. relatedWorkId will be auto-generated UUID, that does not need to be provided. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Resolve issues:* and *Edit issues* [Managing project permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the project that contains the version. + */ + createRelatedWork: { + parameters: { + path: { + id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["VersionRelatedWork"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["VersionRelatedWork"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the version is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete and replace version + * @description Deletes a project version. + * + * Alternative versions can be provided to update issues that use the deleted version in `fixVersion`, `affectedVersion`, or any version picker custom fields. If alternatives are not provided, occurrences of `fixVersion`, `affectedVersion`, and any version picker custom field, that contain the deleted version, are cleared. Any replacement version must be in the same project as the version being deleted and cannot be the version being deleted. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + deleteAndReplaceVersion: { + parameters: { + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["DeleteAndReplaceVersionBean"]; + }; + }; + responses: { + /** @description Returned if the version is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the version to delete is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get version's unresolved issues count + * @description Returns counts of the issues and unresolved issues for the project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* project permission for the project that contains the version. + */ + getVersionUnresolvedIssues: { + parameters: { + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["VersionUnresolvedIssuesCount"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the version is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete related work + * @description Deletes the given related work for the given version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Resolve issues:* and *Edit issues* [Managing project permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the project that contains the version. + */ + deleteRelatedWork: { + parameters: { + path: { + /** @description The ID of the version that the target related work belongs to. */ + versionId: string; + /** @description The ID of the related work to delete. */ + relatedWorkId: string; + }; + }; + responses: { + /** @description Returned if the related work is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** + * @description Returned if + * + * the authentication credentials are incorrect. + */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the version/related work is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get dynamic webhooks for app + * @description Returns a [paginated](#pagination) list of the webhooks registered by the calling app. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + getDynamicWebhooksForApp: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanWebhook"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller isn't an app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Register dynamic webhooks + * @description Registers webhooks. + * + * **NOTE:** for non-public OAuth apps, webhooks are delivered only if there is a match between the app owner and the user who registered a dynamic webhook. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + registerDynamicWebhooks: { + requestBody: { + content: { + /** + * @example { + * "url": "https://your-app.example.com/webhook-received", + * "webhooks": [ + * { + * "events": [ + * "jira:issue_created", + * "jira:issue_updated" + * ], + * "fieldIdsFilter": [ + * "summary", + * "customfield_10029" + * ], + * "jqlFilter": "project = PROJ" + * }, + * { + * "events": [ + * "jira:issue_deleted" + * ], + * "jqlFilter": "project IN (PROJ, EXP) AND status = done" + * }, + * { + * "events": [ + * "issue_property_set" + * ], + * "issuePropertyKeysFilter": [ + * "my-issue-property-key" + * ], + * "jqlFilter": "project = PROJ" + * } + * ] + * } + */ + "application/json": components["schemas"]["WebhookRegistrationDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ContainerForRegisteredWebhooks"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller isn't an app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Delete webhooks by ID + * @description Removes webhooks by ID. Only webhooks registered by the calling app are removed. If webhooks created by other apps are specified, they are ignored. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + deleteWebhookById: { + requestBody: { + content: { + /** + * @example { + * "webhookIds": [ + * 10000, + * 10001, + * 10042 + * ] + * } + */ + "application/json": components["schemas"]["ContainerForWebhookIDs"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 202: { + content: never; + }; + /** @description Returned if the list of webhook IDs is missing. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller isn't an app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get failed webhooks + * @description Returns webhooks that have recently failed to be delivered to the requesting app after the maximum number of retries. + * + * After 72 hours the failure may no longer be returned by this operation. + * + * The oldest failure is returned first. + * + * This method uses a cursor-based pagination. To request the next page use the failure time of the last webhook on the list as the `failedAfter` value or use the URL provided in `next`. + * + * **[Permissions](#permissions) required:** Only [Connect apps](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) can use this operation. + */ + getFailedWebhooks: { + parameters: { + query?: { + /** @description The maximum number of webhooks to return per page. If obeying the maxResults directive would result in records with the same failure time being split across pages, the directive is ignored and all records with the same failure time included on the page. */ + maxResults?: number; + /** @description The time after which any webhook failure must have occurred for the record to be returned, expressed as milliseconds since the UNIX epoch. */ + after?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["FailedWebhooks"]; + }; + }; + /** @description 400 response */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller is not a Connect app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Extend webhook life + * @description Extends the life of webhook. Webhooks registered through the REST API expire after 30 days. Call this operation to keep them alive. + * + * Unrecognized webhook IDs (those that are not found or belong to other apps) are ignored. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + refreshWebhooks: { + requestBody: { + content: { + /** + * @example { + * "webhookIds": [ + * 10000, + * 10001, + * 10042 + * ] + * } + */ + "application/json": components["schemas"]["ContainerForWebhookIDs"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WebhooksExpirationDate"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller isn't an app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all workflows + * @deprecated + * @description Returns all workflows in Jira or a workflow. Deprecated, use [Get workflows paginated](#api-rest-api-3-workflow-search-get). + * + * If the `workflowName` parameter is specified, the workflow is returned as an object (not in an array). Otherwise, an array of workflow objects is returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllWorkflows: { + parameters: { + query?: { + /** @description The name of the workflow to be returned. Only one workflow can be specified. */ + workflowName?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DeprecatedWorkflow"][]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 401: { + content: never; + }; + }; + }; + /** + * Create workflow + * @deprecated + * @description Creates a workflow. You can define transition rules using the shapes detailed in the following sections. If no transitional rules are specified the default system transition rules are used. Note: This only applies to company-managed scoped workflows. Use [bulk create workflows](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflows/#api-rest-api-3-workflows-create-post) to create both team and company-managed scoped workflows. + * + * #### Conditions #### + * + * Conditions enable workflow rules that govern whether a transition can execute. + * + * ##### Always false condition ##### + * + * A condition that always fails. + * + * { + * "type": "AlwaysFalseCondition" + * } + * + * ##### Block transition until approval ##### + * + * A condition that blocks issue transition if there is a pending approval. + * + * { + * "type": "BlockInProgressApprovalCondition" + * } + * + * ##### Compare number custom field condition ##### + * + * A condition that allows transition if a comparison between a number custom field and a value is true. + * + * { + * "type": "CompareNumberCFCondition", + * "configuration": { + * "comparator": "=", + * "fieldId": "customfield_10029", + * "fieldValue": 2 + * } + * } + * + * * `comparator` One of the supported comparator: `=`, `>`, and `<`. + * * `fieldId` The custom numeric field ID. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:float` + * * `com.pyxis.greenhopper.jira:jsw-story-points` + * * `fieldValue` The value for comparison. + * + * ##### Hide from user condition ##### + * + * A condition that hides a transition from users. The transition can only be triggered from a workflow function or REST API operation. + * + * { + * "type": "RemoteOnlyCondition" + * } + * + * ##### Only assignee condition ##### + * + * A condition that allows only the assignee to execute a transition. + * + * { + * "type": "AllowOnlyAssignee" + * } + * + * ##### Only Bamboo notifications workflow condition (deprecated) ##### + * + * A condition that makes the transition available only to Bamboo build notifications. + * + * { + * "type": "OnlyBambooNotificationsCondition" + * } + * + * ##### Only reporter condition ##### + * + * A condition that allows only the reporter to execute a transition. + * + * { + * "type": "AllowOnlyReporter" + * } + * + * ##### Permission condition ##### + * + * A condition that allows only users with a permission to execute a transition. + * + * { + * "type": "PermissionCondition", + * "configuration": { + * "permissionKey": "BROWSE_PROJECTS" + * } + * } + * + * * `permissionKey` The permission required to perform the transition. Allowed values: [built-in](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions) or app defined permissions. + * + * ##### Previous status condition ##### + * + * A condition that allows a transition based on whether an issue has or has not transitioned through a status. + * + * { + * "type": "PreviousStatusCondition", + * "configuration": { + * "ignoreLoopTransitions": true, + * "includeCurrentStatus": true, + * "mostRecentStatusOnly": true, + * "reverseCondition": true, + * "previousStatus": { + * "id": "5" + * } + * } + * } + * + * By default this condition allows the transition if the status, as defined by its ID in the `previousStatus` object, matches any previous issue status, unless: + * + * * `ignoreLoopTransitions` is `true`, then loop transitions (from and to the same status) are ignored. + * * `includeCurrentStatus` is `true`, then the current issue status is also checked. + * * `mostRecentStatusOnly` is `true`, then only the issue's preceding status (the one immediately before the current status) is checked. + * * `reverseCondition` is `true`, then the status must not be present. + * + * ##### Separation of duties condition ##### + * + * A condition that prevents a user to perform the transition, if the user has already performed a transition on the issue. + * + * { + * "type": "SeparationOfDutiesCondition", + * "configuration": { + * "fromStatus": { + * "id": "5" + * }, + * "toStatus": { + * "id": "6" + * } + * } + * } + * + * * `fromStatus` OPTIONAL. An object containing the ID of the source status of the transition that is blocked. If omitted any transition to `toStatus` is blocked. + * * `toStatus` An object containing the ID of the target status of the transition that is blocked. + * + * ##### Subtask blocking condition ##### + * + * A condition that blocks transition on a parent issue if any of its subtasks are in any of one or more statuses. + * + * { + * "type": "SubTaskBlockingCondition", + * "configuration": { + * "statuses": [ + * { + * "id": "1" + * }, + * { + * "id": "3" + * } + * ] + * } + * } + * + * * `statuses` A list of objects containing status IDs. + * + * ##### User is in any group condition ##### + * + * A condition that allows users belonging to any group from a list of groups to execute a transition. + * + * { + * "type": "UserInAnyGroupCondition", + * "configuration": { + * "groups": [ + * "administrators", + * "atlassian-addons-admin" + * ] + * } + * } + * + * * `groups` A list of group names. + * + * ##### User is in any project role condition ##### + * + * A condition that allows only users with at least one project roles from a list of project roles to execute a transition. + * + * { + * "type": "InAnyProjectRoleCondition", + * "configuration": { + * "projectRoles": [ + * { + * "id": "10002" + * }, + * { + * "id": "10003" + * }, + * { + * "id": "10012" + * }, + * { + * "id": "10013" + * } + * ] + * } + * } + * + * * `projectRoles` A list of objects containing project role IDs. + * + * ##### User is in custom field condition ##### + * + * A condition that allows only users listed in a given custom field to execute the transition. + * + * { + * "type": "UserIsInCustomFieldCondition", + * "configuration": { + * "allowUserInField": false, + * "fieldId": "customfield_10010" + * } + * } + * + * * `allowUserInField` If `true` only a user who is listed in `fieldId` can perform the transition, otherwise, only a user who is not listed in `fieldId` can perform the transition. + * * `fieldId` The ID of the field containing the list of users. + * + * ##### User is in group condition ##### + * + * A condition that allows users belonging to a group to execute a transition. + * + * { + * "type": "UserInGroupCondition", + * "configuration": { + * "group": "administrators" + * } + * } + * + * * `group` The name of the group. + * + * ##### User is in group custom field condition ##### + * + * A condition that allows users belonging to a group specified in a custom field to execute a transition. + * + * { + * "type": "InGroupCFCondition", + * "configuration": { + * "fieldId": "customfield_10012" + * } + * } + * + * * `fieldId` The ID of the field. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:multigrouppicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:grouppicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:select` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multiselect` + * * `com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes` + * * `com.pyxis.greenhopper.jira:gh-epic-status` + * + * ##### User is in project role condition ##### + * + * A condition that allows users with a project role to execute a transition. + * + * { + * "type": "InProjectRoleCondition", + * "configuration": { + * "projectRole": { + * "id": "10002" + * } + * } + * } + * + * * `projectRole` An object containing the ID of a project role. + * + * ##### Value field condition ##### + * + * A conditions that allows a transition to execute if the value of a field is equal to a constant value or simply set. + * + * { + * "type": "ValueFieldCondition", + * "configuration": { + * "fieldId": "assignee", + * "fieldValue": "qm:6e1ecee6-8e64-4db6-8c85-916bb3275f51:54b56885-2bd2-4381-8239-78263442520f", + * "comparisonType": "NUMBER", + * "comparator": "=" + * } + * } + * + * * `fieldId` The ID of a field used in the comparison. + * * `fieldValue` The expected value of the field. + * * `comparisonType` The type of the comparison. Allowed values: `STRING`, `NUMBER`, `DATE`, `DATE_WITHOUT_TIME`, or `OPTIONID`. + * * `comparator` One of the supported comparator: `>`, `>=`, `=`, `<=`, `<`, `!=`. + * + * **Notes:** + * + * * If you choose the comparison type `STRING`, only `=` and `!=` are valid options. + * * You may leave `fieldValue` empty when comparison type is `!=` to indicate that a value is required in the field. + * * For date fields without time format values as `yyyy-MM-dd`, and for those with time as `yyyy-MM-dd HH:mm`. For example, for July 16 2021 use `2021-07-16`, for 8:05 AM use `2021-07-16 08:05`, and for 4 PM: `2021-07-16 16:00`. + * + * #### Validators #### + * + * Validators check that any input made to the transition is valid before the transition is performed. + * + * ##### Date field validator ##### + * + * A validator that compares two dates. + * + * { + * "type": "DateFieldValidator", + * "configuration": { + * "comparator": ">", + * "date1": "updated", + * "date2": "created", + * "expression": "1d", + * "includeTime": true + * } + * } + * + * * `comparator` One of the supported comparator: `>`, `>=`, `=`, `<=`, `<`, or `!=`. + * * `date1` The date field to validate. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `date2` The second date field. Required, if `expression` is not passed. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `expression` An expression specifying an offset. Required, if `date2` is not passed. Offsets are built with a number, with `-` as prefix for the past, and one of these time units: `d` for day, `w` for week, `m` for month, or `y` for year. For example, -2d means two days into the past and 1w means one week into the future. The `now` keyword enables a comparison with the current date. + * * `includeTime` If `true`, then the time part of the data is included for the comparison. If the field doesn't have a time part, 00:00:00 is used. + * + * ##### Windows date validator ##### + * + * A validator that checks that a date falls on or after a reference date and before or on the reference date plus a number of days. + * + * { + * "type": "WindowsDateValidator", + * "configuration": { + * "date1": "customfield_10009", + * "date2": "created", + * "windowsDays": 5 + * } + * } + * + * * `date1` The date field to validate. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `date2` The reference date. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `windowsDays` A positive integer indicating a number of days. + * + * ##### Field required validator ##### + * + * A validator that checks fields are not empty. By default, if a field is not included in the current context it's ignored and not validated. + * + * { + * "type": "FieldRequiredValidator", + * "configuration": { + * "ignoreContext": true, + * "errorMessage": "Hey", + * "fieldIds": [ + * "versions", + * "customfield_10037", + * "customfield_10003" + * ] + * } + * } + * + * * `ignoreContext` If `true`, then the context is ignored and all the fields are validated. + * * `errorMessage` OPTIONAL. The error message displayed when one or more fields are empty. A default error message is shown if an error message is not provided. + * * `fieldIds` The list of fields to validate. + * + * ##### Field changed validator ##### + * + * A validator that checks that a field value is changed. However, this validation can be ignored for users from a list of groups. + * + * { + * "type": "FieldChangedValidator", + * "configuration": { + * "fieldId": "comment", + * "errorMessage": "Hey", + * "exemptedGroups": [ + * "administrators", + * "atlassian-addons-admin" + * ] + * } + * } + * + * * `fieldId` The ID of a field. + * * `errorMessage` OPTIONAL. The error message displayed if the field is not changed. A default error message is shown if the error message is not provided. + * * `exemptedGroups` OPTIONAL. The list of groups. + * + * ##### Field has single value validator ##### + * + * A validator that checks that a multi-select field has only one value. Optionally, the validation can ignore values copied from subtasks. + * + * { + * "type": "FieldHasSingleValueValidator", + * "configuration": { + * "fieldId": "attachment, + * "excludeSubtasks": true + * } + * } + * + * * `fieldId` The ID of a field. + * * `excludeSubtasks` If `true`, then values copied from subtasks are ignored. + * + * ##### Parent status validator ##### + * + * A validator that checks the status of the parent issue of a subtask. Ìf the issue is not a subtask, no validation is performed. + * + * { + * "type": "ParentStatusValidator", + * "configuration": { + * "parentStatuses": [ + * { + * "id":"1" + * }, + * { + * "id":"2" + * } + * ] + * } + * } + * + * * `parentStatus` The list of required parent issue statuses. + * + * ##### Permission validator ##### + * + * A validator that checks the user has a permission. + * + * { + * "type": "PermissionValidator", + * "configuration": { + * "permissionKey": "ADMINISTER_PROJECTS" + * } + * } + * + * * `permissionKey` The permission required to perform the transition. Allowed values: [built-in](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions) or app defined permissions. + * + * ##### Previous status validator ##### + * + * A validator that checks if the issue has held a status. + * + * { + * "type": "PreviousStatusValidator", + * "configuration": { + * "mostRecentStatusOnly": false, + * "previousStatus": { + * "id": "15" + * } + * } + * } + * + * * `mostRecentStatusOnly` If `true`, then only the issue's preceding status (the one immediately before the current status) is checked. + * * `previousStatus` An object containing the ID of an issue status. + * + * ##### Regular expression validator ##### + * + * A validator that checks the content of a field against a regular expression. + * + * { + * "type": "RegexpFieldValidator", + * "configuration": { + * "regExp": "[0-9]", + * "fieldId": "customfield_10029" + * } + * } + * + * * `regExp`A regular expression. + * * `fieldId` The ID of a field. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:select` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multiselect` + * * `com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes` + * * `com.atlassian.jira.plugin.system.customfieldtypes:textarea` + * * `com.atlassian.jira.plugin.system.customfieldtypes:textfield` + * * `com.atlassian.jira.plugin.system.customfieldtypes:url` + * * `com.atlassian.jira.plugin.system.customfieldtypes:float` + * * `com.pyxis.greenhopper.jira:jsw-story-points` + * * `com.pyxis.greenhopper.jira:gh-epic-status` + * * `description` + * * `summary` + * + * ##### User permission validator ##### + * + * A validator that checks if a user has a permission. Obsolete. You may encounter this validator when getting transition rules and can pass it when updating or creating rules, for example, when you want to duplicate the rules from a workflow on a new workflow. + * + * { + * "type": "UserPermissionValidator", + * "configuration": { + * "permissionKey": "BROWSE_PROJECTS", + * "nullAllowed": false, + * "username": "TestUser" + * } + * } + * + * * `permissionKey` The permission to be validated. Allowed values: [built-in](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions) or app defined permissions. + * * `nullAllowed` If `true`, allows the transition when `username` is empty. + * * `username` The username to validate against the `permissionKey`. + * + * #### Post functions #### + * + * Post functions carry out any additional processing required after a Jira workflow transition is executed. + * + * ##### Fire issue event function ##### + * + * A post function that fires an event that is processed by the listeners. + * + * { + * "type": "FireIssueEventFunction", + * "configuration": { + * "event": { + * "id":"1" + * } + * } + * } + * + * **Note:** If provided, this post function overrides the default `FireIssueEventFunction`. Can be included once in a transition. + * + * * `event` An object containing the ID of the issue event. + * + * ##### Update issue status ##### + * + * A post function that sets issue status to the linked status of the destination workflow status. + * + * { + * "type": "UpdateIssueStatusFunction" + * } + * + * **Note:** This post function is a default function in global and directed transitions. It can only be added to the initial transition and can only be added once. + * + * ##### Create comment ##### + * + * A post function that adds a comment entered during the transition to an issue. + * + * { + * "type": "CreateCommentFunction" + * } + * + * **Note:** This post function is a default function in global and directed transitions. It can only be added to the initial transition and can only be added once. + * + * ##### Store issue ##### + * + * A post function that stores updates to an issue. + * + * { + * "type": "IssueStoreFunction" + * } + * + * **Note:** This post function can only be added to the initial transition and can only be added once. + * + * ##### Assign to current user function ##### + * + * A post function that assigns the issue to the current user if the current user has the `ASSIGNABLE_USER` permission. + * + * { + * "type": "AssignToCurrentUserFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Assign to lead function ##### + * + * A post function that assigns the issue to the project or component lead developer. + * + * { + * "type": "AssignToLeadFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Assign to reporter function ##### + * + * A post function that assigns the issue to the reporter. + * + * { + * "type": "AssignToReporterFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Clear field value function ##### + * + * A post function that clears the value from a field. + * + * { + * "type": "ClearFieldValuePostFunction", + * "configuration": { + * "fieldId": "assignee" + * } + * } + * + * * `fieldId` The ID of the field. + * + * ##### Copy value from other field function ##### + * + * A post function that copies the value of one field to another, either within an issue or from parent to subtask. + * + * { + * "type": "CopyValueFromOtherFieldPostFunction", + * "configuration": { + * "sourceFieldId": "assignee", + * "destinationFieldId": "creator", + * "copyType": "same" + * } + * } + * + * * `sourceFieldId` The ID of the source field. + * * `destinationFieldId` The ID of the destination field. + * * `copyType` Use `same` to copy the value from a field inside the issue, or `parent` to copy the value from the parent issue. + * + * ##### Create Crucible review workflow function (deprecated) ##### + * + * A post function that creates a Crucible review for all unreviewed code for the issue. + * + * { + * "type": "CreateCrucibleReviewWorkflowFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Set issue security level based on user's project role function ##### + * + * A post function that sets the issue's security level if the current user has a project role. + * + * { + * "type": "SetIssueSecurityFromRoleFunction", + * "configuration": { + * "projectRole": { + * "id":"10002" + * }, + * "issueSecurityLevel": { + * "id":"10000" + * } + * } + * } + * + * * `projectRole` An object containing the ID of the project role. + * * `issueSecurityLevel` OPTIONAL. The object containing the ID of the security level. If not passed, then the security level is set to `none`. + * + * ##### Trigger a webhook function ##### + * + * A post function that triggers a webhook. + * + * { + * "type": "TriggerWebhookFunction", + * "configuration": { + * "webhook": { + * "id": "1" + * } + * } + * } + * + * * `webhook` An object containing the ID of the webhook listener to trigger. + * + * ##### Update issue custom field function ##### + * + * A post function that updates the content of an issue custom field. + * + * { + * "type": "UpdateIssueCustomFieldPostFunction", + * "configuration": { + * "mode": "append", + * "fieldId": "customfield_10003", + * "fieldValue": "yikes" + * } + * } + * + * * `mode` Use `replace` to override the field content with `fieldValue` or `append` to add `fieldValue` to the end of the field content. + * * `fieldId` The ID of the field. + * * `fieldValue` The update content. + * + * ##### Update issue field function ##### + * + * A post function that updates a simple issue field. + * + * { + * "type": "UpdateIssueFieldFunction", + * "configuration": { + * "fieldId": "assignee", + * "fieldValue": "5f0c277e70b8a90025a00776" + * } + * } + * + * * `fieldId` The ID of the field. Allowed field types: + * + * * `assignee` + * * `description` + * * `environment` + * * `priority` + * * `resolution` + * * `summary` + * * `timeoriginalestimate` + * * `timeestimate` + * * `timespent` + * * `fieldValue` The update value. + * * If the `fieldId` is `assignee`, the `fieldValue` should be one of these values: + * + * * an account ID. + * * `automatic`. + * * a blank string, which sets the value to `unassigned`. + * + * #### Connect rules #### + * + * Connect rules are conditions, validators, and post functions of a transition that are registered by Connect apps. To create a rule registered by the app, the app must be enabled and the rule's module must exist. + * + * { + * "type": "appKey__moduleKey", + * "configuration": { + * "value":"{\"isValid\":\"true\"}" + * } + * } + * + * * `type` A Connect rule key in a form of `appKey__moduleKey`. + * * `value` The stringified JSON configuration of a Connect rule. + * + * #### Forge rules #### + * + * Forge transition rules are not yet supported. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createWorkflow: { + /** @description The workflow details. */ + requestBody: { + content: { + /** + * @example { + * "description": "This is a workflow used for Stories and Tasks", + * "name": "Workflow 1", + * "statuses": [ + * { + * "id": "1", + * "properties": { + * "jira.issue.editable": "false" + * } + * }, + * { + * "id": "2" + * }, + * { + * "id": "3" + * } + * ], + * "transitions": [ + * { + * "from": [], + * "name": "Created", + * "to": "1", + * "type": "initial" + * }, + * { + * "from": [ + * "1" + * ], + * "name": "In progress", + * "properties": { + * "custom-property": "custom-value" + * }, + * "rules": { + * "conditions": { + * "conditions": [ + * { + * "type": "RemoteOnlyCondition" + * }, + * { + * "configuration": { + * "groups": [ + * "developers", + * "qa-testers" + * ] + * }, + * "type": "UserInAnyGroupCondition" + * } + * ], + * "operator": "AND" + * }, + * "postFunctions": [ + * { + * "type": "AssignToCurrentUserFunction" + * } + * ] + * }, + * "screen": { + * "id": "10001" + * }, + * "to": "2", + * "type": "directed" + * }, + * { + * "name": "Completed", + * "rules": { + * "postFunctions": [ + * { + * "configuration": { + * "fieldId": "assignee" + * }, + * "type": "ClearFieldValuePostFunction" + * } + * ], + * "validators": [ + * { + * "configuration": { + * "parentStatuses": [ + * { + * "id": "3" + * } + * ] + * }, + * "type": "ParentStatusValidator" + * }, + * { + * "configuration": { + * "permissionKey": "ADMINISTER_PROJECTS" + * }, + * "type": "PermissionValidator" + * } + * ] + * }, + * "to": "3", + * "type": "global" + * } + * ] + * } + */ + "application/json": components["schemas"]["CreateWorkflowDetails"]; + }; + }; + responses: { + /** @description Returned if the workflow is created. */ + 201: { + content: { + "application/json": components["schemas"]["WorkflowIDs"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if one or more statuses is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get workflow transition rule configurations + * @description Returns a [paginated](#pagination) list of workflows with transition rules. The workflows can be filtered to return only those containing workflow transition rules: + * + * * of one or more transition rule types, such as [workflow post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/). + * * matching one or more transition rule keys. + * + * Only workflows containing transition rules created by the calling [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app are returned. + * + * Due to server-side optimizations, workflows with an empty list of rules may be returned; these workflows can be ignored. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation. + */ + getWorkflowTransitionRuleConfigurations: { + parameters: { + query: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The types of the transition rules to return. */ + types: ("postfunction" | "condition" | "validator")[]; + /** @description The transition rule class keys, as defined in the Connect or the Forge app descriptor, of the transition rules to return. */ + keys?: string[]; + /** @description The list of workflow names to filter by. */ + workflowNames?: string[]; + /** @description The list of `tags` to filter by. */ + withTags?: string[]; + /** @description Whether draft or published workflows are returned. If not provided, both workflow types are returned. */ + draft?: boolean; + /** @description Use [expand](#expansion) to include additional information in the response. This parameter accepts `transition`, which, for each rule, returns information about the transition the rule is assigned to. */ + expand?: string; + }; + }; + requestBody: { + content: { + "application/json": { + asyncContext?: { + request?: { + asyncStarted?: boolean; + asyncSupported?: boolean; + attributeNames?: Record; + characterEncoding?: string; + /** Format: int32 */ + contentLength?: number; + /** Format: int64 */ + contentLengthLong?: number; + contentType?: string; + /** @enum {string} */ + dispatcherType?: "FORWARD" | "INCLUDE" | "REQUEST" | "ASYNC" | "ERROR"; + inputStream?: { + finished?: boolean; + readListener?: Record; + ready?: boolean; + }; + localAddr?: string; + localName?: string; + /** Format: int32 */ + localPort?: number; + locale?: { + country?: string; + displayCountry?: string; + displayLanguage?: string; + displayName?: string; + displayScript?: string; + displayVariant?: string; + extensionKeys?: string[]; + iso3Country?: string; + iso3Language?: string; + language?: string; + script?: string; + unicodeLocaleAttributes?: string[]; + unicodeLocaleKeys?: string[]; + variant?: string; + }; + locales?: Record; + parameterMap?: { + [key: string]: string[]; + }; + parameterNames?: Record; + protocol?: string; + reader?: Record; + remoteAddr?: string; + remoteHost?: string; + /** Format: int32 */ + remotePort?: number; + scheme?: string; + secure?: boolean; + serverName?: string; + /** Format: int32 */ + serverPort?: number; + servletContext?: { + attributeNames?: Record; + classLoader?: { + defaultAssertionStatus?: boolean; + definedPackages?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + implementationTitle?: string; + implementationVendor?: string; + implementationVersion?: string; + name?: string; + sealed?: boolean; + specificationTitle?: string; + specificationVendor?: string; + specificationVersion?: string; + }[]; + name?: string; + parent?: { + defaultAssertionStatus?: boolean; + definedPackages?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + implementationTitle?: string; + implementationVendor?: string; + implementationVersion?: string; + name?: string; + sealed?: boolean; + specificationTitle?: string; + specificationVendor?: string; + specificationVersion?: string; + }[]; + name?: string; + registeredAsParallelCapable?: boolean; + unnamedModule?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + descriptor?: { + automatic?: boolean; + open?: boolean; + }; + layer?: Record; + name?: string; + named?: boolean; + packages?: string[]; + }; + }; + registeredAsParallelCapable?: boolean; + unnamedModule?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + descriptor?: { + automatic?: boolean; + open?: boolean; + }; + layer?: Record; + name?: string; + named?: boolean; + packages?: string[]; + }; + }; + contextPath?: string; + defaultSessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + /** Format: int32 */ + effectiveMajorVersion?: number; + /** Format: int32 */ + effectiveMinorVersion?: number; + effectiveSessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + filterRegistrations?: { + [key: string]: { + className?: string; + initParameters?: { + [key: string]: string; + }; + name?: string; + servletNameMappings?: string[]; + urlPatternMappings?: string[]; + }; + }; + initParameterNames?: Record; + jspConfigDescriptor?: { + jspPropertyGroups?: { + buffer?: string; + defaultContentType?: string; + deferredSyntaxAllowedAsLiteral?: string; + elIgnored?: string; + errorOnUndeclaredNamespace?: string; + includeCodas?: string[]; + includePreludes?: string[]; + isXml?: string; + pageEncoding?: string; + scriptingInvalid?: string; + trimDirectiveWhitespaces?: string; + urlPatterns?: string[]; + }[]; + taglibs?: { + taglibLocation?: string; + taglibURI?: string; + }[]; + }; + /** Format: int32 */ + majorVersion?: number; + /** Format: int32 */ + minorVersion?: number; + requestCharacterEncoding?: string; + responseCharacterEncoding?: string; + serverInfo?: string; + servletContextName?: string; + servletNames?: Record; + servletRegistrations?: { + [key: string]: { + className?: string; + initParameters?: { + [key: string]: string; + }; + mappings?: string[]; + name?: string; + runAsRole?: string; + }; + }; + servlets?: Record; + sessionCookieConfig?: { + comment?: string; + domain?: string; + httpOnly?: boolean; + /** Format: int32 */ + maxAge?: number; + name?: string; + path?: string; + secure?: boolean; + }; + /** Format: int32 */ + sessionTimeout?: number; + sessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + virtualServerName?: string; + }; + }; + response?: { + /** Format: int32 */ + bufferSize?: number; + characterEncoding?: string; + committed?: boolean; + /** Format: int32 */ + contentLength?: number; + /** Format: int64 */ + contentLengthLong?: number; + contentType?: string; + locale?: { + country?: string; + displayCountry?: string; + displayLanguage?: string; + displayName?: string; + displayScript?: string; + displayVariant?: string; + extensionKeys?: string[]; + iso3Country?: string; + iso3Language?: string; + language?: string; + script?: string; + unicodeLocaleAttributes?: string[]; + unicodeLocaleKeys?: string[]; + variant?: string; + }; + outputStream?: { + ready?: boolean; + writeListener?: Record; + }; + writer?: Record; + }; + /** Format: int64 */ + timeout?: number; + }; + asyncStarted?: boolean; + asyncSupported?: boolean; + attributeNames?: Record; + authType?: string; + characterEncoding?: string; + /** Format: int32 */ + contentLength?: number; + /** Format: int64 */ + contentLengthLong?: number; + contentType?: string; + contextPath?: string; + cookies?: { + comment?: string; + domain?: string; + httpOnly?: boolean; + /** Format: int32 */ + maxAge?: number; + name?: string; + path?: string; + secure?: boolean; + value?: string; + /** Format: int32 */ + version?: number; + }[]; + /** @enum {string} */ + dispatcherType?: "FORWARD" | "INCLUDE" | "REQUEST" | "ASYNC" | "ERROR"; + headerNames?: Record; + httpServletMapping?: { + /** @enum {string} */ + mappingMatch?: "CONTEXT_ROOT" | "DEFAULT" | "EXACT" | "EXTENSION" | "PATH"; + matchValue?: string; + pattern?: string; + servletName?: string; + }; + inputStream?: { + finished?: boolean; + readListener?: Record; + ready?: boolean; + }; + localAddr?: string; + localName?: string; + /** Format: int32 */ + localPort?: number; + locale?: { + country?: string; + displayCountry?: string; + displayLanguage?: string; + displayName?: string; + displayScript?: string; + displayVariant?: string; + extensionKeys?: string[]; + iso3Country?: string; + iso3Language?: string; + language?: string; + script?: string; + unicodeLocaleAttributes?: string[]; + unicodeLocaleKeys?: string[]; + variant?: string; + }; + locales?: Record; + method?: string; + parameterMap?: { + [key: string]: string[]; + }; + parameterNames?: Record; + parts?: { + contentType?: string; + headerNames?: string[]; + inputStream?: Record; + name?: string; + /** Format: int64 */ + size?: number; + submittedFileName?: string; + }[]; + pathInfo?: string; + pathTranslated?: string; + protocol?: string; + queryString?: string; + reader?: Record; + remoteAddr?: string; + remoteHost?: string; + /** Format: int32 */ + remotePort?: number; + remoteUser?: string; + requestURI?: string; + requestURL?: { + /** Format: int32 */ + length?: number; + }; + requestedSessionId?: string; + requestedSessionIdFromCookie?: boolean; + requestedSessionIdFromURL?: boolean; + requestedSessionIdFromUrl?: boolean; + requestedSessionIdValid?: boolean; + scheme?: string; + secure?: boolean; + serverName?: string; + /** Format: int32 */ + serverPort?: number; + servletContext?: { + attributeNames?: Record; + classLoader?: { + defaultAssertionStatus?: boolean; + definedPackages?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + implementationTitle?: string; + implementationVendor?: string; + implementationVersion?: string; + name?: string; + sealed?: boolean; + specificationTitle?: string; + specificationVendor?: string; + specificationVersion?: string; + }[]; + name?: string; + parent?: { + defaultAssertionStatus?: boolean; + definedPackages?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + implementationTitle?: string; + implementationVendor?: string; + implementationVersion?: string; + name?: string; + sealed?: boolean; + specificationTitle?: string; + specificationVendor?: string; + specificationVersion?: string; + }[]; + name?: string; + registeredAsParallelCapable?: boolean; + unnamedModule?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + descriptor?: { + automatic?: boolean; + open?: boolean; + }; + layer?: Record; + name?: string; + named?: boolean; + packages?: string[]; + }; + }; + registeredAsParallelCapable?: boolean; + unnamedModule?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + descriptor?: { + automatic?: boolean; + open?: boolean; + }; + layer?: Record; + name?: string; + named?: boolean; + packages?: string[]; + }; + }; + contextPath?: string; + defaultSessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + /** Format: int32 */ + effectiveMajorVersion?: number; + /** Format: int32 */ + effectiveMinorVersion?: number; + effectiveSessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + filterRegistrations?: { + [key: string]: { + className?: string; + initParameters?: { + [key: string]: string; + }; + name?: string; + servletNameMappings?: string[]; + urlPatternMappings?: string[]; + }; + }; + initParameterNames?: Record; + jspConfigDescriptor?: { + jspPropertyGroups?: { + buffer?: string; + defaultContentType?: string; + deferredSyntaxAllowedAsLiteral?: string; + elIgnored?: string; + errorOnUndeclaredNamespace?: string; + includeCodas?: string[]; + includePreludes?: string[]; + isXml?: string; + pageEncoding?: string; + scriptingInvalid?: string; + trimDirectiveWhitespaces?: string; + urlPatterns?: string[]; + }[]; + taglibs?: { + taglibLocation?: string; + taglibURI?: string; + }[]; + }; + /** Format: int32 */ + majorVersion?: number; + /** Format: int32 */ + minorVersion?: number; + requestCharacterEncoding?: string; + responseCharacterEncoding?: string; + serverInfo?: string; + servletContextName?: string; + servletNames?: Record; + servletRegistrations?: { + [key: string]: { + className?: string; + initParameters?: { + [key: string]: string; + }; + mappings?: string[]; + name?: string; + runAsRole?: string; + }; + }; + servlets?: Record; + sessionCookieConfig?: { + comment?: string; + domain?: string; + httpOnly?: boolean; + /** Format: int32 */ + maxAge?: number; + name?: string; + path?: string; + secure?: boolean; + }; + /** Format: int32 */ + sessionTimeout?: number; + sessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + virtualServerName?: string; + }; + servletPath?: string; + session?: { + attributeNames?: Record; + /** Format: int64 */ + creationTime?: number; + id?: string; + /** Format: int64 */ + lastAccessedTime?: number; + /** Format: int32 */ + maxInactiveInterval?: number; + new?: boolean; + servletContext?: { + attributeNames?: Record; + classLoader?: { + defaultAssertionStatus?: boolean; + definedPackages?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + implementationTitle?: string; + implementationVendor?: string; + implementationVersion?: string; + name?: string; + sealed?: boolean; + specificationTitle?: string; + specificationVendor?: string; + specificationVersion?: string; + }[]; + name?: string; + parent?: { + defaultAssertionStatus?: boolean; + definedPackages?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + implementationTitle?: string; + implementationVendor?: string; + implementationVersion?: string; + name?: string; + sealed?: boolean; + specificationTitle?: string; + specificationVendor?: string; + specificationVersion?: string; + }[]; + name?: string; + registeredAsParallelCapable?: boolean; + unnamedModule?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + descriptor?: { + automatic?: boolean; + open?: boolean; + }; + layer?: Record; + name?: string; + named?: boolean; + packages?: string[]; + }; + }; + registeredAsParallelCapable?: boolean; + unnamedModule?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + descriptor?: { + automatic?: boolean; + open?: boolean; + }; + layer?: Record; + name?: string; + named?: boolean; + packages?: string[]; + }; + }; + contextPath?: string; + defaultSessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + /** Format: int32 */ + effectiveMajorVersion?: number; + /** Format: int32 */ + effectiveMinorVersion?: number; + effectiveSessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + filterRegistrations?: { + [key: string]: { + className?: string; + initParameters?: { + [key: string]: string; + }; + name?: string; + servletNameMappings?: string[]; + urlPatternMappings?: string[]; + }; + }; + initParameterNames?: Record; + jspConfigDescriptor?: { + jspPropertyGroups?: { + buffer?: string; + defaultContentType?: string; + deferredSyntaxAllowedAsLiteral?: string; + elIgnored?: string; + errorOnUndeclaredNamespace?: string; + includeCodas?: string[]; + includePreludes?: string[]; + isXml?: string; + pageEncoding?: string; + scriptingInvalid?: string; + trimDirectiveWhitespaces?: string; + urlPatterns?: string[]; + }[]; + taglibs?: { + taglibLocation?: string; + taglibURI?: string; + }[]; + }; + /** Format: int32 */ + majorVersion?: number; + /** Format: int32 */ + minorVersion?: number; + requestCharacterEncoding?: string; + responseCharacterEncoding?: string; + serverInfo?: string; + servletContextName?: string; + servletNames?: Record; + servletRegistrations?: { + [key: string]: { + className?: string; + initParameters?: { + [key: string]: string; + }; + mappings?: string[]; + name?: string; + runAsRole?: string; + }; + }; + servlets?: Record; + sessionCookieConfig?: { + comment?: string; + domain?: string; + httpOnly?: boolean; + /** Format: int32 */ + maxAge?: number; + name?: string; + path?: string; + secure?: boolean; + }; + /** Format: int32 */ + sessionTimeout?: number; + sessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + virtualServerName?: string; + }; + sessionContext?: { + ids?: Record; + }; + valueNames?: string[]; + }; + trailerFields?: { + [key: string]: string; + }; + trailerFieldsReady?: boolean; + userPrincipal?: { + name?: string; + }; + }; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanWorkflowTransitionRules"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller is not a Connect or Forge app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if any transition rule type is not supported. */ + 404: { + content: never; + }; + /** @description Returned if we encounter a problem while trying to access the required data. */ + 503: { + content: never; + }; + }; + }; + /** + * Update workflow transition rule configurations + * @description Updates configuration of workflow transition rules. The following rule types are supported: + * + * * [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/) + * * [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/) + * * [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/) + * + * Only rules created by the calling [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app can be updated. + * + * To assist with app migration, this operation can be used to: + * + * * Disable a rule. + * * Add a `tag`. Use this to filter rules in the [Get workflow transition rule configurations](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-transition-rules/#api-rest-api-3-workflow-rule-config-get). + * + * Rules are enabled if the `disabled` parameter is not provided. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation. + */ + updateWorkflowTransitionRuleConfigurations: { + requestBody: { + content: { + /** + * @example { + * "workflows": [ + * { + * "conditions": [ + * { + * "configuration": { + * "disabled": false, + * "tag": "Another tag", + * "value": "{ \"size\": \"medium\" }" + * }, + * "id": "d663bd873d93-59f5-11e9-8647-b4d6cbdc" + * } + * ], + * "postFunctions": [ + * { + * "configuration": { + * "disabled": false, + * "tag": "Sample tag", + * "value": "{ \"color\": \"red\" }" + * }, + * "id": "b4d6cbdc-59f5-11e9-8647-d663bd873d93" + * } + * ], + * "validators": [ + * { + * "configuration": { + * "disabled": false, + * "value": "{ \"shape\": \"square\" }" + * }, + * "id": "11e9-59f5-b4d6cbdc-8647-d663bd873d93" + * } + * ], + * "workflowId": { + * "draft": false, + * "name": "My Workflow name" + * } + * } + * ] + * } + */ + "application/json": components["schemas"]["WorkflowTransitionRulesUpdate"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowTransitionRulesUpdateErrors"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller is not a Connect or Forge app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if we encounter a problem while trying to access the required data. */ + 503: { + content: never; + }; + }; + }; + /** + * Delete workflow transition rule configurations + * @description Deletes workflow transition rules from one or more workflows. These rule types are supported: + * + * * [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/) + * * [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/) + * * [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/) + * + * Only rules created by the calling Connect app can be deleted. + * + * **[Permissions](#permissions) required:** Only Connect apps can use this operation. + */ + deleteWorkflowTransitionRuleConfigurations: { + requestBody: { + content: { + /** + * @example { + * "workflows": [ + * { + * "workflowId": { + * "draft": false, + * "name": "Internal support workflow" + * }, + * "workflowRuleIds": [ + * "b4d6cbdc-59f5-11e9-8647-d663bd873d93", + * "d663bd873d93-59f5-11e9-8647-b4d6cbdc", + * "11e9-59f5-b4d6cbdc-8647-d663bd873d93" + * ] + * } + * ] + * } + */ + "application/json": components["schemas"]["WorkflowsWithTransitionRulesDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowTransitionRulesUpdateErrors"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller is not a Connect app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get workflows paginated + * @description Returns a [paginated](#pagination) list of published classic workflows. When workflow names are specified, details of those workflows are returned. Otherwise, all published classic workflows are returned. + * + * This operation does not return next-gen workflows. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowsPaginated: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The name of a workflow to return. To include multiple workflows, provide an ampersand-separated list. For example, `workflowName=name1&workflowName=name2`. */ + workflowName?: string[]; + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `transitions` For each workflow, returns information about the transitions inside the workflow. + * * `transitions.rules` For each workflow transition, returns information about its rules. Transitions are included automatically if this expand is requested. + * * `transitions.properties` For each workflow transition, returns information about its properties. Transitions are included automatically if this expand is requested. + * * `statuses` For each workflow, returns information about the statuses inside the workflow. + * * `statuses.properties` For each workflow status, returns information about its properties. Statuses are included automatically if this expand is requested. + * * `default` For each workflow, returns information about whether this is the default workflow. + * * `schemes` For each workflow, returns information about the workflow schemes the workflow is assigned to. + * * `projects` For each workflow, returns information about the projects the workflow is assigned to, through workflow schemes. + * * `hasDraftWorkflow` For each workflow, returns information about whether the workflow has a draft version. + * * `operations` For each workflow, returns information about the actions that can be undertaken on the workflow. + */ + expand?: string; + /** @description String used to perform a case-insensitive partial match with workflow name. */ + queryString?: string; + /** + * @description [Order](#ordering) the results by a field: + * + * * `name` Sorts by workflow name. + * * `created` Sorts by create time. + * * `updated` Sorts by update time. + */ + orderBy?: "name" | "-name" | "+name" | "created" | "-created" | "+created" | "updated" | "+updated" | "-updated"; + /** @description Filters active and inactive workflows. */ + isActive?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanWorkflow"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get workflow transition properties + * @description Returns the properties on a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowTransitionProperties: { + parameters: { + query: { + /** @description Some properties with keys that have the *jira.* prefix are reserved, which means they are not editable. To include these properties in the results, set this parameter to *true*. */ + includeReservedKeys?: boolean; + /** @description The key of the property being returned, also known as the name of the property. If this parameter is not specified, all properties on the transition are returned. */ + key?: string; + /** @description The name of the workflow that the transition belongs to. */ + workflowName: string; + /** @description The workflow status. Set to *live* for active and inactive workflows, or *draft* for draft workflows. */ + workflowMode?: "live" | "draft"; + }; + path: { + /** @description The ID of the transition. To get the ID, view the workflow in text mode in the Jira administration console. The ID is shown next to the transition. */ + transitionId: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowTransitionProperty"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have admin permission */ + 403: { + content: never; + }; + /** @description Returned if the workflow transition or property is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update workflow transition property + * @description Updates a workflow transition by changing the property value. Trying to update a property that does not exist results in a new property being added to the transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateWorkflowTransitionProperty: { + parameters: { + query: { + /** @description The key of the property being updated, also known as the name of the property. Set this to the same value as the `key` defined in the request body. */ + key: string; + /** @description The name of the workflow that the transition belongs to. */ + workflowName: string; + /** @description The workflow status. Set to `live` for inactive workflows or `draft` for draft workflows. Active workflows cannot be edited. */ + workflowMode?: "live" | "draft"; + }; + path: { + /** @description The ID of the transition. To get the ID, view the workflow in text mode in the Jira admin settings. The ID is shown next to the transition. */ + transitionId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "value": "createissue" + * } + */ + "application/json": components["schemas"]["WorkflowTransitionProperty"]; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowTransitionProperty"]; + }; + }; + /** @description Returned if no changes were made by the request. For example, attempting to update a property with its current value. */ + 304: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow transition is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Create workflow transition property + * @description Adds a property to a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createWorkflowTransitionProperty: { + parameters: { + query: { + /** @description The key of the property being added, also known as the name of the property. Set this to the same value as the `key` defined in the request body. */ + key: string; + /** @description The name of the workflow that the transition belongs to. */ + workflowName: string; + /** @description The workflow status. Set to *live* for inactive workflows or *draft* for draft workflows. Active workflows cannot be edited. */ + workflowMode?: "live" | "draft"; + }; + path: { + /** @description The ID of the transition. To get the ID, view the workflow in text mode in the Jira admin settings. The ID is shown next to the transition. */ + transitionId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "value": "createissue" + * } + */ + "application/json": components["schemas"]["WorkflowTransitionProperty"]; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowTransitionProperty"]; + }; + }; + /** @description Returned if a workflow property with the same key is present on the transition. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow transition is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete workflow transition property + * @description Deletes a property from a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteWorkflowTransitionProperty: { + parameters: { + query: { + /** @description The name of the transition property to delete, also known as the name of the property. */ + key: string; + /** @description The name of the workflow that the transition belongs to. */ + workflowName: string; + /** @description The workflow status. Set to `live` for inactive workflows or `draft` for draft workflows. Active workflows cannot be edited. */ + workflowMode?: "live" | "draft"; + }; + path: { + /** @description The ID of the transition. To get the ID, view the workflow in text mode in the Jira admin settings. The ID is shown next to the transition. */ + transitionId: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: never; + }; + /** @description Returned if no changes were made by the request. For example, trying to delete a property that cannot be found. */ + 304: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow transition is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete inactive workflow + * @description Deletes a workflow. + * + * The workflow cannot be deleted if it is: + * + * * an active workflow. + * * a system workflow. + * * associated with any workflow scheme. + * * associated with any draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteInactiveWorkflow: { + parameters: { + path: { + /** @description The entity ID of the workflow. */ + entityId: string; + }; + }; + responses: { + /** @description Returned if the workflow is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the workflow is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Bulk get workflows + * @description Returns a list of workflows and related statuses by providing workflow names, workflow IDs, or project and issue types. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* global permission to access all, including project-scoped, workflows + * * At least one of the *Administer projects* and *View (read-only) workflow* project permissions to access project-scoped workflows + */ + readWorkflows: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `workflows.usages` Returns the project and issue types that each workflow is associated with. + * * `statuses.usages` Returns the project and issue types that each status is associated with. + */ + expand?: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "projectAndIssueTypes": [], + * "workflowIds": [], + * "workflowNames": [ + * "Workflow 1", + * "Workflow 2" + * ] + * } + */ + "application/json": components["schemas"]["WorkflowReadRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowReadResponse"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Get available workflow capabilities + * @description Get the list of workflow capabilities for a specific workflow using either the workflow ID, or the project and issue type ID pair. The response includes the scope of the workflow, defined as global/project-based, and a list of project types that the workflow is scoped to. It also includes all rules organised into their broad categories (conditions, validators, actions, triggers, screens) as well as the source location (Atlassian-provided, Connect, Forge). + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to access all, including global-scoped, workflows + * * *Administer projects* project permissions to access project-scoped workflows + * + * The current list of Atlassian-provided rules: + * + * #### Validators #### + * + * A validator rule that checks if a user has the required permissions to execute the transition in the workflow. + * + * ##### Permission validator ##### + * + * A validator rule that checks if a user has the required permissions to execute the transition in the workflow. + * + * { + * "ruleKey": "system:check-permission-validator", + * "parameters": { + * "permissionKey": "ADMINISTER_PROJECTS" + * } + * } + * + * Parameters: + * + * * `permissionKey` The permission required to perform the transition. Allowed values: [built-in Jira permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions). + * + * ##### Parent or child blocking validator ##### + * + * A validator to block the child issue\\u2019s transition depending on the parent issue\\u2019s status. + * + * { + * "ruleKey" : "system:parent-or-child-blocking-validator" + * "parameters" : { + * "blocker" : "PARENT" + * "statusIds" : "1,2,3" + * } + * } + * + * Parameters: + * + * * `blocker` currently only supports `PARENT`. + * * `statusIds` a comma-separated list of status IDs. + * + * ##### Previous status validator ##### + * + * A validator that checks if an issue has transitioned through specified previous status(es) before allowing the current transition to occur. + * + * { + * "ruleKey": "system:previous-status-validator", + * "parameters": { + * "previousStatusIds": "10014", + * "mostRecentStatusOnly": "true" + * } + * } + * + * Parameters: + * + * * `previousStatusIds` a comma-separated list of status IDs, currently only support one ID. + * * `mostRecentStatusOnly` when `true` only considers the most recent status for the condition evaluation. Allowed values: `true`, `false`. + * + * ##### Validate a field value ##### + * + * A validation that ensures a specific field's value meets the defined criteria before allowing an issue to transition in the workflow. + * + * Depending on the rule type, the result will vary: + * + * ###### Field required ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldRequired", + * "fieldsRequired": "assignee", + * "ignoreContext": "true", + * "errorMessage": "An assignee must be set!" + * } + * } + * + * Parameters: + * + * * `fieldsRequired` the ID of the field that is required. For a custom field, it would look like `customfield_123`. + * * `ignoreContext` controls the impact of context settings on field validation. When set to `true`, the validator doesn't check a required field if its context isn't configured for the current issue. When set to `false`, the validator requires a field even if its context is invalid. Allowed values: `true`, `false`. + * * `errorMessage` is the error message to display if the user does not provide a value during the transition. A default error message will be shown if you don't provide one (Optional). + * + * ###### Field changed ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldChanged", + * "groupsExemptFromValidation": "6862ac20-8672-4f68-896d-4854f5efb79e", + * "fieldKey": "versions", + * "errorMessage": "Affect versions must be modified before transition" + * } + * } + * + * Parameters: + * + * * `groupsExemptFromValidation` a comma-separated list of group IDs to be exempt from the validation. + * * `fieldKey` the ID of the field that has changed. For a custom field, it would look like `customfield_123`. + * * `errorMessage` the error message to display if the user does not provide a value during the transition. A default error message will be shown if you don't provide one (Optional). + * + * ###### Field has a single value ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldHasSingleValue", + * "fieldKey": "created", + * "excludeSubtasks": "true" + * } + * } + * + * Parameters: + * + * * `fieldKey` the ID of the field to validate. For a custom field, it would look like `customfield_123`. + * * `excludeSubtasks` Option to exclude values copied from sub-tasks. Allowed values: `true`, `false`. + * + * ###### Field matches regular expression ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldMatchesRegularExpression", + * "regexp": "[0-9]{4}", + * "fieldKey": "description" + * } + * } + * + * Parameters: + * + * * `regexp` the regular expression used to validate the field\\u2019s content. + * * `fieldKey` the ID of the field to validate. For a custom field, it would look like `customfield_123`. + * + * ###### Date field comparison ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "dateFieldComparison", + * "date1FieldKey": "duedate", + * "date2FieldKey": "customfield_10054", + * "includeTime": "true", + * "conditionSelected": ">=" + * } + * } + * + * Parameters: + * + * * `date1FieldKey` the ID of the first field to compare. For a custom field, it would look like `customfield_123`. + * * `date2FieldKey` the ID of the second field to compare. For a custom field, it would look like `customfield_123`. + * * `includeTime` if `true`, compares both date and time. Allowed values: `true`, `false`. + * * `conditionSelected` the condition to compare with. Allowed values: `>`, `>=`, `=`, `<=`, `<`, `!=`. + * + * ###### Date range comparison ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "windowDateComparison", + * "date1FieldKey": "customfield_10009", + * "date2FieldKey": "customfield_10054", + * "numberOfDays": "3" + * } + * } + * + * Parameters: + * + * * `date1FieldKey` the ID of the first field to compare. For a custom field, it would look like `customfield_123`. + * * `date2FieldKey` the ID of the second field to compare. For a custom field, it would look like `customfield_123`. + * * `numberOfDays` maximum number of days past the reference date (`date2FieldKey`) to pass validation. + * + * This rule is composed by aggregating the following legacy rules: + * + * * FieldRequiredValidator + * * FieldChangedValidator + * * FieldHasSingleValueValidator + * * RegexpFieldValidator + * * DateFieldValidator + * * WindowsDateValidator + * + * ##### Proforma: Forms attached validator ##### + * + * Validates that one or more forms are attached to the issue. + * + * { + * "ruleKey" : "system:proforma-forms-attached" + * "parameters" : {} + * } + * + * ##### Proforma: Forms submitted validator ##### + * + * Validates that all forms attached to the issue have been submitted. + * + * { + * "ruleKey" : "system:proforma-forms-submitted" + * "parameters" : {} + * } + * + * #### Conditions #### + * + * Conditions enable workflow rules that govern whether a transition can execute. + * + * ##### Check field value ##### + * + * A condition rule evaluates as true if a specific field's value meets the defined criteria. This rule ensures that an issue can only transition to the next step in the workflow if the field's value matches the desired condition. + * + * { + * "ruleKey": "system:check-field-value", + * "parameters": { + * "fieldId": "description", + * "fieldValue": "[\"Done\"]", + * "comparator": "=", + * "comparisonType": "STRING" + * } + * } + * + * Parameters: + * + * * `fieldId` The ID of the field to check the value of. For non-system fields, it will look like `customfield_123`. Note: `fieldId` is used interchangeably with the idea of `fieldKey` here, they refer to the same field. + * * `fieldValue` the list of values to check against the field\\u2019s value. + * * `comparator` The comparison logic. Allowed values: `>`, `>=`, `=`, `<=`, `<`, `!=`. + * * `comparisonType` The type of data being compared. Allowed values: `STRING`, `NUMBER`, `DATE`, `DATE_WITHOUT_TIME`, `OPTIONID`. + * + * ##### Restrict issue transition ##### + * + * This rule ensures that issue transitions are restricted based on user accounts, roles, group memberships, and permissions, maintaining control over who can transition an issue. This condition evaluates as `true` if any of the following criteria is met. + * + * { + * "ruleKey": "system:restrict-issue-transition", + * "parameters": { + * "accountIds": "allow-reporter,5e68ac137d64450d01a77fa0", + * "roleIds": "10002,10004", + * "groupIds": "703ff44a-7dc8-4f4b-9aa6-a65bf3574fa4", + * "permissionKeys": "ADMINISTER_PROJECTS", + * "groupCustomFields": "customfield_10028", + * "allowUserCustomFields": "customfield_10072,customfield_10144,customfield_10007", + * "denyUserCustomFields": "customfield_10107" + * } + * } + * + * Parameters: + * + * * `accountIds` a comma-separated list of the user account IDs. It also allows generic values like: `allow-assignee`, `allow-reporter`, and `accountIds` Note: This is only supported in team-managed projects + * * `roleIds` a comma-separated list of role IDs. + * * `groupIds` a comma-separated list of group IDs. + * * `permissionKeys` a comma-separated list of permission keys. Allowed values: [built-in Jira permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions). + * * `groupCustomFields` a comma-separated list of group custom field IDs. + * * `allowUserCustomFields` a comma-separated list of user custom field IDs to allow for issue transition. + * * `denyUserCustomFields` a comma-separated list of user custom field IDs to deny for issue transition. + * + * This rule is composed by aggregating the following legacy rules: + * + * * AllowOnlyAssignee + * * AllowOnlyReporter + * * InAnyProjectRoleCondition + * * InProjectRoleCondition + * * UserInAnyGroupCondition + * * UserInGroupCondition + * * PermissionCondtion + * * InGroupCFCondition + * * UserIsInCustomFieldCondition + * + * ##### Previous status condition ##### + * + * A condition that evaluates based on an issue's previous status(es) and specific criteria. + * + * { + * "ruleKey" : "system:previous-status-condition" + * "parameters" : { + * "previousStatusIds" : "10004", + * "not": "true", + * "mostRecentStatusOnly" : "true", + * "includeCurrentStatus": "true", + * "ignoreLoopTransitions": "true" + * } + * } + * + * Parameters: + * + * * `previousStatusIds` a comma-separated list of status IDs, current only support one ID. + * * `not` indicates if the condition should be reversed. When `true` it checks that the issue has not been in the selected statuses. Allowed values: `true`, `false`. + * * `mostRecentStatusOnly` when true only considers the most recent status for the condition evaluation. Allowed values: `true`, `false`. + * * `includeCurrentStatus` includes the current status when evaluating if the issue has been through the selected statuses. Allowed values: `true`, `false`. + * * `ignoreLoopTransitions` ignore loop transitions. Allowed values: `true`, `false`. + * + * ##### Parent or child blocking condition ##### + * + * A condition to block the parent\\u2019s issue transition depending on the child\\u2019s issue status. + * + * { + * "ruleKey" : "system:parent-or-child-blocking-condition" + * "parameters" : { + * "blocker" : "CHILD", + * "statusIds" : "1,2,3" + * } + * } + * + * Parameters: + * + * * `blocker` currently only supports `CHILD`. + * * `statusIds` a comma-separated list of status IDs. + * + * ##### Separation of duties ##### + * + * A condition preventing the user from performing, if the user has already performed a transition on the issue. + * + * { + * "ruleKey": "system:separation-of-duties", + * "parameters": { + * "fromStatusId": "10161", + * "toStatusId": "10160" + * } + * } + * + * Parameters: + * + * * `fromStatusId` represents the status ID from which the issue is transitioning. It ensures that the user performing the current transition has not performed any actions when the issue was in the specified status. + * * `toStatusId` represents the status ID to which the issue is transitioning. It ensures that the user performing the current transition is not the same user who has previously transitioned the issue. + * + * ##### Restrict transitions ##### + * + * A condition preventing all users from transitioning the issue can also optionally include APIs as well. + * + * { + * "ruleKey": "system:restrict-from-all-users", + * "parameters": { + * "restrictMode": "users" + * } + * } + * + * Parameters: + * + * * `restrictMode` restricts the issue transition including/excluding APIs. Allowed values: `"users"`, `"usersAndAPI"`. + * + * ##### Jira Service Management block until approved ##### + * + * Block an issue transition until approval. Note: This is only supported in team-managed projects. + * + * { + * "ruleKey": "system:jsd-approvals-block-until-approved", + * "parameters": { + * "approvalConfigurationJson": "{"statusExternalUuid...}" + * } + * } + * + * Parameters: + * + * * `approvalConfigurationJson` a stringified JSON holding the Jira Service Management approval configuration. + * + * ##### Jira Service Management block until rejected ##### + * + * Block an issue transition until rejected. Note: This is only supported in team-managed projects. + * + * { + * "ruleKey": "system:jsd-approvals-block-until-rejected", + * "parameters": { + * "approvalConfigurationJson": "{"statusExternalUuid...}" + * } + * } + * + * Parameters: + * + * * `approvalConfigurationJson` a stringified JSON holding the Jira Service Management approval configuration. + * + * ##### Block in progress approval ##### + * + * Condition to block issue transition if there is pending approval. Note: This is only supported in company-managed projects. + * + * { + * "ruleKey": "system:block-in-progress-approval", + * "parameters": {} + * } + * + * #### Post functions #### + * + * Post functions carry out any additional processing required after a workflow transition is executed. + * + * ##### Change assignee ##### + * + * A post function rule that changes the assignee of an issue after a transition. + * + * { + * "ruleKey": "system:change-assignee", + * "parameters": { + * "type": "to-selected-user", + * "accountId": "example-account-id" + * } + * } + * + * Parameters: + * + * * `type` the parameter used to determine the new assignee. Allowed values: `to-selected-user`, `to-unassigned`, `to-current-user`, `to-current-user`, `to-default-user`, `to-default-user` + * * `accountId` the account ID of the user to assign the issue to. This parameter is required only when the type is `"to-selected-user"`. + * + * ##### Copy field value ##### + * + * A post function that automates the process of copying values between fields during a specific transition, ensuring data consistency and reducing manual effort. + * + * { + * "ruleKey": "system:copy-value-from-other-field", + * "parameters": { + * "sourceFieldKey": "description", + * "targetFieldKey": "components", + * "issueSource": "SAME" + * } + * } + * + * Parameters: + * + * * `sourceFieldKey` the field key to copy from. For a custom field, it would look like `customfield_123` + * * `targetFieldKey` the field key to copy to. For a custom field, it would look like `customfield_123` + * * `issueSource` `SAME` or `PARENT`. Defaults to `SAME` if no value is provided. + * + * ##### Update field ##### + * + * A post function that updates or appends a specific field with the given value. + * + * { + * "ruleKey": "system:update-field", + * "parameters": { + * "field": "customfield_10056", + * "value": "asdf", + * "mode": "append" + * } + * } + * + * Parameters: + * + * * `field` the ID of the field to update. For a custom field, it would look like `customfield_123` + * * `value` the value to update the field with. + * * `mode` `append` or `replace`. Determines if a value will be appended to the current value, or if the current value will be replaced. + * + * ##### Trigger webhook ##### + * + * A post function that automatically triggers a predefined webhook when a transition occurs in the workflow. + * + * { + * "ruleKey": "system:trigger-webhook", + * "parameters": { + * "webhookId": "1" + * } + * } + * + * Parameters: + * + * * `webhookId` the ID of the webhook. + * + * #### Screen #### + * + * ##### Remind people to update fields ##### + * + * A screen rule that prompts users to update a specific field when they interact with an issue screen during a transition. This rule is useful for ensuring that users provide or modify necessary information before moving an issue to the next step in the workflow. + * + * { + * "ruleKey": "system:remind-people-to-update-fields", + * "params": { + * "remindingFieldIds": "assignee,customfield_10025", + * "remindingMessage": "The message", + * "remindingAlwaysAsk": "true" + * } + * } + * + * Parameters: + * + * * `remindingFieldIds` a comma-separated list of field IDs. Note: `fieldId` is used interchangeably with the idea of `fieldKey` here, they refer to the same field. + * * `remindingMessage` the message to display when prompting the users to update the fields. + * * `remindingAlwaysAsk` always remind to update fields. Allowed values: `true`, `false`. + * + * ##### Shared transition screen ##### + * + * A common screen that is shared between transitions in a workflow. + * + * { + * "ruleKey": "system:transition-screen", + * "params": { + * "screenId": "3" + * } + * } + * + * Parameters: + * + * * `screenId` the ID of the screen. + * + * #### Connect & Forge #### + * + * ##### Connect rules ##### + * + * Validator/Condition/Post function for Connect app. + * + * { + * "ruleKey": "connect:expression-validator", + * "parameters": { + * "appKey": "com.atlassian.app", + * "config": "", + * "id": "90ce590f-e90c-4cd3-8281-165ce41f2ac3", + * "disabled": "false", + * "tag": "" + * } + * } + * + * Parameters: + * + * * `ruleKey` Validator: `connect:expression-validator`, Condition: `connect:expression-condition`, and Post function: `connect:remote-workflow-function` + * * `appKey` the reference to the Connect app + * * `config` a JSON payload string describing the configuration + * * `id` the ID of the rule + * * `disabled` determine if the Connect app is disabled. Allowed values: `true`, `false`. + * * `tag` additional tags for the Connect app + * + * ##### Forge rules ##### + * + * Validator/Condition/Post function for Forge app. + * + * { + * "ruleKey": "forge:expression-validator", + * "parameters": { + * "key": "ari:cloud:ecosystem::extension/{appId}/{environmentId}/static/{moduleKey}", + * "config": "{"searchString":"workflow validator"}", + * "id": "a865ddf6-bb3f-4a7b-9540-c2f8b3f9f6c2" + * } + * } + * + * Parameters: + * + * * `ruleKey` Validator: `forge:expression-validator`, Condition: `forge:expression-condition`, and Post function: `forge:workflow-post-function` + * * `key` the identifier for the Forge app + * * `config` the persistent stringified JSON configuration for the Forge rule + * * `id` the ID of the Forge rule + */ + workflowCapabilities: { + parameters: { + query?: { + workflowId?: string; + projectId?: string; + issueTypeId?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowCapabilities"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Bulk create workflows + * @description Create workflows and related statuses. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + createWorkflows: { + requestBody: { + content: { + /** + * @example { + * "scope": { + * "type": "GLOBAL" + * }, + * "statuses": [ + * { + * "description": "", + * "name": "To Do", + * "statusCategory": "TODO", + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "description": "", + * "name": "In Progress", + * "statusCategory": "IN_PROGRESS", + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "description": "", + * "name": "Done", + * "statusCategory": "DONE", + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "workflows": [ + * { + * "description": "", + * "name": "Software workflow 1", + * "startPointLayout": { + * "x": -100.00030899047852, + * "y": -153.00020599365234 + * }, + * "statuses": [ + * { + * "layout": { + * "x": 114.99993896484375, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "layout": { + * "x": 317.0000915527344, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "layout": { + * "x": 508.000244140625, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "transitions": [ + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "1", + * "name": "Create", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "INITIAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "11", + * "name": "To Do", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "21", + * "name": "In Progress", + * "properties": {}, + * "to": { + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "31", + * "name": "Done", + * "properties": {}, + * "to": { + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * } + * ] + * } + * ] + * } + */ + "application/json": components["schemas"]["WorkflowCreateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowCreateResponse"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Validate create workflows + * @description Validate the payload for bulk create workflows. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + validateCreateWorkflows: { + requestBody: { + content: { + /** + * @example { + * "payload": { + * "scope": { + * "type": "GLOBAL" + * }, + * "statuses": [ + * { + * "description": "", + * "name": "To Do", + * "statusCategory": "TODO", + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "description": "", + * "name": "In Progress", + * "statusCategory": "IN_PROGRESS", + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "description": "", + * "name": "Done", + * "statusCategory": "DONE", + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "workflows": [ + * { + * "description": "", + * "name": "Software workflow 1", + * "startPointLayout": { + * "x": -100.00030899047852, + * "y": -153.00020599365234 + * }, + * "statuses": [ + * { + * "layout": { + * "x": 114.99993896484375, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "layout": { + * "x": 317.0000915527344, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "layout": { + * "x": 508.000244140625, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "transitions": [ + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "1", + * "name": "Create", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "INITIAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "11", + * "name": "To Do", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "21", + * "name": "In Progress", + * "properties": {}, + * "to": { + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "31", + * "name": "Done", + * "properties": {}, + * "to": { + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * } + * ] + * } + * ] + * }, + * "validationOptions": { + * "levels": [ + * "ERROR", + * "WARNING" + * ] + * } + * } + */ + "application/json": components["schemas"]["WorkflowCreateValidateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowValidationErrorList"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Bulk update workflows + * @description Update workflows and related statuses. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + updateWorkflows: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `workflows.usages` Returns the project and issue types that each workflow is associated with. + * * `statuses.usages` Returns the project and issue types that each status is associated with. + */ + expand?: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "statuses": [ + * { + * "description": "", + * "name": "To Do", + * "statusCategory": "TODO", + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "description": "", + * "name": "In Progress", + * "statusCategory": "IN_PROGRESS", + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "description": "", + * "name": "Done", + * "statusCategory": "DONE", + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "workflows": [ + * { + * "defaultStatusMappings": [ + * { + * "newStatusReference": "10011", + * "oldStatusReference": "10010" + * } + * ], + * "description": "", + * "id": "10001", + * "startPointLayout": { + * "x": -100.00030899047852, + * "y": -153.00020599365234 + * }, + * "statusMappings": [ + * { + * "issueTypeId": "10002", + * "projectId": "10003", + * "statusMigrations": [ + * { + * "newStatusReference": "10011", + * "oldStatusReference": "10010" + * } + * ] + * } + * ], + * "statuses": [ + * { + * "layout": { + * "x": 114.99993896484375, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "layout": { + * "x": 317.0000915527344, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "layout": { + * "x": 508.000244140625, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "transitions": [ + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "1", + * "name": "Create", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "INITIAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "11", + * "name": "To Do", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "21", + * "name": "In Progress", + * "properties": {}, + * "to": { + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "31", + * "name": "Done", + * "properties": {}, + * "to": { + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * } + * ], + * "version": { + * "id": "6f6c988b-2590-4358-90c2-5f7960265592", + * "versionNumber": 1 + * } + * } + * ] + * } + */ + "application/json": components["schemas"]["WorkflowUpdateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowUpdateResponse"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Validate update workflows + * @description Validate the payload for bulk update workflows. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + validateUpdateWorkflows: { + requestBody: { + content: { + /** + * @example { + * "payload": { + * "statuses": [ + * { + * "description": "", + * "name": "To Do", + * "statusCategory": "TODO", + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "description": "", + * "name": "In Progress", + * "statusCategory": "IN_PROGRESS", + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "description": "", + * "name": "Done", + * "statusCategory": "DONE", + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "workflows": [ + * { + * "defaultStatusMappings": [ + * { + * "newStatusReference": "10011", + * "oldStatusReference": "10010" + * } + * ], + * "description": "", + * "id": "10001", + * "startPointLayout": { + * "x": -100.00030899047852, + * "y": -153.00020599365234 + * }, + * "statusMappings": [ + * { + * "issueTypeId": "10002", + * "projectId": "10003", + * "statusMigrations": [ + * { + * "newStatusReference": "10011", + * "oldStatusReference": "10010" + * } + * ] + * } + * ], + * "statuses": [ + * { + * "layout": { + * "x": 114.99993896484375, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "layout": { + * "x": 317.0000915527344, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "layout": { + * "x": 508.000244140625, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "transitions": [ + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "1", + * "name": "Create", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "INITIAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "11", + * "name": "To Do", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "21", + * "name": "In Progress", + * "properties": {}, + * "to": { + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "31", + * "name": "Done", + * "properties": {}, + * "to": { + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * } + * ], + * "version": { + * "id": "6f6c988b-2590-4358-90c2-5f7960265592", + * "versionNumber": 1 + * } + * } + * ] + * }, + * "validationOptions": { + * "levels": [ + * "ERROR", + * "WARNING" + * ] + * } + * } + */ + "application/json": components["schemas"]["WorkflowUpdateValidateRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowValidationErrorList"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Get all workflow schemes + * @description Returns a [paginated](#pagination) list of all workflow schemes, not including draft workflow schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllWorkflowSchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanWorkflowScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Create workflow scheme + * @description Creates a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createWorkflowScheme: { + requestBody: { + content: { + /** + * @example { + * "defaultWorkflow": "jira", + * "description": "The description of the example workflow scheme.", + * "issueTypeMappings": { + * "10000": "scrum workflow", + * "10001": "builds workflow" + * }, + * "name": "Example workflow scheme" + * } + */ + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get workflow scheme project associations + * @description Returns a list of the workflow schemes associated with a list of projects. Each returned workflow scheme includes a list of the requested projects associated with it. Any team-managed or non-existent projects in the request are ignored and no errors are returned. + * + * If the project is associated with the `Default Workflow Scheme` no ID is returned. This is because the way the `Default Workflow Scheme` is stored means it has no ID. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowSchemeProjectAssociations: { + parameters: { + query: { + /** @description The ID of a project to return the workflow schemes for. To include multiple projects, provide an ampersand-Jim: oneseparated list. For example, `projectId=10000&projectId=10001`. */ + projectId: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ContainerOfWorkflowSchemeAssociations"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Assign workflow scheme to project + * @description Assigns a workflow scheme to a project. This operation is performed only when there are no issues in the project. + * + * Workflow schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + assignSchemeToProject: { + requestBody: { + content: { + /** + * @example { + * "projectId": "10001", + * "workflowSchemeId": "10032" + * } + */ + "application/json": components["schemas"]["WorkflowSchemeProjectAssociation"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the workflow scheme or the project are not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Bulk get workflow schemes + * @description Returns a list of workflow schemes by providing workflow scheme IDs or project IDs. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* global permission to access all, including project-scoped, workflow schemes + * * *Administer projects* project permissions to access project-scoped workflow schemes + */ + readWorkflowSchemes: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `workflows.usages` Returns the project and issue types that each workflow in the workflow scheme is associated with. + */ + expand?: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "projectIds": [ + * "10047", + * "10048" + * ], + * "workflowSchemeIds": [ + * "3e59db0f-ed6c-47ce-8d50-80c0c4572677" + * ] + * } + */ + "application/json": components["schemas"]["WorkflowSchemeReadRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowSchemeReadResponse"][]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Update workflow scheme + * @description Updates company-managed and team-managed project workflow schemes. This API doesn't have a concept of draft, so any changes made to a workflow scheme are immediately available. When changing the available statuses for issue types, an [asynchronous task](#async) migrates the issues as defined in the provided mappings. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to update all, including global-scoped, workflow schemes. + * * *Administer projects* project permission to update project-scoped workflow schemes. + */ + updateSchemes: { + requestBody: { + content: { + /** + * @example { + * "defaultWorkflowId": "3e59db0f-ed6c-47ce-8d50-80c0c4572677", + * "description": "description", + * "id": "10000", + * "name": "name", + * "statusMappingsByIssueTypeOverride": [ + * { + * "issueTypeId": "10001", + * "statusMappings": [ + * { + * "newStatusId": "2", + * "oldStatusId": "1" + * }, + * { + * "newStatusId": "4", + * "oldStatusId": "3" + * } + * ] + * }, + * { + * "issueTypeId": "10002", + * "statusMappings": [ + * { + * "newStatusId": "4", + * "oldStatusId": "1" + * }, + * { + * "newStatusId": "2", + * "oldStatusId": "3" + * } + * ] + * } + * ], + * "statusMappingsByWorkflows": [ + * { + * "newWorkflowId": "3e59db0f-ed6c-47ce-8d50-80c0c4572677", + * "oldWorkflowId": "3e59db0f-ed6c-47ce-8d50-80c0c4572677", + * "statusMappings": [ + * { + * "newStatusId": "2", + * "oldStatusId": "1" + * }, + * { + * "newStatusId": "4", + * "oldStatusId": "3" + * } + * ] + * } + * ], + * "version": { + * "id": "527213fc-bc72-400f-aae0-df8d88db2c8a", + * "versionNumber": 1 + * }, + * "workflowsForIssueTypes": [ + * { + * "issueTypeIds": [ + * "10000", + * "10003" + * ], + * "workflowId": "3e59db0f-ed6c-47ce-8d50-80c0c4572677" + * }, + * { + * "issueTypeIds": [ + * "10001`", + * "10002" + * ], + * "workflowId": "3f83dg2a-ns2n-56ab-9812-42h5j1461629" + * } + * ] + * } + */ + "application/json": components["schemas"]["WorkflowSchemeUpdateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful and there is no asynchronous task. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is successful and there is an asynchronous task for the migrations. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Get required status mappings for workflow scheme update + * @description Gets the required status mappings for the desired changes to a workflow scheme. The results are provided per issue type and workflow. When updating a workflow scheme, status mappings can be provided per issue type, per workflow, or both. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* permission to update all, including global-scoped, workflow schemes. + * * *Administer projects* project permission to update project-scoped workflow schemes. + */ + updateWorkflowSchemeMappings: { + requestBody: { + content: { + /** + * @example { + * "defaultWorkflowId": "10010", + * "id": "10001", + * "workflowsForIssueTypes": [ + * { + * "issueTypeIds": [ + * "10010", + * "10011" + * ], + * "workflowId": "10001" + * } + * ] + * } + */ + "application/json": components["schemas"]["WorkflowSchemeUpdateRequiredMappingsRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowSchemeUpdateRequiredMappingsResponse"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Get workflow scheme + * @description Returns a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowScheme: { + parameters: { + query?: { + /** @description Returns the workflow scheme's draft rather than scheme itself, if set to true. If the workflow scheme does not have a draft, then the workflow scheme is returned. */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. Find this ID by editing the desired workflow scheme in Jira. The ID is shown in the URL as `schemeId`. For example, *schemeId=10301*. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Classic update workflow scheme + * @description Updates a company-manged project workflow scheme, including the name, default workflow, issue type to project mappings, and more. If the workflow scheme is active (that is, being used by at least one project), then a draft workflow scheme is created or updated instead, provided that `updateDraftIfNeeded` is set to `true`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateWorkflowScheme: { + parameters: { + path: { + /** @description The ID of the workflow scheme. Find this ID by editing the desired workflow scheme in Jira. The ID is shown in the URL as `schemeId`. For example, *schemeId=10301*. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "defaultWorkflow": "jira", + * "description": "The description of the example workflow scheme.", + * "issueTypeMappings": { + * "10000": "scrum workflow" + * }, + * "name": "Example workflow scheme", + * "updateDraftIfNeeded": false + * } + */ + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete workflow scheme + * @description Deletes a workflow scheme. Note that a workflow scheme cannot be deleted if it is active (that is, being used by at least one project). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteWorkflowScheme: { + parameters: { + path: { + /** @description The ID of the workflow scheme. Find this ID by editing the desired workflow scheme in Jira. The ID is shown in the URL as `schemeId`. For example, *schemeId=10301*. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the scheme is active. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Create draft workflow scheme + * @description Create a draft workflow scheme from an active workflow scheme, by copying the active workflow scheme. Note that an active workflow scheme can only have one draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createWorkflowSchemeDraftFromParent: { + parameters: { + path: { + /** @description The ID of the active workflow scheme that the draft is created from. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get default workflow + * @description Returns the default workflow for a workflow scheme. The default workflow is the workflow that is assigned any issue types that have not been mapped to any other workflow. The default workflow has *All Unassigned Issue Types* listed in its issue types for the workflow scheme in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getDefaultWorkflow: { + parameters: { + query?: { + /** @description Set to `true` to return the default workflow for the workflow scheme's draft rather than scheme itself. If the workflow scheme does not have a draft, then the default workflow for the workflow scheme is returned. */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DefaultWorkflow"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update default workflow + * @description Sets the default workflow for a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` in the request object and a draft workflow scheme is created or updated with the new default workflow. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateDefaultWorkflow: { + parameters: { + path: { + /** @description The ID of the workflow scheme. */ + id: number; + }; + }; + /** @description The new default workflow. */ + requestBody: { + content: { + /** + * @example { + * "updateDraftIfNeeded": false, + * "workflow": "jira" + * } + */ + "application/json": components["schemas"]["DefaultWorkflow"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the workflow scheme cannot be edited and `updateDraftIfNeeded` is not `true`. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete default workflow + * @description Resets the default workflow for a workflow scheme. That is, the default workflow is set to Jira's system workflow (the *jira* workflow). + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` and a draft workflow scheme is created or updated with the default workflow reset. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteDefaultWorkflow: { + parameters: { + query?: { + /** @description Set to true to create or update the draft of a workflow scheme and delete the mapping from the draft, when the workflow scheme cannot be edited. Defaults to `false`. */ + updateDraftIfNeeded?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the workflow scheme cannot be edited and `updateDraftIfNeeded` is not `true`. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get draft workflow scheme + * @description Returns the draft workflow scheme for an active workflow scheme. Draft workflow schemes allow changes to be made to the active workflow schemes: When an active workflow scheme is updated, a draft copy is created. The draft is modified, then the changes in the draft are copied back to the active workflow scheme. See [Configuring workflow schemes](https://confluence.atlassian.com/x/tohKLg) for more information. + * Note that: + * + * * Only active workflow schemes can have draft workflow schemes. + * * An active workflow scheme can only have one draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowSchemeDraft: { + parameters: { + path: { + /** @description The ID of the active workflow scheme that the draft was created from. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the original active workflow scheme is not found. + * * the original active workflow scheme does not have a draft. + */ + 404: { + content: never; + }; + }; + }; + /** + * Update draft workflow scheme + * @description Updates a draft workflow scheme. If a draft workflow scheme does not exist for the active workflow scheme, then a draft is created. Note that an active workflow scheme can only have one draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateWorkflowSchemeDraft: { + parameters: { + path: { + /** @description The ID of the active workflow scheme that the draft was created from. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "defaultWorkflow": "jira", + * "description": "The description of the example workflow scheme.", + * "issueTypeMappings": { + * "10000": "scrum workflow" + * }, + * "name": "Example workflow scheme", + * "updateDraftIfNeeded": false + * } + */ + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the original active workflow scheme is not found. + * * the original active workflow scheme does not have a draft. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete draft workflow scheme + * @description Deletes a draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteWorkflowSchemeDraft: { + parameters: { + path: { + /** @description The ID of the active workflow scheme that the draft was created from. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission.. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the original active workflow scheme is not found. + * * the original active workflow scheme does not have a draft. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get draft default workflow + * @description Returns the default workflow for a workflow scheme's draft. The default workflow is the workflow that is assigned any issue types that have not been mapped to any other workflow. The default workflow has *All Unassigned Issue Types* listed in its issue types for the workflow scheme in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getDraftDefaultWorkflow: { + parameters: { + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DefaultWorkflow"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission.. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow scheme does not have a draft. + */ + 404: { + content: never; + }; + }; + }; + /** + * Update draft default workflow + * @description Sets the default workflow for a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateDraftDefaultWorkflow: { + parameters: { + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + /** @description The object for the new default workflow. */ + requestBody: { + content: { + /** + * @example { + * "updateDraftIfNeeded": false, + * "workflow": "jira" + * } + */ + "application/json": components["schemas"]["DefaultWorkflow"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow scheme does not have a draft. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete draft default workflow + * @description Resets the default workflow for a workflow scheme's draft. That is, the default workflow is set to Jira's system workflow (the *jira* workflow). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteDraftDefaultWorkflow: { + parameters: { + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow scheme does not have a draft. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get workflow for issue type in draft workflow scheme + * @description Returns the issue type-workflow mapping for an issue type in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowSchemeDraftIssueType: { + parameters: { + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + /** @description The ID of the issue type. */ + issueType: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeWorkflowMapping"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme or issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set workflow for issue type in draft workflow scheme + * @description Sets the workflow for an issue type in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setWorkflowSchemeDraftIssueType: { + parameters: { + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + /** @description The ID of the issue type. */ + issueType: string; + }; + }; + /** @description The issue type-project mapping. */ + requestBody: { + content: { + /** + * @example { + * "issueType": "10000", + * "updateDraftIfNeeded": false, + * "workflow": "jira" + * } + */ + "application/json": components["schemas"]["IssueTypeWorkflowMapping"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme or issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete workflow for issue type in draft workflow scheme + * @description Deletes the issue type-workflow mapping for an issue type in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteWorkflowSchemeDraftIssueType: { + parameters: { + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + /** @description The ID of the issue type. */ + issueType: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme or issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Publish draft workflow scheme + * @description Publishes a draft workflow scheme. + * + * Where the draft workflow includes new workflow statuses for an issue type, mappings are provided to update issues with the original workflow status to the new workflow status. + * + * This operation is [asynchronous](#async). 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 updates. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + publishDraftWorkflowScheme: { + parameters: { + query?: { + /** @description Whether the request only performs a validation. */ + validateOnly?: boolean; + }; + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + /** @description Details of the status mappings. */ + requestBody: { + content: { + /** + * @example { + * "statusMappings": [ + * { + * "issueTypeId": "10001", + * "newStatusId": "1", + * "statusId": "3" + * }, + * { + * "issueTypeId": "10001", + * "newStatusId": "2", + * "statusId": "2" + * }, + * { + * "issueTypeId": "10002", + * "newStatusId": "10003", + * "statusId": "10005" + * }, + * { + * "issueTypeId": "10003", + * "newStatusId": "1", + * "statusId": "4" + * } + * ] + * } + */ + "application/json": components["schemas"]["PublishDraftWorkflowScheme"]; + }; + }; + responses: { + /** @description Returned if the request is only for validation and is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of these are true: + * + * * The workflow scheme is not found. + * * The workflow scheme does not have a draft. + * * A new status in the draft workflow scheme is not found. + */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue types for workflows in draft workflow scheme + * @description Returns the workflow-issue type mappings for a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getDraftWorkflow: { + parameters: { + query?: { + /** @description The name of a workflow in the scheme. Limits the results to the workflow-issue type mapping for the specified workflow. */ + workflowName?: string; + }; + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypesWorkflowMapping"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if either the workflow scheme or workflow (if specified) is not found. session. */ + 404: { + content: never; + }; + }; + }; + /** + * Set issue types for workflow in workflow scheme + * @description Sets the issue types for a workflow in a workflow scheme's draft. The workflow can also be set as the default workflow for the draft workflow scheme. Unmapped issues types are mapped to the default workflow. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateDraftWorkflowMapping: { + parameters: { + query: { + /** @description The name of the workflow. */ + workflowName: string; + }; + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypes": [ + * "10000" + * ], + * "updateDraftIfNeeded": true, + * "workflow": "jira" + * } + */ + "application/json": components["schemas"]["IssueTypesWorkflowMapping"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow scheme does not have a draft. + * * The workflow is not found. + * * The workflow is not specified. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue types for workflow in draft workflow scheme + * @description Deletes the workflow-issue type mapping for a workflow in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteDraftWorkflowMapping: { + parameters: { + query: { + /** @description The name of the workflow. */ + workflowName: string; + }; + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow scheme does not have a draft. + * * The workflow is not found. + * * The workflow is not specified. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get workflow for issue type in workflow scheme + * @description Returns the issue type-workflow mapping for an issue type in a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowSchemeIssueType: { + parameters: { + query?: { + /** @description Returns the mapping from the workflow scheme's draft rather than the workflow scheme, if set to true. If no draft exists, the mapping from the workflow scheme is returned. */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + /** @description The ID of the issue type. */ + issueType: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeWorkflowMapping"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme or issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set workflow for issue type in workflow scheme + * @description Sets the workflow for an issue type in a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` in the request body and a draft workflow scheme is created or updated with the new issue type-workflow mapping. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setWorkflowSchemeIssueType: { + parameters: { + path: { + /** @description The ID of the workflow scheme. */ + id: number; + /** @description The ID of the issue type. */ + issueType: string; + }; + }; + /** @description The issue type-project mapping. */ + requestBody: { + content: { + /** + * @example { + * "issueType": "10000", + * "updateDraftIfNeeded": false, + * "workflow": "jira" + * } + */ + "application/json": components["schemas"]["IssueTypeWorkflowMapping"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the workflow cannot be edited and `updateDraftIfNeeded` is false. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme or issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete workflow for issue type in workflow scheme + * @description Deletes the issue type-workflow mapping for an issue type in a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` and a draft workflow scheme is created or updated with the issue type-workflow mapping deleted. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteWorkflowSchemeIssueType: { + parameters: { + query?: { + /** @description Set to true to create or update the draft of a workflow scheme and update the mapping in the draft, when the workflow scheme cannot be edited. Defaults to `false`. */ + updateDraftIfNeeded?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + /** @description The ID of the issue type. */ + issueType: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the workflow cannot be edited and `updateDraftIfNeeded` is false. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme or issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue types for workflows in workflow scheme + * @description Returns the workflow-issue type mappings for a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflow: { + parameters: { + query?: { + /** @description The name of a workflow in the scheme. Limits the results to the workflow-issue type mapping for the specified workflow. */ + workflowName?: string; + /** @description Returns the mapping from the workflow scheme's draft rather than the workflow scheme, if set to true. If no draft exists, the mapping from the workflow scheme is returned. */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypesWorkflowMapping"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if either the workflow scheme or workflow is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set issue types for workflow in workflow scheme + * @description Sets the issue types for a workflow in a workflow scheme. The workflow can also be set as the default workflow for the workflow scheme. Unmapped issues types are mapped to the default workflow. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` in the request body and a draft workflow scheme is created or updated with the new workflow-issue types mappings. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateWorkflowMapping: { + parameters: { + query: { + /** @description The name of the workflow. */ + workflowName: string; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypes": [ + * "10000" + * ], + * "updateDraftIfNeeded": true, + * "workflow": "jira" + * } + */ + "application/json": components["schemas"]["IssueTypesWorkflowMapping"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow is not found. + * * The workflow is not specified. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue types for workflow in workflow scheme + * @description Deletes the workflow-issue type mapping for a workflow in a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` and a draft workflow scheme is created or updated with the workflow-issue type mapping deleted. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteWorkflowMapping: { + parameters: { + query: { + /** @description The name of the workflow. */ + workflowName: string; + /** @description Set to true to create or update the draft of a workflow scheme and delete the mapping from the draft, when the workflow scheme cannot be edited. Defaults to `false`. */ + updateDraftIfNeeded?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** @description Returned if the workflow cannot be edited and `updateDraftIfNeeded` is not true. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow is not found. + * * The workflow is not specified. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get IDs of deleted worklogs + * @description Returns a list of IDs and delete timestamps for worklogs deleted after a date and time. + * + * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set to true on the last page of worklogs. + * + * This resource does not return worklogs deleted during the minute preceding the request. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getIdsOfWorklogsDeletedSince: { + parameters: { + query?: { + /** @description The date and time, as a UNIX timestamp in milliseconds, after which deleted worklogs are returned. */ + since?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ChangedWorklogs"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get worklogs + * @description Returns worklog details for a list of worklog IDs. + * + * The returned list of worklogs is limited to 1000 items. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, worklogs are only returned where either of the following is true: + * + * * the worklog is set as *Viewable by All Users*. + * * the user is a member of a project role or group with permission to view the worklog. + */ + getWorklogsForIds: { + parameters: { + query?: { + /** @description Use [expand](#expansion) to include additional information about worklogs in the response. This parameter accepts `properties` that returns the properties of each worklog. */ + expand?: string; + }; + }; + /** @description A JSON object containing a list of worklog IDs. */ + requestBody: { + content: { + /** + * @example { + * "ids": [ + * 1, + * 2, + * 5, + * 10 + * ] + * } + */ + "application/json": components["schemas"]["WorklogIdsRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Worklog"][]; + }; + }; + /** @description Returned if the request contains more than 1000 worklog IDs or is empty. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get IDs of updated worklogs + * @description Returns a list of IDs and update timestamps for worklogs updated after a date and time. + * + * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set to true on the last page of worklogs. + * + * This resource does not return worklogs updated during the minute preceding the request. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, worklogs are only returned where either of the following is true: + * + * * the worklog is set as *Viewable by All Users*. + * * the user is a member of a project role or group with permission to view the worklog. + */ + getIdsOfWorklogsModifiedSince: { + parameters: { + query?: { + /** @description The date and time, as a UNIX timestamp in milliseconds, after which updated worklogs are returned. */ + since?: number; + /** @description Use [expand](#expansion) to include additional information about worklogs in the response. This parameter accepts `properties` that returns the properties of each worklog. */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ChangedWorklogs"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get app properties + * @description Gets all the properties of an app. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + * Additionally, Forge apps published on the Marketplace can access properties of Connect apps they were [migrated from](https://developer.atlassian.com/platform/forge/build-a-connect-on-forge-app/). + */ + "AddonPropertiesResource.getAddonProperties_get": { + parameters: { + path: { + /** @description The key of the app, as defined in its descriptor. */ + addonKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + }; + }; + /** + * Get app property + * @description Returns the key and value of an app's property. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + * Additionally, Forge apps published on the Marketplace can access properties of Connect apps they were [migrated from](https://developer.atlassian.com/platform/forge/build-a-connect-on-forge-app/). + */ + "AddonPropertiesResource.getAddonProperty_get": { + parameters: { + path: { + /** @description The key of the app, as defined in its descriptor. */ + addonKey: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the property key is longer than 127 characters. */ + 400: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the property is not found or doesn't belong to the app. */ + 404: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + }; + }; + /** + * Set app property + * @description Sets the value of an app's property. Use this resource to store custom data for your app. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + */ + "AddonPropertiesResource.putAddonProperty_put": { + parameters: { + path: { + /** @description The key of the app, as defined in its descriptor. */ + addonKey: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the property is updated. */ + 200: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned is the property is created. */ + 201: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** + * @description Returned if: + * * the property key is longer than 127 characters. + * * the value is not valid JSON. + * * the value is longer than 32768 characters. + */ + 400: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + }; + }; + /** + * Delete app property + * @description Deletes an app's property. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + */ + "AddonPropertiesResource.deleteAddonProperty_delete": { + parameters: { + path: { + /** @description The key of the app, as defined in its descriptor. */ + addonKey: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the property key is longer than 127 characters. */ + 400: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the property is not found or doesn't belong to the app. */ + 404: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + }; + }; + /** + * Get modules + * @description Returns all modules registered dynamically by the calling app. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request. + */ + "DynamicModulesResource.getModules_get": { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ConnectModules"]; + }; + }; + /** @description Returned if the call is not from a Connect app. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorMessage"]; + }; + }; + }; + }; + /** + * Register modules + * @description Registers a list of modules. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request. + */ + "DynamicModulesResource.registerModules_post": { + requestBody: { + content: { + "application/json": components["schemas"]["ConnectModules"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** + * @description Returned if: + * * any of the provided modules is invalid. For example, required properties are missing. + * * any of the modules conflict with registered dynamic modules or modules defined in the app descriptor. For example, there are duplicate keys. + * + * Details of the issues encountered are included in the error message. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorMessage"]; + }; + }; + /** @description Returned if the call is not from a Connect app. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorMessage"]; + }; + }; + }; + }; + /** + * Remove modules + * @description Remove all or a list of modules registered by the calling app. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request. + */ + "DynamicModulesResource.removeModules_delete": { + parameters: { + query?: { + /** + * @description The key of the module to remove. To include multiple module keys, provide multiple copies of this parameter. + * For example, `moduleKey=dynamic-attachment-entity-property&moduleKey=dynamic-select-field`. + * Nonexistent keys are ignored. + */ + moduleKey?: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the call is not from a Connect app. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorMessage"]; + }; + }; + }; + }; + /** + * Bulk update custom field value + * @description Updates the value of a custom field added by Connect apps on one or more issues. + * The values of up to 200 custom fields can be updated. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request + */ + "AppIssueFieldValueUpdateResource.updateIssueFields_put": { + parameters: { + header: { + /** @description The ID of the transfer. */ + "Atlassian-Transfer-Id": string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "updateValueList": [ + * { + * "_type": "StringIssueField", + * "issueID": 10001, + * "fieldID": 10076, + * "string": "new string value" + * }, + * { + * "_type": "TextIssueField", + * "issueID": 10002, + * "fieldID": 10077, + * "text": "new text value" + * }, + * { + * "_type": "SingleSelectIssueField", + * "issueID": 10003, + * "fieldID": 10078, + * "optionID": "1" + * }, + * { + * "_type": "MultiSelectIssueField", + * "issueID": 10004, + * "fieldID": 10079, + * "optionID": "2" + * }, + * { + * "_type": "RichTextIssueField", + * "issueID": 10005, + * "fieldID": 10080, + * "richText": "new rich text value" + * }, + * { + * "_type": "NumberIssueField", + * "issueID": 10006, + * "fieldID": 10082, + * "number": 54 + * } + * ] + * } + */ + "application/json": components["schemas"]["ConnectCustomFieldValues"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** + * @description Returned if: + * * the transfer ID is not found. + * * the authorisation credentials are incorrect or missing. + */ + 403: { + content: never; + }; + }; + }; + /** + * Bulk update entity properties + * @description Updates the values of multiple entity properties for an object, up to 50 updates per request. This operation is for use by Connect apps during app migration. + */ + "MigrationResource.updateEntityPropertiesValue_put": { + parameters: { + header: { + /** @description The app migration transfer ID. */ + "Atlassian-Transfer-Id": string; + }; + path: { + /** @description The type indicating the object that contains the entity properties. */ + entityType: "IssueProperty" | "CommentProperty" | "DashboardItemProperty" | "IssueTypeProperty" | "ProjectProperty" | "UserProperty" | "WorklogProperty" | "BoardProperty" | "SprintProperty"; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["EntityPropertyDetails"][]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authorisation credentials are incorrect or missing. */ + 403: { + content: never; + }; + }; + }; + /** + * Get workflow transition rule configurations + * @description Returns configurations for workflow transition rules migrated from server to cloud and owned by the calling Connect app. + */ + "MigrationResource.workflowRuleSearch_post": { + parameters: { + header: { + /** @description The app migration transfer ID. */ + "Atlassian-Transfer-Id": string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["WorkflowRulesSearch"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowRulesSearchDetails"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authorisation credentials are incorrect or missing. */ + 403: { + content: never; + }; + }; + }; + /** + * Retrieve the attributes of service registries + * @description Retrieve the attributes of given service registries. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request and the servicesIds belong to the tenant you are requesting + */ + "ServiceRegistryResource.services_get": { + parameters: { + query: { + /** + * @description The ID of the services (the strings starting with "b:" need to be decoded in Base64). + * @example ["ari:cloud:graph::service/ca075ed7-6ea7-4563-acb3-000000000000/f51d7252-61e0-11ee-b94d-000000000000", "ari:cloud:graph::service/ca075ed7-6ea7-4563-acb3-000000000000/f51d7252-61e0-11ee-b94d-000000000001"] + */ + serviceIds: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ServiceRegistry"][]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description The request needs to be authenticated. */ + 401: { + content: never; + }; + /** @description The request isn't authorized. */ + 403: { + content: never; + }; + /** @description The endpoint failed internally. */ + 500: { + content: never; + }; + /** @description The endpoint isn't ready for receiving requests. */ + 501: { + content: never; + }; + /** @description The upstream service is busy. */ + 504: { + content: never; + }; + }; + }; + /** + * Set app property (Forge) + * @description Sets the value of a Forge app's property. + * These values can be retrieved in [Jira expressions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) + * through the `app` [context variable](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#context-variables). + * + * For other use cases, use the [Storage API](https://developer.atlassian.com/platform/forge/runtime-reference/storage-api/). + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** Only Forge apps can make this request. + */ + "AddonPropertiesResource.putAppProperty_put": { + parameters: { + path: { + /** @description The key of the property. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the property is updated. */ + 200: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned is the property is created. */ + 201: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** + * @description Returned if: + * * the property key is longer than 127 characters. + * * the value isn't valid JSON. + * * the value is longer than 32768 characters. + */ + 400: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request isn't made directly by an app or if it's an impersonated request. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete app property (Forge) + * @description Deletes a Forge app's property. + * + * **[Permissions](#permissions) required:** Only Forge apps can make this request. + */ + "AddonPropertiesResource.deleteAppProperty_delete": { + parameters: { + path: { + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the property key is longer than 127 characters. */ + 400: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request isn't made directly by an app or if it's an impersonated request. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the property isn't found or doesn't belong to the app. */ + 404: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + }; + }; +} diff --git a/lib/generated/openapi-cloud.js b/lib/generated/openapi-cloud.js new file mode 100644 index 0000000..8fb5a2c --- /dev/null +++ b/lib/generated/openapi-cloud.js @@ -0,0 +1,6 @@ +"use strict"; +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/lib/generated/openapi-server.d.ts b/lib/generated/openapi-server.d.ts new file mode 100644 index 0000000..c5c939f --- /dev/null +++ b/lib/generated/openapi-server.d.ts @@ -0,0 +1,9269 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ +export interface paths { + "/api/2/application-properties": { + /** @description Returns an application property. */ + get: operations["getProperty"]; + }; + "/api/2/application-properties/advanced-settings": { + /** @description Returns the properties that are displayed on the "General Configuration > Advanced Settings" page. */ + get: operations["getAdvancedSettings"]; + }; + "/api/2/application-properties/{id}": { + /** @description Modify an application property via PUT. The "value" field present in the PUT will override the existing value. */ + put: operations["setPropertyViaRestfulTable"]; + parameters: { + path: { + id: string; + }; + }; + }; + "/api/2/applicationrole": { + /** + * @description Returns all ApplicationRoles in the system. Will also return an ETag header containing a version hash of the + * collection of ApplicationRoles. + */ + get: operations["getAll"]; + /** + * @description Updates the ApplicationRoles with the passed data if the version hash is the same as the server. + * Only the groups and default groups setting of the role may be updated. Requests to change the key + * or the name of the role will be silently ignored. It is acceptable to pass only the roles that are updated + * as roles that are present in the server but not in data to update with, will not be deleted. + */ + put: operations["putBulk"]; + }; + "/api/2/applicationrole/{key}": { + /** @description Returns the ApplicationRole with passed key if it exists. */ + get: operations["get"]; + /** + * @description Updates the ApplicationRole with the passed data. Only the groups and default groups setting of the + * role may be updated. Requests to change the key or the name of the role will be silently ignored. + *

+ * Optional: If versionHash is passed through the If-Match header the request will be rejected if not the + * same as server + */ + put: operations["put"]; + parameters: { + path: { + /** @description the key of the role to update. */ + key: string; + }; + }; + }; + "/api/2/attachment/meta": { + /** + * @description Returns the meta information for an attachments, specifically if they are enabled and the maximum upload size + * allowed. + */ + get: operations["getAttachmentMeta"]; + }; + "/api/2/attachment/{id}": { + /** @description Returns the meta-data for an attachment, including the URI of the actual attached file. */ + get: operations["getAttachment"]; + /** @description Remove an attachment from an issue. */ + delete: operations["removeAttachment"]; + parameters: { + path: { + /** @description id of the attachment to remove */ + id: string; + }; + }; + }; + "/api/2/attachment/{id}/expand/human": { + /** @description Tries to expand an attachment. Output is human-readable and subject to change. */ + get: operations["expandForHumans"]; + parameters: { + path: { + /** @description the id of the attachment to expand. */ + id: string; + }; + }; + }; + "/api/2/attachment/{id}/expand/raw": { + /** @description Tries to expand an attachment. Output is raw and should be backwards-compatible through the course of time. */ + get: operations["expandForMachines"]; + parameters: { + path: { + /** @description the id of the attachment to expand. */ + id: string; + }; + }; + }; + "/api/2/auditing/record": { + /** @description Returns auditing records filtered using provided parameters */ + get: operations["getRecords"]; + /** @description Store a record in audit log */ + post: operations["addRecord"]; + }; + "/api/2/avatar/{type}/system": { + /** @description Returns all system avatars of the given type. */ + get: operations["getAllSystemAvatars"]; + parameters: { + path: { + /** @description the avatar type */ + type: string; + }; + }; + }; + "/api/2/avatar/{type}/temporary": { + /** @description Creates temporary avatar */ + post: operations["storeTemporaryAvatar"]; + parameters: { + path: { + /** @description the avatar type */ + type: string; + }; + }; + }; + "/api/2/avatar/{type}/temporaryCrop": { + /** @description Updates the cropping instructions of the temporary avatar. */ + post: operations["createAvatarFromTemporary"]; + parameters: { + path: { + /** @description the avatar type */ + type: string; + }; + }; + }; + "/api/2/cluster/index-snapshot/{nodeId}": { + /** @description request current index from node (the request is processed asynchronously) */ + put: operations["requestCurrentIndexFromNode"]; + parameters: { + path: { + nodeId: string; + }; + }; + }; + "/api/2/cluster/node/{nodeId}": { + /** @description Delete the node from the cluster if state of node is OFFLINE. */ + delete: operations["deleteNode"]; + parameters: { + path: { + nodeId: string; + }; + }; + }; + "/api/2/cluster/node/{nodeId}/offline": { + /** + * @description Change the node's state to offline if the node is reporting as active, but is not alive. + * Don't use this method as an equivalent of running ./stop-jira.sh. This method doesn't shut down + * a node, but only changes its state, so that other nodes don't communicate with it. + */ + put: operations["changeNodeStateToOffline"]; + parameters: { + path: { + nodeId: string; + }; + }; + }; + "/api/2/cluster/nodes": { + get: operations["getAllNodes"]; + }; + "/api/2/cluster/zdu/approve": { + post: operations["approveUpgrade"]; + }; + "/api/2/cluster/zdu/cancel": { + post: operations["cancelUpgrade"]; + }; + "/api/2/cluster/zdu/retryUpgrade": { + post: operations["acknowledgeErrors"]; + }; + "/api/2/cluster/zdu/start": { + post: operations["setReadyToUpgrade"]; + }; + "/api/2/cluster/zdu/state": { + get: operations["getState"]; + }; + "/api/2/comment/{commentId}/properties": { + /** @description Returns the keys of all properties for the comment identified by the key or by the id. */ + get: operations["getPropertiesKeys"]; + parameters: { + path: { + /** @description the comment from which keys will be returned. */ + commentId: string; + }; + }; + }; + "/api/2/comment/{commentId}/properties/{propertyKey}": { + /** + * @description Returns the value of the property with a given key from the comment identified by the key or by the id. The user who retrieves + * the property is required to have permissions to read the comment. + */ + get: operations["getProperty"]; + /** + * @description Sets the value of the specified comment's property. + *

+ * You can use this resource to store a custom data against the comment identified by the key or by the id. The user + * who stores the data is required to have permissions to administer the comment. + *

+ */ + put: operations["setProperty"]; + /** + * @description Removes the property from the comment identified by the key or by the id. Ths user removing the property is required + * to have permissions to administer the comment. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + /** @description the comment from which keys will be returned. */ + commentId: string; + /** @description the key of the property to return. */ + propertyKey: string; + }; + }; + }; + "/api/2/component": { + /** @description Create a component via POST. */ + post: operations["createComponent"]; + }; + "/api/2/component/page": { + /** @description Returns paginated list of filtered active components */ + get: operations["getPaginatedComponents"]; + }; + "/api/2/component/{id}": { + /** @description Returns a project component. */ + get: operations["getComponent"]; + /** + * @description Modify a component via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field + * is not present, it is silently ignored. + *

+ * If leadUserName is an empty string ("") the component lead will be removed. + */ + put: operations["updateComponent"]; + /** @description Delete a project component. */ + delete: operations["delete"]; + parameters: { + path: { + /** @description The component to delete. */ + id: string; + }; + }; + }; + "/api/2/component/{id}/relatedIssueCounts": { + /** @description Returns counts of issues related to this component. */ + get: operations["getComponentRelatedIssues"]; + parameters: { + path: { + /** @description a String containing the component id */ + id: string; + }; + }; + }; + "/api/2/configuration": { + /** + * @description Returns the information if the optional features in Jira are enabled or disabled. If the time tracking is enabled, + * it also returns the detailed information about time tracking configuration. + */ + get: operations["getConfiguration"]; + }; + "/api/2/customFieldOption/{id}": { + /** @description Returns a full representation of the Custom Field Option that has the given id. */ + get: operations["getCustomFieldOption"]; + parameters: { + path: { + /** @description a String containing an Custom Field Option id */ + id: string; + }; + }; + }; + "/api/2/customFields": { + get: operations["getCustomFields"]; + delete: operations["bulkDeleteCustomFields"]; + }; + "/api/2/customFields/{customFieldId}/options": { + /** + * @description Returns custom field's options defined in a given context composed of projects and issue types. + *

+ * If the projects and issue types match more than one context or the context for such a combination does not exist then no options are returned. + */ + get: operations["getCustomFieldOptions"]; + parameters: { + path: { + /** @description id of a custom field. */ + customFieldId: number; + }; + }; + }; + "/api/2/dashboard": { + /** @description Returns a list of all dashboards, optionally filtering them. */ + get: operations["list"]; + }; + "/api/2/dashboard/{dashboardId}/items/{itemId}/properties": { + /** @description Returns the keys of all properties for the dashboard item identified by the id. */ + get: operations["getPropertiesKeys"]; + parameters: { + path: { + /** @description the dashboard item from which keys will be returned. */ + itemId: string; + dashboardId: string; + }; + }; + }; + "/api/2/dashboard/{dashboardId}/items/{itemId}/properties/{propertyKey}": { + /** + * @description Returns the value of the property with a given key from the dashboard item identified by the id. + * The user who retrieves the property is required to have permissions to read the dashboard item. + */ + get: operations["getProperty"]; + /** + * @description Sets the value of the specified dashboard item's property. + *

+ * You can use this resource to store a custom data against the dashboard item identified by the id. + * The user who stores the data is required to have permissions to administer the dashboard item. + *

+ */ + put: operations["setProperty"]; + /** + * @description Removes the property from the dashboard item identified by the key or by the id. Ths user removing the property is required + * to have permissions to administer the dashboard item. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + /** @description the dashboard item from which keys will be returned. */ + itemId: string; + dashboardId: string; + /** @description the key of the property to return. */ + propertyKey: string; + }; + }; + }; + "/api/2/dashboard/{id}": { + /** @description Returns a single dashboard. */ + get: operations["getDashboard"]; + parameters: { + path: { + /** @description the dashboard id */ + id: string; + }; + }; + }; + "/api/2/email-templates": { + /** @description Creates a zip file containing email templates at local home and returns the file. */ + get: operations["downloadEmailTemplates"]; + /** @description Extracts given zip file to temporary templates folder. If the folder already exists it will replace it's content */ + post: operations["uploadEmailTemplates"]; + }; + "/api/2/email-templates/apply": { + /** @description Replaces the current email templates pack with previously uploaded one, if exists. */ + post: operations["applyEmailTemplates"]; + }; + "/api/2/email-templates/revert": { + /** @description Replaces the current email templates pack with default templates, which are copied over from Jira binaries. */ + post: operations["revertEmailTemplatesToDefault"]; + }; + "/api/2/email-templates/types": { + /** @description Returns a list of root templates mapped with Event Types. The list can be used to decide which test emails to send. */ + get: operations["getEmailTypes"]; + }; + "/api/2/field": { + /** @description Returns a list of all fields, both System and Custom */ + get: operations["getFields"]; + /** @description Creates a custom field using a definition (object encapsulating custom field data) */ + post: operations["createCustomField"]; + }; + "/api/2/filter": { + /** + * @description Creates a new filter, and returns newly created filter. + * Currently sets permissions just using the users default sharing permissions + */ + post: operations["createFilter"]; + }; + "/api/2/filter/defaultShareScope": { + /** @description Returns the default share scope of the logged-in user. */ + get: operations["getDefaultShareScope"]; + /** + * @description Sets the default share scope of the logged-in user. + *

+ * Available values are: AUTHENTICATED (for sharing with all logged-in users) and PRIVATE (for no shares). + */ + put: operations["setDefaultShareScope"]; + }; + "/api/2/filter/favourite": { + /** @description Returns the favourite filters of the logged-in user. */ + get: operations["getFavouriteFilters"]; + }; + "/api/2/filter/{id}": { + /** @description Returns a filter given an id */ + get: operations["getFilter"]; + /** + * @description Updates an existing filter, and returns its new value. + *

+ * The following properties of a filter can be updated: 'jql', 'name', 'description'. + * Additionally, administrators can also update the 'owner' field. + * To get, set or unset 'favourite', use rest/api/1.0/filters/{id}/favourite with GET, PUT and DELETE methods instead. + *

+ */ + put: operations["editFilter"]; + /** @description Delete a filter. */ + delete: operations["deleteFilter"]; + parameters: { + path: { + /** @description the id of the filter being looked up */ + id: number; + }; + }; + }; + "/api/2/filter/{id}/columns": { + /** + * @description Returns the default columns for the given filter. Currently logged in user will be used as + * the user making such request. + */ + get: operations["defaultColumns"]; + /** @description Sets the default columns for the given filter. */ + put: operations["setColumns"]; + /** @description Resets the columns for the given filter such that the filter no longer has its own column config. */ + delete: operations["resetColumns"]; + parameters: { + path: { + /** @description id of the filter */ + id: number; + }; + }; + }; + "/api/2/filter/{id}/permission": { + /** @description Returns all share permissions of the given filter. */ + get: operations["getSharePermissions"]; + /** @description Adds a share permissions to the given filter. Adding a global permission removes all previous permissions from the filter. */ + post: operations["addSharePermission"]; + parameters: { + path: { + id: number; + }; + }; + }; + "/api/2/filter/{id}/permission/{permission-id}": { + /** @description Removes a share permissions from the given filter. */ + delete: operations["deleteSharePermission"]; + parameters: { + path: { + id: number; + "permission-id": number; + }; + }; + }; + "/api/2/filter/{id}/permission/{permissionId}": { + /** @description Returns a single share permission of the given filter. */ + get: operations["getSharePermission"]; + parameters: { + path: { + permissionId: number; + id: number; + }; + }; + }; + "/api/2/group": { + /** + * @description Returns REST representation for the requested group. Allows to get list of active users belonging to the + * specified group and its subgroups if "users" expand option is provided. You can page through users list by using + * indexes in expand param. For example to get users from index 10 to index 15 use "users[10:15]" expand value. This + * will return 6 users (if there are at least 16 users in this group). Indexes are 0-based and inclusive. + *

+ * This resource is deprecated, please use group/member API instead. + */ + get: operations["getGroup"]; + /** + * @description Creates a group by given group parameter + *

+ * Returns REST representation for the requested group. + */ + post: operations["createGroup"]; + /** + * @description Deletes a group by given group parameter. + *

+ * Returns no content + */ + delete: operations["removeGroup"]; + }; + "/api/2/group/member": { + /** + * @description This resource returns a paginated list of users who are members of the specified group and its subgroups. + * Users in the page are ordered by user names. User of this resource is required to have sysadmin or admin permissions. + */ + get: operations["getUsersFromGroup"]; + }; + "/api/2/group/user": { + /** + * @description Adds given user to a group. + *

+ * Returns the current state of the group. + */ + post: operations["addUserToGroup"]; + /** + * @description Removes given user from a group. + *

+ * Returns no content + */ + delete: operations["removeUserFromGroup"]; + }; + "/api/2/groups/picker": { + /** + * @description Returns groups with substrings matching a given query. This is mainly for use with + * the group picker, so the returned groups contain html to be used as picker suggestions. + * The groups are also wrapped in a single response object that also contains a header for + * use in the picker, specifically Showing X of Y matching groups. + *

+ * The number of groups returned is limited by the system property "jira.ajax.autocomplete.limit" + *

+ * The groups will be unique and sorted. + */ + get: operations["findGroups"]; + }; + "/api/2/groupuserpicker": { + /** + * @description Returns a list of users and groups matching query with highlighting. This resource cannot be accessed + * anonymously. + */ + get: operations["findUsersAndGroups"]; + }; + "/api/2/index-snapshot": { + /** + * @description Lists available index snapshots absolute paths with timestamps. + *

+ * Only System Administrator can request listing index snapshots. + */ + get: operations["listIndexSnapshot"]; + /** + * @description Tries to start taking an index snapshot if no other snapshot creation process is in progress. + * Performs a cleanup of index snapshots directory so only a limited number of most recent snapshots are persisted. + * If another snapshot creation process is in progress, returns 409 without waiting for the other process to complete. + *

+ * Only System Administrator can request creation of snapshot. There is no guarantee as to the time after which the snapshot will be available. + */ + post: operations["createIndexSnapshot"]; + }; + "/api/2/index-snapshot/isRunning": { + /** + * @description Answers true if index snapshot creation is currently running. + *

+ * Only System Administrator can request current snapshot creation status. + */ + get: operations["isIndexSnapshotRunning"]; + }; + "/api/2/index/summary": { + /** + * @description Summarizes index condition of current node. + *

+ * Returned data consists of: + *

    + *
  • nodeId - Node identifier.
  • + *
  • reportTime - Time of this report creation.
  • + *
  • issueIndex - Summary of issue index status.
  • + *
  • replicationQueues - Map of index replication queues, where + * keys represent nodes from which replication operations came from.
  • + *
+ *

+ * issueIndex can contain: + *

    + *
  • indexReadable - If false the end point failed to read data from issue index + * (check Jira logs for detailed stack trace), otherwise true. + * When false other fields of issueIndex can be not visible.
  • + *
  • countInDatabase - Count of issues found in database.
  • + *
  • countInIndex - Count of issues found while querying index.
  • + *
  • lastUpdatedInDatabase - Time of last update of issue found in database.
  • + *
  • lastUpdatedInIndex - Time of last update of issue found while querying index.
  • + *
+ *

+ * replicationQueues's map values can contain: + *

    + *
  • lastConsumedOperation - Last executed index replication operation by current node from sending node's queue.
  • + *
  • lastConsumedOperation.id - Identifier of the operation.
  • + *
  • lastConsumedOperation.replicationTime - Time when the operation was sent to other nodes.
  • + *
  • lastOperationInQueue - Last index replication operation in sending node's queue.
  • + *
  • lastOperationInQueue.id - Identifier of the operation.
  • + *
  • lastOperationInQueue.replicationTime - Time when the operation was sent to other nodes.
  • + *
  • queueSize - Number of operations in queue from sending node to current node.
  • + *
+ */ + get: operations["getIndexSummary"]; + }; + "/api/2/issue": { + /** + * @description Creates an issue or a sub-task from a JSON representation. + *

+ * The fields that can be set on create, in either the fields parameter or the update parameter can be determined + * using the /rest/api/2/issue/createmeta resource. + * If a field is not configured to appear on the create screen, then it will not be in the createmeta, and a field + * validation error will occur if it is submitted. + *

+ * Creating a sub-task is similar to creating a regular issue, with two important differences: + *

    + *
  • the issueType field must correspond to a sub-task issue type (you can use + * /issue/createmeta to discover sub-task issue types), and
  • + *
  • you must provide a parent field in the issue create request containing the id or key of the + * parent issue.
  • + *
  • The updateHistory param adds the project that this issue is created in, to the current user's project history, + * if set to true (by default, the project history is not updated).
  • + *
  • You can view the project history in the Jira application, via the Projects dropdown.
  • + *
+ */ + post: operations["createIssue"]; + }; + "/api/2/issue/archive": { + /** @description Archives a list of issues. */ + post: operations["archiveIssues"]; + }; + "/api/2/issue/bulk": { + /** + * @description Creates issues or sub-tasks from a JSON representation. + *

+ * Creates many issues in one bulk operation. + *

+ * Creating a sub-task is similar to creating a regular issue. More details can be found in createIssue section: + * {@link IssueResource#createIssue(boolean, IssueUpdateBean)}}} + */ + post: operations["createIssues"]; + }; + "/api/2/issue/createmeta/{projectIdOrKey}/issuetypes": { + /** + * @description Returns the metadata for issue types used for creating issues. + * Data will not be returned if the user does not have permission to create issues in that project. + */ + get: operations["getCreateIssueMetaProjectIssueTypes"]; + parameters: { + path: { + /** @description to get metadata for */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/issue/createmeta/{projectIdOrKey}/issuetypes/{issueTypeId}": { + /** + * @description Returns the metadata for issue types used for creating issues. + * Data will not be returned if the user does not have permission to create issues in that project. + */ + get: operations["getCreateIssueMetaFields"]; + parameters: { + path: { + /** @description to get metadata for */ + issueTypeId: string; + /** @description to get metadata for */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/issue/picker": { + /** + * @description Returns suggested issues which match the auto-completion query for the user which executes this request. This REST + * method will check the user's history and the user's browsing context and select this issues, which match the query. + */ + get: operations["getIssuePickerResource"]; + }; + "/api/2/issue/{issueIdOrKey}": { + /** + * @description Returns a full representation of the issue for the given issue key. + *

+ * An issue JSON consists of the issue key, a collection of fields, + * a link to the workflow transition sub-resource, and (optionally) the HTML rendered values of any fields that support it + * (e.g. if wiki syntax is enabled for the description or comments). + *

+ * The fields param (which can be specified multiple times) gives a comma-separated list of fields + * to include in the response. This can be used to retrieve a subset of fields. + * A particular field can be excluded by prefixing it with a minus. + *

+ * By default, all (*all) fields are returned in this get-issue resource. Note: the default is different + * when doing a jql search -- the default there is just navigable fields (*navigable). + *

    + *
  • *all - include all fields
  • + *
  • *navigable - include just navigable fields
  • + *
  • summary,comment - include just the summary and comments
  • + *
  • -comment - include everything except comments (the default is *all for get-issue)
  • + *
  • *all,-comment - include everything except comments
  • + *
+ *

+ * The {@code properties} param is similar to {@code fields} and specifies a comma-separated list of issue + * properties to include. Unlike {@code fields}, properties are not included by default. To include them all + * send {@code ?properties=*all}. You can also include only specified properties or exclude some properties + * with a minus (-) sign. + *

+ *

    + *
  • {@code *all} - include all properties
  • + *
  • {@code *all, -prop1} - include all properties except {@code prop1}
  • + *
  • {@code prop1, prop1} - include {@code prop1} and {@code prop2} properties
  • + *
+ *

+ *

+ * Jira will attempt to identify the issue by the issueIdOrKey path parameter. This can be an issue id, + * or an issue key. If the issue cannot be found via an exact match, Jira will also look for the issue in a case-insensitive way, or + * by looking to see if the issue was moved. In either of these cases, the request will proceed as normal (a 302 or other redirect + * will not be returned). The issue key contained in the response will indicate the current value of issue's key. + *

+ * The expand param is used to include, hidden by default, parts of response. This can be used to include: + *

    + *
  • renderedFields - field values in HTML format
  • + *
  • names - display name of each field
  • + *
  • schema - schema for each field which describes a type of the field
  • + *
  • transitions - all possible transitions for the given issue
  • + *
  • operations - all possibles operations which may be applied on issue
  • + *
  • editmeta - information about how each field may be edited. It contains field's schema as well.
  • + *
  • changelog - history of all changes of the given issue
  • + *
  • versionedRepresentations - + * REST representations of all fields. Some field may contain more recent versions. RESET representations are numbered. + * The greatest number always represents the most recent version. It is recommended that the most recent version is used. + * version for these fields which provide a more recent REST representation. + * After including versionedRepresentations "fields" field become hidden.
  • + *
+ */ + get: operations["getIssue"]; + /** + * @description Edits an issue from a JSON representation. + *

+ * The issue can either be updated by setting explicit the field value(s) + * or by using an operation to change the field value. + *

+ * The fields that can be updated, in either the fields parameter or the update parameter, can be determined + * using the /rest/api/2/issue/{issueIdOrKey}/editmeta resource.
+ * If a field is not configured to appear on the edit screen, then it will not be in the editmeta, and a field + * validation error will occur if it is submitted. + *

+ * Specifying a "field_id": field_value in the "fields" is a shorthand for a "set" operation in the "update" section.
+ * Field should appear either in "fields" or "update", not in both. + */ + put: operations["editIssue"]; + /** + * @description Delete an issue. + *

+ * If the issue has subtasks you must set the parameter deleteSubtasks=true to delete the issue. + * You cannot delete an issue without its subtasks also being deleted. + */ + delete: operations["deleteIssue"]; + parameters: { + path: { + /** @description the issue id or key to update (i.e. JRA-1330) */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/archive": { + /** @description Archives an issue. */ + put: operations["archiveIssue"]; + parameters: { + path: { + /** @description Issue id or issue key */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/assignee": { + /** + * @description Assigns an issue to a user. + * You can use this resource to assign issues when the user submitting the request has the assign permission but not the + * edit issue permission. + * If the name is "-1" automatic assignee is used. A null name will remove the assignee. + */ + put: operations["assign"]; + parameters: { + path: { + /** @description a String containing an issue key */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/attachments": { + /** + * @description Add one or more attachments to an issue. + *

+ * This resource expects a multipart post. The media-type multipart/form-data is defined in RFC 1867. Most client + * libraries have classes that make dealing with multipart posts simple. For instance, in Java the Apache HTTP Components + * library provides a + * MultiPartEntity + * that makes it simple to submit a multipart POST. + *

+ * In order to protect against XSRF attacks, because this method accepts multipart/form-data, it has XSRF protection + * on it. This means you must submit a header of X-Atlassian-Token: no-check with the request, otherwise it will be + * blocked. + *

+ * The name of the multipart/form-data parameter that contains attachments must be "file" + *

+ * A simple example to upload a file called "myfile.txt" to issue REST-123: + *

curl -D- -u admin:admin -X POST -H "X-Atlassian-Token: no-check" -F "file=@myfile.txt" http://myhost/rest/api/2/issue/TEST-123/attachments
+ */ + post: operations["addAttachment"]; + parameters: { + path: { + /** @description the issue that you want to add the attachments to */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/comment": { + /** + * @description Returns all comments for an issue. + *

+ * Results can be ordered by the "created" field which means the date a comment was added. + *

+ */ + get: operations["getComments"]; + /** @description Adds a new comment to an issue. */ + post: operations["addComment"]; + parameters: { + path: { + /** @description a string containing the issue id or key the comment will be added to */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/comment/{id}": { + /** @description Returns a single comment. */ + get: operations["getComment"]; + /** @description Updates an existing comment using its JSON representation. */ + put: operations["updateComment"]; + /** @description Deletes an existing comment . */ + delete: operations["deleteComment"]; + parameters: { + path: { + /** @description of the issue the comment belongs to */ + issueIdOrKey: string; + /** @description the ID of the comment to request */ + id: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/comment/{id}/pin": { + put: operations["setPinComment"]; + parameters: { + path: { + issueIdOrKey: string; + id: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/editmeta": { + /** + * @description Returns the meta data for editing an issue. + *

+ * The fields in the editmeta correspond to the fields in the edit screen for the issue. + * Fields not in the screen will not be in the editmeta. + */ + get: operations["getEditIssueMeta"]; + parameters: { + path: { + /** @description the issue whose edit meta data you want to view */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/notify": { + /** @description Sends a notification (email) to the list or recipients defined in the request. */ + post: operations["notify"]; + parameters: { + path: { + /** @description a string containing the issue id or key the comment will be added to */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/pinned-comments": { + /** @description Returns all pinned to the issue comments. */ + get: operations["getPinnedComments"]; + parameters: { + path: { + /** @description of the issue the comment belongs to */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/properties": { + /** @description Returns the keys of all properties for the issue identified by the key or by the id. */ + get: operations["getPropertiesKeys"]; + parameters: { + path: { + /** @description the issue from which keys will be returned. */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/properties/{propertyKey}": { + /** + * @description Returns the value of the property with a given key from the issue identified by the key or by the id. The user who retrieves + * the property is required to have permissions to read the issue. + */ + get: operations["getProperty"]; + /** + * @description Sets the value of the specified issue's property. + *

+ * You can use this resource to store a custom data against the issue identified by the key or by the id. The user + * who stores the data is required to have permissions to edit the issue. + *

+ */ + put: operations["setProperty"]; + /** + * @description Removes the property from the issue identified by the key or by the id. Ths user removing the property is required + * to have permissions to edit the issue. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + /** @description the issue from which keys will be returned. */ + issueIdOrKey: string; + /** @description the key of the property to return. */ + propertyKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/remotelink": { + /** @description A REST sub-resource representing the remote issue links on the issue. */ + get: operations["getRemoteIssueLinks"]; + /** + * @description Creates or updates a remote issue link from a JSON representation. If a globalId is provided and a remote issue link + * exists with that globalId, the remote issue link is updated. Otherwise, the remote issue link is created. + */ + post: operations["createOrUpdateRemoteIssueLink"]; + /** @description Delete the remote issue link with the given global id on the issue. */ + delete: operations["deleteRemoteIssueLinkByGlobalId"]; + parameters: { + path: { + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/remotelink/{linkId}": { + /** @description Get the remote issue link with the given id on the issue. */ + get: operations["getRemoteIssueLinkById"]; + /** @description Updates a remote issue link from a JSON representation. Any fields not provided are set to null. */ + put: operations["updateRemoteIssueLink"]; + /** @description Delete the remote issue link with the given id on the issue. */ + delete: operations["deleteRemoteIssueLinkById"]; + parameters: { + path: { + /** @description the id of the remote issue link */ + linkId: string; + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/restore": { + /** @description Restores an archived issue. */ + put: operations["restoreIssue"]; + parameters: { + path: { + /** @description Issue id or issue key */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/subtask": { + /** @description Returns an issue's subtask list */ + get: operations["getSubTasks"]; + parameters: { + path: { + /** @description The parent issue's key or id */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/subtask/move": { + get: operations["canMoveSubTask"]; + /** + * @description Reorders an issue's subtasks by moving the subtask at index "from" + * to index "to". + */ + post: operations["moveSubTasks"]; + parameters: { + path: { + /** @description The parent issue's key or id */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/transitions": { + /** + * @description Get a list of the transitions possible for this issue by the current user, along with fields that are required and their types. + *

+ * Fields will only be returned if expand=transitions.fields. + *

+ * The fields in the metadata correspond to the fields in the transition screen for that transition. + * Fields not in the screen will not be in the metadata. + */ + get: operations["getTransitions"]; + /** + * @description Perform a transition on an issue. + * When performing the transition you can update or set other issue fields. + *

+ * The fields that can be set on transtion, in either the fields parameter or the update parameter can be determined + * using the /rest/api/2/issue/{issueIdOrKey}/transitions?expand=transitions.fields resource. + * If a field is not configured to appear on the transition screen, then it will not be in the transition metadata, and a field + * validation error will occur if it is submitted. + *

+ * The updateHistory param adds the issues retrieved by this method to the current user's issue history, + * if set to true (by default, the issue history does not include issues retrieved via the REST API). + * You can view the issue history in the Jira application, via the Issues dropdown or by using the + * lastViewed JQL field in an issue search. + */ + post: operations["doTransition"]; + parameters: { + path: { + /** @description the issue you want to transition */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/votes": { + /** @description A REST sub-resource representing the voters on the issue. */ + get: operations["getVotes"]; + /** @description Cast your vote in favour of an issue. */ + post: operations["addVote"]; + /** @description Remove your vote from an issue. (i.e. "unvote") */ + delete: operations["removeVote"]; + parameters: { + path: { + /** @description the issue to view voting information for */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/watchers": { + /** @description Returns the list of watchers for the issue with the given key. */ + get: operations["getIssueWatchers"]; + /** @description Adds a user to an issue's watcher list. */ + post: operations["addWatcher"]; + /** @description Removes a user from an issue's watcher list. */ + delete: operations["removeWatcher"]; + parameters: { + path: { + /** @description a String containing an issue key. */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/worklog": { + /** + * @description Returns all work logs for an issue.
+ * Note: Work logs won't be returned if the Log work field is hidden for the project. + */ + get: operations["getIssueWorklog"]; + /** @description Adds a new worklog entry to an issue. */ + post: operations["addWorklog"]; + parameters: { + path: { + /** @description a string containing the issue id or key the worklog will be added to */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/worklog/{id}": { + /** + * @description Returns a specific worklog.
+ * Note: The work log won't be returned if the Log work field is hidden for the project. + */ + get: operations["getWorklog"]; + /** + * @description Updates an existing worklog entry. + *

Note that:

+ *
    + *
  • Fields possible for editing are: comment, visibility, started, timeSpent and timeSpentSeconds.
  • + *
  • Either timeSpent or timeSpentSeconds can be set.
  • + *
  • Fields which are not set will not be updated.
  • + *
  • For a request to be valid, it has to have at least one field change.
  • + *
+ */ + put: operations["updateWorklog"]; + /** @description Deletes an existing worklog entry. */ + delete: operations["deleteWorklog"]; + parameters: { + path: { + /** @description a string containing the issue id or key the worklog belongs to */ + issueIdOrKey: string; + /** @description id of the worklog to be deleted */ + id: string; + }; + }; + }; + "/api/2/issueLink": { + /** + * @description Creates an issue link between two issues. + * The user requires the link issue permission for the issue which will be linked to another issue. + * The specified link type in the request is used to create the link and will create a link from the first issue + * to the second issue using the outward description. It also create a link from the second issue to the first issue using the + * inward description of the issue link type. + * It will add the supplied comment to the first issue. The comment can have a restriction who can view it. + * If group is specified, only users of this group can view this comment, if roleLevel is specified only users who have the specified role can view this comment. + * The user who creates the issue link needs to belong to the specified group or have the specified role. + */ + post: operations["linkIssues"]; + }; + "/api/2/issueLink/{linkId}": { + /** @description Returns an issue link with the specified id. */ + get: operations["getIssueLink"]; + /** + * @description Deletes an issue link with the specified id. + * To be able to delete an issue link you must be able to view both issues and must have the link issue permission + * for at least one of the issues. + */ + delete: operations["deleteIssueLink"]; + parameters: { + path: { + /** @description the issue link id. */ + linkId: string; + }; + }; + }; + "/api/2/issueLinkType": { + /** + * @description Returns a list of available issue link types, if issue linking is enabled. + * Each issue link type has an id, a name and a label for the outward and inward link relationship. + */ + get: operations["getIssueLinkTypes"]; + /** @description Create a new issue link type. */ + post: operations["createIssueLinkType"]; + }; + "/api/2/issueLinkType/{issueLinkTypeId}": { + /** @description Returns for a given issue link type id all information about this issue link type. */ + get: operations["getIssueLinkType"]; + /** @description Update the specified issue link type. */ + put: operations["updateIssueLinkType"]; + /** @description Delete the specified issue link type. */ + delete: operations["deleteIssueLinkType"]; + parameters: { + path: { + issueLinkTypeId: string; + }; + }; + }; + "/api/2/issuesecurityschemes": { + /** @description Returns all issue security schemes that are defined. */ + get: operations["getIssueSecuritySchemes"]; + }; + "/api/2/issuesecurityschemes/{id}": { + /** @description Returns the issue security scheme along with that are defined. */ + get: operations["getIssueSecurityScheme"]; + parameters: { + path: { + id: number; + }; + }; + }; + "/api/2/issuetype": { + /** @description Returns a list of all issue types visible to the user */ + get: operations["getIssueAllTypes"]; + /** + * @description Creates an issue type from a JSON representation and adds the issue newly created issue type to the default issue + * type scheme. + */ + post: operations["createIssueType"]; + }; + "/api/2/issuetype/page": { + /** @description Returns paginated list of filtered issue types */ + get: operations["getPaginatedIssueTypes"]; + }; + "/api/2/issuetype/{id}": { + /** @description Returns a full representation of the issue type that has the given id. */ + get: operations["getIssueType"]; + /** @description Updates the specified issue type from a JSON representation. */ + put: operations["updateIssueType"]; + /** + * @description Deletes the specified issue type. If the issue type has any associated issues, these issues will be migrated to + * the alternative issue type specified in the parameter. You can determine the alternative issue types by calling + * the /rest/api/2/issuetype/{id}/alternatives resource. + */ + delete: operations["deleteIssueType"]; + parameters: { + path: { + /** @description a String containing an issue type id */ + id: string; + }; + }; + }; + "/api/2/issuetype/{id}/alternatives": { + /** + * @description Returns a list of all alternative issue types for the given issue type id. The list will contain these issues types, to which + * issues assigned to the given issue type can be migrated. The suitable alternatives are issue types which are assigned + * to the same workflow, the same field configuration and the same screen scheme. + */ + get: operations["getAlternativeIssueTypes"]; + parameters: { + path: { + id: string; + }; + }; + }; + "/api/2/issuetype/{id}/avatar": { + /** @description Converts temporary avatar into a real avatar */ + post: operations["createAvatarFromTemporary"]; + parameters: { + path: { + /** @description the id of the issue type, which avatar is updated. */ + id: string; + }; + }; + }; + "/api/2/issuetype/{id}/avatar/temporary": { + /** + * @description Creates temporary avatar using multipart. The response is sent back as JSON stored in a textarea. This is because + * the client uses remote iframing to submit avatars using multipart. So we must send them a valid HTML page back from + * which the client parses the JSON from. + *

+ * Creating a temporary avatar is part of a 3-step process in uploading a new + * avatar for an issue type: upload, crop, confirm. This endpoint allows you to use a multipart upload + * instead of sending the image directly as the request body. + *

+ *

+ * You *must* use "avatar" as the name of the upload parameter:

+ *

+ *

+         *  curl -c cookiejar.txt -X POST -u admin:admin -H "X-Atlassian-Token: no-check" \
+         *    -F "avatar=@mynewavatar.png;type=image/png" \
+         *    'http://localhost:8090/jira/rest/api/2/issuetype/1/avatar/temporary'
+         *  
+ */ + post: operations["storeTemporaryAvatarUsingMultiPart"]; + parameters: { + path: { + /** @description the id of the issue type, which avatar is updated. */ + id: string; + }; + }; + }; + "/api/2/issuetype/{issueTypeId}/properties": { + /** @description Returns the keys of all properties for the issue type identified by the id. */ + get: operations["getPropertyKeys"]; + parameters: { + path: { + /** @description the issue type from which the keys will be returned */ + issueTypeId: string; + }; + }; + }; + "/api/2/issuetype/{issueTypeId}/properties/{propertyKey}": { + /** + * @description Returns the value of the property with a given key from the issue type identified by the id. The user who retrieves + * the property is required to have permissions to view the issue type. + */ + get: operations["getProperty"]; + /** + * @description Sets the value of the specified issue type's property. + *

+ * You can use this resource to store a custom data against an issue type identified by the id. The user + * who stores the data is required to have permissions to edit an issue type. + *

+ */ + put: operations["setProperty"]; + /** + * @description Removes the property from the issue type identified by the id. Ths user removing the property is required + * to have permissions to edit the issue type. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + /** @description the issue type from which the keys will be returned */ + issueTypeId: string; + /** @description the key of the property to return */ + propertyKey: string; + }; + }; + }; + "/api/2/issuetypescheme": { + /** + * @description Returns a list of all issue type schemes visible to the user (must be admin). + *

+ * All issue types associated with the scheme will only be returned if an additional query parameter is provided: + * expand=schemes.issueTypes. + *

+ *

+ * Similarly, the default issue type associated with the scheme (if one exists) will only be returned if + * additional an query parameter is provided: expand=schemes.defaultIssueType. + *

+ *

+ * Note that both query parameters can be used together: expand=schemes.issueTypes,schemes.defaultIssueType. + *

+ */ + get: operations["getAllIssueTypeSchemes"]; + /** @description Creates an issue type scheme from a JSON representation. (Admin required) */ + post: operations["createIssueTypeScheme"]; + }; + "/api/2/issuetypescheme/{schemeId}": { + /** @description Returns a full representation of the issue type scheme that has the given id (must be admin). */ + get: operations["getIssueTypeScheme"]; + /** @description Updates the specified issue type scheme from a JSON representation. (Admin required) */ + put: operations["updateIssueTypeScheme"]; + /** + * @description Deletes the specified issue type scheme. Any projects associated with this IssueTypeScheme will be automatically + * associated with the global default IssueTypeScheme. (Admin required) + */ + delete: operations["deleteIssueTypeScheme"]; + parameters: { + path: { + /** @description the id of the issue type scheme to remove. */ + schemeId: string; + }; + }; + }; + "/api/2/issuetypescheme/{schemeId}/associations": { + /** @description For the specified issue type scheme, returns all of the associated projects. (Admin required) */ + get: operations["getAssociatedProjects"]; + /** + * @description Associates the given projects with the specified issue type scheme. Any existing project-associations the issue + * type scheme has will be overwritten. (Admin required) + */ + put: operations["setProjectAssociationsForScheme"]; + /** @description Adds additional projects to those already associated with the specified issue type scheme. (Admin required) */ + post: operations["addProjectAssociationsToScheme"]; + /** + * @description Removes all project associations for the specified issue type scheme. These projects revert to an association with + * the default/global issue type scheme.(Admin required) + */ + delete: operations["removeAllProjectAssociations"]; + parameters: { + path: { + /** @description the id of the issue type scheme whose project associations we're removing */ + schemeId: string; + }; + }; + }; + "/api/2/issuetypescheme/{schemeId}/associations/{projIdOrKey}": { + /** + * @description For the specified issue type scheme, removes the given project association . This project reverts to an association + * with the default/global issue type scheme.(Admin required) + */ + delete: operations["removeProjectAssociation"]; + parameters: { + path: { + /** @description the id or key of the project that is to be un-associated with the issue type scheme */ + projIdOrKey: string; + /** @description the id of the issue type scheme whose project association we're removing */ + schemeId: string; + }; + }; + }; + "/api/2/jql/autocompletedata": { + /** @description Returns the auto complete data required for JQL searches. */ + get: operations["getAutoComplete"]; + }; + "/api/2/jql/autocompletedata/suggestions": { + /** @description Returns auto complete suggestions for JQL search. */ + get: operations["getFieldAutoCompleteForQueryString"]; + }; + "/api/2/licenseValidator": { + post: operations["validate"]; + }; + "/api/2/monitoring/app": { + get: operations["isAppMonitoringEnabled"]; + post: operations["setAppMonitoringEnabled"]; + }; + "/api/2/monitoring/ipd": { + get: operations["isIpdMonitoringEnabled"]; + post: operations["setAppMonitoringEnabled"]; + }; + "/api/2/monitoring/jmx/areMetricsExposed": { + get: operations["areMetricsExposed"]; + }; + "/api/2/monitoring/jmx/getAvailableMetrics": { + get: operations["getAvailableMetrics"]; + }; + "/api/2/monitoring/jmx/startExposing": { + post: operations["start"]; + }; + "/api/2/monitoring/jmx/stopExposing": { + post: operations["stop"]; + }; + "/api/2/mypermissions": { + /** + * @description Returns all permissions in the system and whether the currently logged in user has them. You can optionally provide a specific context to get permissions for + * (projectKey OR projectId OR issueKey OR issueId) + *
    + *
  • When no context supplied the project related permissions will return true if the user has that permission in ANY project
  • + *
  • If a project context is provided, project related permissions will return true if the user has the permissions in the specified project. + * For permissions that are determined using issue data (e.g Current Assignee), true will be returned if the user meets the permission criteria in ANY issue in that project
  • + *
  • If an issue context is provided, it will return whether or not the user has each permission in that specific issue
  • + *
+ *

+ * NB: The above means that for issue-level permissions (EDIT_ISSUE for example), hasPermission may be true when no context is provided, or when a project context is provided, + * but may be false for any given (or all) issues. This would occur (for example) if Reporters were given the EDIT_ISSUE permission. This is because + * any user could be a reporter, except in the context of a concrete issue, where the reporter is known. + *

+ *

+ * Global permissions will still be returned for all scopes. + *

+ *

+ * Prior to version 6.4 this service returned project permissions with keys corresponding to com.atlassian.jira.security.Permissions.Permission constants. + * Since 6.4 those keys are considered deprecated and this service returns system project permission keys corresponding to constants defined in com.atlassian.jira.permission.ProjectPermissions. + * Permissions with legacy keys are still also returned for backwards compatibility, they are marked with an attribute deprecatedKey=true. + * The attribute is missing for project permissions with the current keys. + *

+ */ + get: operations["getPermissions"]; + }; + "/api/2/mypreferences": { + /** + * @description Returns preference of the currently logged in user. Preference key must be provided as input parameter (key). The + * value is returned exactly as it is. If key parameter is not provided or wrong - status code 404. If value is + * found - status code 200. + */ + get: operations["getPreference"]; + /** + * @description Sets preference of the currently logged in user. Preference key must be provided as input parameters (key). Value + * must be provided as post body. If key or value parameter is not provided - status code 404. If preference is set + * - status code 204. + */ + put: operations["setPreference"]; + /** + * @description Removes preference of the currently logged in user. Preference key must be provided as input parameters (key). If + * key parameter is not provided or wrong - status code 404. If preference is unset - status code 204. + */ + delete: operations["removePreference"]; + }; + "/api/2/myself": { + /** @description Returns currently logged user. This resource cannot be accessed anonymously. */ + get: operations["getUser"]; + /** + * @description Modify currently logged user. The "value" fields present will override the existing value. + * Fields skipped in request will not be changed. Only email and display name can be change that way. + * Requires user password. + */ + put: operations["updateUser"]; + }; + "/api/2/myself/password": { + /** @description Modify caller password. */ + put: operations["changeMyPassword"]; + }; + "/api/2/notificationscheme": { + /** + * @description Returns a paginated list of notification schemes. In order to access notification scheme, the calling user is + * required to have permissions to administer at least one project associated with the requested notification scheme. Each scheme contains + * a list of events and recipient configured to receive notifications for these events. Consumer should allow events without recipients to appear in response. + * The list is ordered by the scheme's name. + * Follow the documentation of /notificationscheme/{id} resource for all details about returned value. + */ + get: operations["getNotificationSchemes"]; + }; + "/api/2/notificationscheme/{id}": { + /** + * @description Returns a full representation of the notification scheme for the given id. This resource will return a + * notification scheme containing a list of events and recipient configured to receive notifications for these events. Consumer + * should allow events without recipients to appear in response. User accessing + * the data is required to have permissions to administer at least one project associated with the requested notification scheme. + *

+ * Notification recipients can be: + *

    + *
  • current assignee - the value of the notificationType is CurrentAssignee
  • + *
  • issue reporter - the value of the notificationType is Reporter
  • + *
  • current user - the value of the notificationType is CurrentUser
  • + *
  • project lead - the value of the notificationType is ProjectLead
  • + *
  • component lead - the value of the notificationType is ComponentLead
  • + *
  • all watchers - the value of the notification type is AllWatchers
  • + *
  • configured user - the value of the notification type is User. Parameter will contain key of the user. Information about the user will be provided + * if user expand parameter is used.
  • + *
  • configured group - the value of the notification type is Group. Parameter will contain name of the group. Information about the group will be provided + * if group expand parameter is used.
  • + *
  • configured email address - the value of the notification type is EmailAddress, additionally information about the email will be provided.
  • + *
  • users or users in groups in the configured custom fields - the value of the notification type is UserCustomField or GroupCustomField. Parameter + * will contain id of the custom field. Information about the field will be provided if field expand parameter is used.
  • + *
  • configured project role - the value of the notification type is ProjectRole. Parameter will contain project role id. Information about the project role + * will be provided if projectRole expand parameter is used.
  • + *
+ * Please see the example for reference. + *

+ * The events can be Jira system events or events configured by administrator. In case of the system events, data about theirs + * ids, names and descriptions is provided. In case of custom events, the template event is included as well. + */ + get: operations["getNotificationScheme"]; + parameters: { + path: { + /** @description an id of the notification scheme to retrieve */ + id: number; + }; + }; + }; + "/api/2/password/policy": { + /** + * @description Returns the list of requirements for the current password policy. For example, "The password must have at least 10 characters.", + * "The password must not be similar to the user's name or email address.", etc. + */ + get: operations["getPasswordPolicy"]; + }; + "/api/2/password/policy/createUser": { + /** + * @description Returns a list of statements explaining why the password policy would disallow a proposed password for a new user. + *

+ * You can use this method to test the password policy validation. This could be done prior to an action + * where a new user and related password are created, using methods like the ones in + * UserService. + * For example, you could use this to validate a password in a create user form in the user interface, as the user enters it.
+ * The username and new password must be not empty to perform the validation.
+ * Note, this method will help you validate against the policy only. It won't check any other validations that might be performed + * when creating a new user, e.g. checking whether a user with the same name already exists. + *

+ */ + post: operations["policyCheckCreateUser"]; + }; + "/api/2/password/policy/updateUser": { + /** + * @description Returns a list of statements explaining why the password policy would disallow a proposed new password for a user with an existing password. + *

+ * You can use this method to test the password policy validation. This could be done prior to an action where the password + * is actually updated, using methods like ChangePassword + * or ResetPassword. + * For example, you could use this to validate a password in a change password form in the user interface, as the user enters it.
+ * The user must exist and the username and new password must be not empty, to perform the validation.
+ * Note, this method will help you validate against the policy only. It won't check any other validations that might be performed + * when submitting a password change/reset request, e.g. verifying whether the old password is valid. + *

+ */ + post: operations["policyCheckUpdateUser"]; + }; + "/api/2/permissions": { + /** @description Returns all permissions that are present in the Jira instance - Global, Project and the global ones added by plugins */ + get: operations["getAllPermissions"]; + }; + "/api/2/permissionscheme": { + /** + * @description Returns a list of all permission schemes. + *

+ * By default only shortened beans are returned. If you want to include permissions of all the schemes, + * then specify the permissions expand parameter. Permissions will be included also if you specify + * any other expand parameter. + *

+ */ + get: operations["getPermissionSchemes"]; + /** + * @description Create a new permission scheme. + * This method can create schemes with a defined permission set, or without. + */ + post: operations["createPermissionScheme"]; + }; + "/api/2/permissionscheme/{permissionSchemeId}/attribute/{attributeKey}": { + get: operations["getSchemeAttribute"]; + parameters: { + path: { + /** @description permission scheme id */ + permissionSchemeId: number; + /** @description permission scheme attribute key */ + attributeKey: string; + }; + }; + }; + "/api/2/permissionscheme/{permissionSchemeId}/attribute/{key}": { + /** + * @description Updates or inserts the attribute for a permission scheme specified by permission scheme id. + * The attribute consists of the key and the value. The value will be converted to Boolean using Boolean#valueOf. + */ + put: operations["setSchemeAttribute"]; + parameters: { + path: { + /** @description permission scheme id */ + permissionSchemeId: number; + /** @description permission scheme attribute key */ + key: string; + }; + }; + }; + "/api/2/permissionscheme/{schemeId}": { + /** @description Returns a permission scheme identified by the given id. */ + get: operations["getPermissionScheme"]; + /** + * @description Updates a permission scheme. + *

+ * If the permissions list is present then it will be set in the permission scheme, which basically means it will overwrite any permission grants that + * existed in the permission scheme. Sending an empty list will remove all permission grants from the permission scheme. + *

+ *

+ * To update just the name and description, do not send permissions list at all. + *

+ *

+ * To add or remove a single permission grant instead of updating the whole list at once use the {schemeId}/permission/ resource. + *

+ */ + put: operations["updatePermissionScheme"]; + /** @description Deletes a permission scheme identified by the given id. */ + delete: operations["deletePermissionScheme"]; + parameters: { + path: { + schemeId: number; + }; + }; + }; + "/api/2/permissionscheme/{schemeId}/permission": { + /** @description Returns all permission grants of the given permission scheme. */ + get: operations["getPermissionSchemeGrants"]; + /** @description Creates a permission grant in a permission scheme. */ + post: operations["createPermissionGrant"]; + parameters: { + path: { + schemeId: number; + }; + }; + }; + "/api/2/permissionscheme/{schemeId}/permission/{permissionId}": { + /** @description Returns a permission grant identified by the given id. */ + get: operations["getPermissionSchemeGrant"]; + /** @description Deletes a permission grant from a permission scheme. */ + delete: operations["deletePermissionSchemeEntity"]; + parameters: { + path: { + permissionId: number; + schemeId: number; + }; + }; + }; + "/api/2/priority": { + /** @description Returns a list of all issue priorities. */ + get: operations["getPriorities"]; + }; + "/api/2/priority/page": { + /** @description Returns a list of all issue priorities. */ + get: operations["getPriorities"]; + }; + "/api/2/priority/{id}": { + /** @description Returns an issue priority. */ + get: operations["getPriority"]; + parameters: { + path: { + /** @description a String containing the priority id */ + id: string; + }; + }; + }; + "/api/2/priorityschemes": { + /** + * @description Returns all priority schemes. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=schemes.projectKeys. + */ + get: operations["getPrioritySchemes"]; + /** @description Creates new priority scheme. */ + post: operations["createPriorityScheme"]; + }; + "/api/2/priorityschemes/{schemeId}": { + /** + * @description Gets a full representation of a priority scheme in JSON format. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + get: operations["getPriorityScheme"]; + /** + * @description Updates a priority scheme. + * Update will be rejected if issue migration would be needed as a result of scheme update. + * Priority scheme update with migration is possible from the UI. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + put: operations["updatePriorityScheme"]; + /** + * @description Deletes a priority scheme. All projects using deleted scheme will use default priority scheme afterwards. + * + * Default priority scheme can't be deleted. + */ + delete: operations["deletePriorityScheme"]; + parameters: { + path: { + /** @description id of priority scheme to get */ + schemeId: number; + }; + }; + }; + "/api/2/project": { + /** + * @description Returns all projects which are visible for the currently logged in user. If no user is logged in, it returns the + * list of projects that are visible when using anonymous access. + */ + get: operations["getAllProjects"]; + /** @description Creates a new project. */ + post: operations["createProject"]; + }; + "/api/2/project/type": { + /** + * @description Returns all the project types defined on the Jira instance, not taking into account whether + * the license to use those project types is valid or not. + */ + get: operations["getAllProjectTypes"]; + }; + "/api/2/project/type/{projectTypeKey}": { + /** @description Returns the project type with the given key. */ + get: operations["getProjectTypeByKey"]; + parameters: { + path: { + projectTypeKey: string; + }; + }; + }; + "/api/2/project/type/{projectTypeKey}/accessible": { + /** + * @description Returns the project type with the given key, if it is accessible to the logged in user. + * This takes into account whether the user is licensed on the Application that defines the project type. + */ + get: operations["getAccessibleProjectTypeByKey"]; + parameters: { + path: { + projectTypeKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}": { + /** + * @description Contains a full representation of a project in JSON format. + *

+ * All project keys associated with the project will only be returned if expand=projectKeys. + *

+ */ + get: operations["getProject"]; + /** + * @description Updates a project. + *

+ * Only non null values sent in JSON will be updated in the project.

+ *

+ * Values available for the assigneeType field are: "PROJECT_LEAD" and "UNASSIGNED".

+ */ + put: operations["updateProject"]; + /** @description Deletes a project. */ + delete: operations["deleteProject"]; + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/archive": { + /** @description Archives a project. */ + put: operations["archiveProject"]; + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/avatar": { + /** + * @description Updates an avatar for a project. This is step 3/3 of changing an avatar for a project: + * + *
    + *
  • Upload (store temporary avatar)
  • + *
  • Crop (create avatar from temporary)
  • + *
  • Update (update project avatar)
  • + *
+ */ + put: operations["updateProjectAvatar"]; + /** + * @description Converts the temporary avatar into the final one. This is step 2/3 of changing an avatar for a project: + * + *
    + *
  • Upload (store temporary avatar)
  • + *
  • Crop (create avatar from temporary)
  • + *
  • Update (update project avatar)
  • + *
+ */ + post: operations["createAvatarFromTemporary"]; + parameters: { + path: { + /** @description project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/avatar/temporary": { + /** + * @description Creates temporary avatar using multipart. The response is sent back as JSON stored in a textarea. This is because + * the client uses remote iframing to submit avatars using multipart. So we must send them a valid HTML page back from + * which the client parses the JSON. + */ + post: operations["storeTemporaryAvatarUsingMultiPart"]; + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/avatar/{id}": { + /** @description Deletes avatar */ + delete: operations["deleteAvatar"]; + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + /** @description database id for avatar */ + id: number; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/avatars": { + /** + * @description Returns all avatars which are visible for the currently logged in user. The avatars are grouped into + * system and custom. + */ + get: operations["getAllAvatars"]; + parameters: { + path: { + /** @description project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/components": { + /** @description Contains a full representation of a the specified project's components. */ + get: operations["getProjectComponents"]; + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/properties": { + /** @description Returns the keys of all properties for the project identified by the key or by the id. */ + get: operations["getPropertiesKeys"]; + parameters: { + path: { + /** @description the project from which keys will be returned. */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/properties/{propertyKey}": { + /** + * @description Returns the value of the property with a given key from the project identified by the key or by the id. The user who retrieves + * the property is required to have permissions to read the project. + */ + get: operations["getProperty"]; + /** + * @description Sets the value of the specified project's property. + *

+ * You can use this resource to store a custom data against the project identified by the key or by the id. The user + * who stores the data is required to have permissions to administer the project. + *

+ */ + put: operations["setProperty"]; + /** + * @description Removes the property from the project identified by the key or by the id. Ths user removing the property is required + * to have permissions to administer the project. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + /** @description the project from which keys will be returned. */ + projectIdOrKey: string; + /** @description the key of the property to return. */ + propertyKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/restore": { + /** + * @description Restore an archived project. + * In case of success restored project should be re-indexed. + */ + put: operations["restoreProject"]; + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/role": { + /** @description Returns all roles in the given project Id or key, with links to full details on each role. */ + get: operations["getProjectRoles"]; + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/role/{id}": { + /** @description Returns the details for a given project role in a project. */ + get: operations["getProjectRole"]; + /** + * @description Updates a project role to include the specified actors (users or groups). Can be also used to clear roles to not include any users or groups. + *

+ * For user actors, their usernames should be used. + */ + put: operations["setActors"]; + /** + * @description Adds an actor (user or group) to a project role. + *

+ * For user actors, their usernames should be used. + */ + post: operations["addActorUsers"]; + /** + * @description Deletes actors (users or groups) from a project role. + *

+ *

    + *
  • Delete a user from the role: /rest/api/2/project/{projectIdOrKey}/role/{roleId}?user={username}
  • + *
  • Delete a group from the role: /rest/api/2/project/{projectIdOrKey}/role/{roleId}?group={groupname}
  • + *
+ */ + delete: operations["deleteActor"]; + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + /** @description the project role id */ + id: number; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/statuses": { + /** @description Get all issue types with valid status values for a project */ + get: operations["getAllStatuses"]; + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/type/{newProjectTypeKey}": { + /** @description Updates the type of a project. */ + put: operations["updateProjectType"]; + parameters: { + path: { + /** @description identity of the project to update */ + projectIdOrKey: string; + /** @description The key of the new project type */ + newProjectTypeKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/version": { + /** + * @description Returns all versions for the specified project. Results are paginated. + *

+ * Results can be ordered by the following fields: + *

    + *
  • sequence
  • + *
  • name
  • + *
  • startDate
  • + *
  • releaseDate
  • + *
+ *

+ */ + get: operations["getProjectVersionsPaginated"]; + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/versions": { + /** @description Contains a full representation of a the specified project's versions. */ + get: operations["getProjectVersions"]; + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/issuesecuritylevelscheme": { + /** @description Returns the issue security scheme for project. */ + get: operations["getIssueSecurityScheme"]; + parameters: { + path: { + projectKeyOrId: string; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/notificationscheme": { + /** + * @description Gets a notification scheme associated with the project. + * Follow the documentation of /notificationscheme/{id} resource for all details about returned value. + */ + get: operations["getNotificationScheme"]; + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/permissionscheme": { + /** @description Gets a permission scheme assigned with a project. */ + get: operations["getAssignedPermissionScheme"]; + /** @description Assigns a permission scheme with a project. */ + put: operations["assignPermissionScheme"]; + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/priorityscheme": { + /** + * @description Gets a full representation of a priority scheme in JSON format used by specified project. + * User must be global administrator or project administrator. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + get: operations["getAssignedPriorityScheme"]; + /** + * @description Assigns project with priority scheme. + * Priority scheme assign with migration is possible from the UI. + * + * Operation will fail if migration is needed as a result of operation eg. there are issues with priorities invalid in the destination scheme. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + put: operations["assignPriorityScheme"]; + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/priorityscheme/{schemeId}": { + /** + * @description Unassigns project from priority scheme. + * + * Operation will fail for defualt priority scheme, project is not found or project is not associated with provided priority scheme. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + delete: operations["unassignPriorityScheme"]; + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + /** @description object that contains an id of the scheme */ + schemeId: number; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/securitylevel": { + /** + * @description Returns all security levels for the project that the current logged in user has access to. + * If the user does not have the Set Issue Security permission, the list will be empty. + */ + get: operations["getSecurityLevelsForProject"]; + parameters: { + path: { + /** @description - key or id of project to list the security levels for */ + projectKeyOrId: string; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/workflowscheme": { + /** @description Returns the workflow scheme that is associated with requested project. */ + get: operations["getWorkflowSchemeForProject"]; + parameters: { + path: { + /** @description the key or id of the project. */ + projectKeyOrId: string; + }; + }; + }; + "/api/2/projectCategory": { + /** @description Returns all project categories */ + get: operations["getAllProjectCategories"]; + /** @description Create a project category via POST. */ + post: operations["createProjectCategory"]; + }; + "/api/2/projectCategory/{id}": { + /** @description Contains a representation of a project category in JSON format. */ + get: operations["getProjectCategoryById"]; + /** + * @description Modify a project category via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field + * is not present, it is silently ignored. + */ + put: operations["updateProjectCategory"]; + /** @description Delete a project category. */ + delete: operations["removeProjectCategory"]; + parameters: { + path: { + id: number; + }; + }; + }; + "/api/2/projects/picker": { + /** + * @description Returns a list of projects visible to the user where project name and/or key is matching the given query. + *

+ * Passing an empty (or whitespace only) query will match no projects. The project matches will + * contain a field with the query highlighted. + *

+ * The number of projects returned can be controlled by passing a value for "maxResults", but a hard limit of no + * more than 100 projects is enforced. The projects are wrapped in a single response object that contains + * a header for use in the picker, specifically Showing X of Y matching projects and the total number + * of matches for the query. + */ + get: operations["searchForProjects"]; + }; + "/api/2/projectvalidate/key": { + /** @description Validates a project key. */ + get: operations["getProject"]; + }; + "/api/2/reindex": { + /** + * @description Returns information on the system reindexes. If a reindex is currently taking place then information about this reindex is returned. + * If there is no active index task, then returns information about the latest reindex task run, otherwise returns a 404 + * indicating that no reindex has taken place. + */ + get: operations["getReindexInfo"]; + /** @description Kicks off a reindex. Need Admin permissions to perform this reindex. */ + post: operations["reindex"]; + }; + "/api/2/reindex/issue": { + /** + * @description Reindexes one or more individual issues. Indexing is performed synchronously - the call returns when indexing of + * the issues has completed or a failure occurs. + *

+ * Use either explicitly specified issue IDs or a JQL query to select issues to reindex. + */ + post: operations["reindexIssues"]; + }; + "/api/2/reindex/progress": { + /** + * @description Returns information on the system reindexes. If a reindex is currently taking place then information about this reindex is returned. + * If there is no active index task, then returns information about the latest reindex task run, otherwise returns a 404 + * indicating that no reindex has taken place. + */ + get: operations["getReindexProgress"]; + }; + "/api/2/reindex/request": { + /** + * @description Executes any pending reindex requests. Returns a JSON array containing the IDs of the reindex requests + * that are being processed. Execution is asynchronous - progress of the returned tasks can be monitored through + * other REST calls. + */ + post: operations["processRequests"]; + }; + "/api/2/reindex/request/bulk": { + /** + * @description Retrieves the progress of a multiple reindex requests. Only reindex requests that actually exist will be returned + * in the results. + */ + get: operations["getProgressBulk"]; + }; + "/api/2/reindex/request/{requestId}": { + /** @description Retrieves the progress of a single reindex request. */ + get: operations["getProgress"]; + parameters: { + path: { + /** @description the reindex request ID. */ + requestId: number; + }; + }; + }; + "/api/2/resolution": { + /** @description Returns a list of all resolutions. */ + get: operations["getResolutions"]; + }; + "/api/2/resolution/page": { + /** @description Returns paginated list of filtered resolutions */ + get: operations["getPaginatedResolutions"]; + }; + "/api/2/resolution/{id}": { + /** @description Returns a resolution. */ + get: operations["getResolution"]; + parameters: { + path: { + /** @description a String containing the resolution id */ + id: string; + }; + }; + }; + "/api/2/role": { + /** @description Get all the ProjectRoles available in Jira. Currently this list is global. */ + get: operations["getProjectRoles"]; + /** + * @description Creates a new ProjectRole to be available in Jira. + * The created role does not have any default actors assigned. + */ + post: operations["createProjectRole"]; + }; + "/api/2/role/{id}": { + /** @description Get a specific ProjectRole available in Jira. */ + get: operations["getProjectRolesById"]; + /** @description Fully updates a roles. Both name and description must be given. */ + put: operations["fullyUpdateProjectRole"]; + /** @description Partially updates a roles name or description. */ + post: operations["partialUpdateProjectRole"]; + /** @description Deletes a role. May return 403 in the future */ + delete: operations["deleteProjectRole"]; + parameters: { + path: { + id: number; + }; + }; + }; + "/api/2/role/{id}/actors": { + /** @description Gets default actors for the given role. */ + get: operations["getProjectRoleActorsForRole"]; + /** @description Adds default actors to the given role. The request data should contain a list of usernames or a list of groups to add. */ + post: operations["addProjectRoleActorsToRole"]; + /** @description Removes default actor from the given role. */ + delete: operations["deleteProjectRoleActorsFromRole"]; + parameters: { + path: { + /** @description the role id to remove the actors from */ + id: number; + }; + }; + }; + "/api/2/screens": { + /** @description Gets available field screens */ + get: operations["getAllScreens"]; + }; + "/api/2/screens/addToDefault/{fieldId}": { + /** @description Adds field or custom field to the default tab */ + post: operations["addFieldToDefaultScreen"]; + parameters: { + path: { + /** @description id of field / custom field */ + fieldId: string; + }; + }; + }; + "/api/2/screens/{screenId}/availableFields": { + /** @description Gets available fields for screen. i.e ones that haven't already been added. */ + get: operations["getFieldsToAdd"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + }; + }; + }; + "/api/2/screens/{screenId}/tabs": { + /** @description Returns a list of all tabs for the given screen */ + get: operations["getAllTabs"]; + /** @description Creates tab for given screen */ + post: operations["addTab"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + }; + }; + }; + "/api/2/screens/{screenId}/tabs/{tabId}": { + /** @description Renames tab on given screen */ + put: operations["renameTab"]; + /** @description Deletes tab to give screen */ + delete: operations["deleteTab"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + }; + }; + }; + "/api/2/screens/{screenId}/tabs/{tabId}/fields": { + /** @description Gets all fields for a given tab */ + get: operations["getAllFields"]; + /** @description Adds field to the given tab. */ + post: operations["addField"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + }; + }; + }; + "/api/2/screens/{screenId}/tabs/{tabId}/fields/{id}": { + /** @description Removes field from given tab */ + delete: operations["removeField"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + id: string; + }; + }; + }; + "/api/2/screens/{screenId}/tabs/{tabId}/fields/{id}/move": { + /** @description Moves field on the given tab */ + post: operations["moveField"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + id: string; + }; + }; + }; + "/api/2/screens/{screenId}/tabs/{tabId}/fields/{id}/updateShowWhenEmptyIndicator/{newValue}": { + /** @description Update 'showWhenEmptyIndicator' for given field on screen */ + put: operations["updateShowWhenEmptyIndicator"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + /** @description new value of 'showWhenEmptyIndicator' */ + newValue: boolean; + /** @description id of field */ + id: string; + }; + }; + }; + "/api/2/screens/{screenId}/tabs/{tabId}/move/{pos}": { + /** @description Moves tab position */ + post: operations["moveTab"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + /** @description position of tab */ + pos: number; + }; + }; + }; + "/api/2/search": { + /** + * @description Searches for issues using JQL. + *

+ * Sorting + * the jql parameter is a full JQL + * expression, and includes an ORDER BY clause. + *

+ *

+ * The fields param (which can be specified multiple times) gives a comma-separated list of fields + * to include in the response. This can be used to retrieve a subset of fields. + * A particular field can be excluded by prefixing it with a minus. + *

+ * By default, only navigable (*navigable) fields are returned in this search resource. Note: the default is different + * in the get-issue resource -- the default there all fields (*all). + *

    + *
  • *all - include all fields
  • + *
  • *navigable - include just navigable fields
  • + *
  • summary,comment - include just the summary and comments
  • + *
  • -description - include navigable fields except the description (the default is *navigable for search)
  • + *
  • *all,-comment - include everything except comments
  • + *
+ *

+ *

+ *

GET vs POST: + * If the JQL query is too large to be encoded as a query param you should instead + * POST to this resource. + *

+ *

+ * Expanding Issues in the Search Result: + * It is possible to expand the issues returned by directly specifying the expansion on the expand parameter passed + * in to this resources. + *

+ *

+ * For instance, to expand the "changelog" for all the issues on the search result, it is neccesary to + * specify "changelog" as one of the values to expand. + *

+ */ + get: operations["search"]; + /** @description Performs a search using JQL. */ + post: operations["searchUsingSearchRequest"]; + }; + "/api/2/securitylevel/{id}": { + /** @description Returns a full representation of the security level that has the given id. */ + get: operations["getIssuesecuritylevel"]; + parameters: { + path: { + /** @description a String containing an issue security level id */ + id: string; + }; + }; + }; + "/api/2/serverInfo": { + /** @description Returns general information about the current Jira server. */ + get: operations["getServerInfo"]; + }; + "/api/2/settings/baseUrl": { + /** @description Sets the base URL that is configured for this Jira instance. */ + put: operations["setBaseURL"]; + }; + "/api/2/settings/columns": { + /** @description Returns the default system columns for issue navigator. Admin permission will be required. */ + get: operations["getIssueNavigatorDefaultColumns"]; + /** @description Sets the default system columns for issue navigator. Admin permission will be required. */ + put: operations["setIssueNavigatorDefaultColumns"]; + }; + "/api/2/status": { + /** @description Returns a list of all statuses */ + get: operations["getStatuses"]; + }; + "/api/2/status/page": { + /** @description Returns paginated list of filtered statuses */ + get: operations["getPaginatedStatuses"]; + }; + "/api/2/status/{idOrName}": { + /** @description Returns a full representation of the Status having the given id or name. */ + get: operations["getStatus"]; + parameters: { + path: { + /** @description a numeric Status id or a status name */ + idOrName: string; + }; + }; + }; + "/api/2/statuscategory": { + /** @description Returns a list of all status categories */ + get: operations["getStatusCategories"]; + }; + "/api/2/statuscategory/{idOrKey}": { + /** @description Returns a full representation of the StatusCategory having the given id or key */ + get: operations["getStatusCategory"]; + parameters: { + path: { + /** @description a numeric StatusCategory id or a status category key */ + idOrKey: string; + }; + }; + }; + "/api/2/terminology/entries": { + /** @description Returns the list of all defined names for the default words "epic" and "sprint". */ + get: operations["getAllTerminologyEntries"]; + /** + * @description Change epic/sprint names from {"originalName"} to {"newName"}. The {"newName"} will be displayed in Jira instead of {"originalName"}. + *

+ * {"originalName"} must be equal to "epic" or "sprint". + * There can be only one entry per unique {"originalName"}. + *

+ * {"newName"} can only consist of alphanumeric characters and spaces e.g. {"newName": "iteration number 2"}. + *

+ * {"newName"} must be between 1 to 100 characters. + * It can't use the already defined {"newName"} values or restricted JQL words . + *

+ * To reset {"newName"} to the default value, enter the {"originalName"} value as the value for {"newName"}. For example, if you want to return to {"originalName": "sprint"}, enter {"newName": "sprint"}. + */ + post: operations["setTerminologyEntries"]; + }; + "/api/2/terminology/entries/{originalName}": { + /** @description Returns epic or sprint name as specified in the {originalName} path param. */ + get: operations["getTerminologyEntry"]; + parameters: { + path: { + originalName: string; + }; + }; + }; + "/api/2/universal_avatar/type/{type}/owner/{owningObjectId}": { + get: operations["getAvatars"]; + parameters: { + path: { + type: string; + owningObjectId: string; + }; + }; + }; + "/api/2/universal_avatar/type/{type}/owner/{owningObjectId}/avatar": { + post: operations["createAvatarFromTemporary"]; + parameters: { + path: { + type: string; + owningObjectId: string; + }; + }; + }; + "/api/2/universal_avatar/type/{type}/owner/{owningObjectId}/avatar/{id}": { + /** @description Deletes avatar */ + delete: operations["deleteAvatar"]; + parameters: { + path: { + /** @description database id for avatar */ + id: number; + /** @description Project id or project key */ + type: string; + owningObjectId: string; + }; + }; + }; + "/api/2/universal_avatar/type/{type}/owner/{owningObjectId}/temp": { + post: operations["storeTemporaryAvatarUsingMultiPart"]; + parameters: { + path: { + type: string; + owningObjectId: string; + }; + }; + }; + "/api/2/upgrade": { + /** + * @description Returns the result of the last upgrade task. + * + * Returns {@link javax.ws.rs.core.Response#seeOther(java.net.URI)} if still running. + */ + get: operations["getUpgradeResult"]; + /** @description Runs any pending delayed upgrade tasks. Need Admin permissions to do this. */ + post: operations["runUpgradesNow"]; + }; + "/api/2/user": { + /** @description Returns a user. This resource cannot be accessed anonymously. */ + get: operations["getUser"]; + /** + * @description Modify user. The "value" fields present will override the existing value. + * Fields skipped in request will not be changed. + */ + put: operations["updateUser"]; + /** + * @description Create user. By default created user will not be notified with email. + * If password field is not set then password will be randomly generated. + */ + post: operations["createUser"]; + /** + * @description Removes user and its references (like project roles associations, watches, history). + *
+ *
+ * Note: user references will not be removed if multiple User Directories are used and there is a user with + * the same name existing in another directory (shadowing user). + */ + delete: operations["removeUser"]; + }; + "/api/2/user/a11y/personal-settings": { + /** + * @description Returns available accessibility personal settings along with `enabled` property + * that indicates the currently logged-in user preference. + */ + get: operations["getA11yPersonalSettings"]; + }; + "/api/2/user/anonymization": { + /** @description Validates user anonymization process. */ + get: operations["validateUserAnonymization"]; + /** @description Schedules a user anonymization process. Requires system admin permission. */ + post: operations["scheduleUserAnonymization"]; + }; + "/api/2/user/anonymization/progress": { + /** @description Returns information about a user anonymization operation progress. */ + get: operations["getProgress"]; + }; + "/api/2/user/anonymization/rerun": { + /** @description Validates user anonymization re-run process. */ + get: operations["validateUserAnonymizationRerun"]; + /** @description Schedules a user anonymization process. Requires system admin permission. */ + post: operations["scheduleUserAnonymizationRerun"]; + }; + "/api/2/user/anonymization/unlock": { + /** + * @description Removes stale user anonymization task, for scenarios when the node that was executing it is no longer alive. + *

+ * Use it only after making sure that the parent node of the task is actually down, and not just having + * connectivity issues. + */ + delete: operations["unlockAnonymization"]; + }; + "/api/2/user/application": { + /** @description Add user to given application. Admin permission will be required to perform this operation. */ + post: operations["addUserToApplication"]; + /** @description Remove user from given application. Admin permission will be required to perform this operation. */ + delete: operations["removeUserFromApplication"]; + }; + "/api/2/user/assignable/multiProjectSearch": { + /** @description Returns a list of users that match the search string and can be assigned issues for all the given projects. */ + get: operations["findBulkAssignableUsers"]; + }; + "/api/2/user/assignable/search": { + /** + * @description Returns a list of users that match the search string. This resource cannot be accessed anonymously. + * Please note that this resource should be called with an issue key when a list of assignable users is retrieved + * for editing. For create only a project key should be supplied. The list of assignable users may be incorrect + * if it's called with the project key for editing. + */ + get: operations["findAssignableUsers"]; + }; + "/api/2/user/avatar": { + put: operations["updateUserAvatar"]; + /** @description Converts temporary avatar into a real avatar */ + post: operations["createAvatarFromTemporary"]; + }; + "/api/2/user/avatar/temporary": { + /** + * @description Creates temporary avatar using multipart. The response is sent back as JSON stored in a textarea. This is because + * the client uses remote iframing to submit avatars using multipart. So we must send them a valid HTML page back from + * which the client parses the JSON from. + *

+ * Creating a temporary avatar is part of a 3-step process in uploading a new + * avatar for a user: upload, crop, confirm. This endpoint allows you to use a multipart upload + * instead of sending the image directly as the request body. + *

+ *

+ * You *must* use "avatar" as the name of the upload parameter:

+ *

+ *

+         *  curl -c cookiejar.txt -X POST -u admin:admin -H "X-Atlassian-Token: no-check" \
+         *    -F "avatar=@mynewavatar.png;type=image/png" \
+         *    'http://localhost:8090/jira/rest/api/2/user/avatar/temporary?username=admin'
+         *  
+ */ + post: operations["storeTemporaryAvatarUsingMultiPart"]; + }; + "/api/2/user/avatar/{id}": { + /** @description Deletes avatar */ + delete: operations["deleteAvatar"]; + parameters: { + path: { + /** @description database id for avatar */ + id: number; + }; + }; + }; + "/api/2/user/avatars": { + /** @description Returns all avatars which are visible for the currently logged in user. */ + get: operations["getAllAvatars"]; + }; + "/api/2/user/columns": { + /** + * @description Returns the default columns for the given user. Admin permission will be required to get columns for a user + * other than the currently logged in user. + */ + get: operations["defaultColumns"]; + /** + * @description Sets the default columns for the given user. Admin permission will be required to get columns for a user + * other than the currently logged in user. + */ + put: operations["setColumns"]; + /** + * @description Reset the default columns for the given user to the system default. Admin permission will be required to get + * columns for a user other than the currently logged in user. + */ + delete: operations["resetColumns"]; + }; + "/api/2/user/duplicated/count": { + /** + * @description Returns the number of users whose accounts are duplicated. + * Duplicated means that the user has an account in more than one directory + * and either more than one account is active or the only active account does not belong to the directory + * with the highest priority. + * The data returned by this endpoint is cached for 10 minutes and the cache is flushed when any User Directory + * is added, removed, enabled, disabled, or synchronized. + * A System Administrator can also flush the cache manually. + * Related JAC ticket: https://jira.atlassian.com/browse/JRASERVER-68797 + */ + get: operations["getDuplicatedUsersCount"]; + }; + "/api/2/user/duplicated/list": { + /** + * @description Returns duplicated users mapped to their directories with an indication if their accounts are active or not. + * Duplicated means that the user has an account in more than one directory and either more than one account is active + * or the only active account does not belong to the directory with the highest priority. + * The data returned by this endpoint is cached for 10 minutes and the cache is flushed when any User Directory + * is added, removed, enabled, disabled, or synchronized. + * A System Administrator can also flush the cache manually. + * Related JAC ticket: https://jira.atlassian.com/browse/JRASERVER-68797 + */ + get: operations["getDuplicatedUsersMapping"]; + }; + "/api/2/user/password": { + /** @description Modify user password. */ + put: operations["changeUserPassword"]; + }; + "/api/2/user/permission/search": { + /** + * @description Returns a list of active users that match the search string and have all specified permissions for the project or issue.
+ * This resource can be accessed by users with ADMINISTER_PROJECT permission for the project or global ADMIN or SYSADMIN rights.
+ * This endpoint can cause serious performance issues and will be removed in Jira 9.0. + */ + get: operations["findUsersWithAllPermissions"]; + }; + "/api/2/user/picker": { + /** @description Returns a list of users matching query with highlighting. */ + get: operations["findUsersForPicker"]; + }; + "/api/2/user/properties/": { + /** @description Returns the keys of all properties for the user identified by the key or by the id. */ + get: operations["getPropertiesKeys"]; + }; + "/api/2/user/properties/{propertyKey}": { + /** + * @description Returns the value of the property with a given key from the user identified by the key or by the id. The user who retrieves + * the property is required to have permissions to read the user. + */ + get: operations["getProperty"]; + /** + * @description Sets the value of the specified user's property. + *

+ * You can use this resource to store a custom data against the user identified by the key or by the id. The user + * who stores the data is required to have permissions to administer the user. + *

+ */ + put: operations["setProperty"]; + /** + * @description Removes the property from the user identified by the key or by the id. Ths user removing the property is required + * to have permissions to administer the user. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + propertyKey: string; + }; + }; + }; + "/api/2/user/search": { + /** @description Returns a list of users that match the search string. This resource cannot be accessed anonymously. */ + get: operations["findUsers"]; + }; + "/api/2/user/session/{username}": { + delete: operations["deleteSession"]; + parameters: { + path: { + username: string; + }; + }; + }; + "/api/2/user/viewissue/search": { + /** + * @description Returns a list of active users that match the search string. This resource cannot be accessed anonymously + * and requires the Browse Users global permission. + * Given an issue key this resource will provide a list of users that match the search string and have + * the browse issue permission for the issue provided. + */ + get: operations["findUsersWithBrowsePermission"]; + }; + "/api/2/version": { + /** @description Retrieve paginated collection of versions matching given query optionally filtered by given project IDs. */ + get: operations["getPaginatedVersions"]; + /** @description Create a version via POST. */ + post: operations["createVersion"]; + }; + "/api/2/version/remotelink": { + /** @description Returns the remote version links for a given global ID. */ + get: operations["getRemoteVersionLinks"]; + }; + "/api/2/version/{id}": { + /** @description Returns a project version. */ + get: operations["getVersion"]; + /** + * @description Modify a version via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field + * is not present, it is silently ignored. + */ + put: operations["updateVersion"]; + /** @description Delete a project version. */ + delete: operations["delete"]; + parameters: { + path: { + /** @description The version to delete */ + id: string; + }; + }; + }; + "/api/2/version/{id}/mergeto/{moveIssuesTo}": { + /** @description Merge versions */ + put: operations["merge"]; + parameters: { + path: { + /** + * @description The version to set fixVersion to on issues where the deleted version is the fix version, + * If null then the fixVersion is removed. + */ + moveIssuesTo: string; + /** @description The version that will be merged to version {@code moveIssuesTo} and removed */ + id: string; + }; + }; + }; + "/api/2/version/{id}/move": { + /** + * @description Modify a version's sequence within a project. + *

+ * The move version bean has 2 alternative field value pairs: + *

+ *
position
An absolute position, which may have a value of 'First', 'Last', 'Earlier' or 'Later'
+ *
after
A version to place this version after. The value should be the self link of another version
+ *
+ */ + post: operations["moveVersion"]; + parameters: { + path: { + /** @description a String containing the version id */ + id: string; + }; + }; + }; + "/api/2/version/{id}/relatedIssueCounts": { + /** @description Returns a bean containing the number of fixed in and affected issues for the given version. */ + get: operations["getVersionRelatedIssues"]; + parameters: { + path: { + /** @description a String containing the version id */ + id: string; + }; + }; + }; + "/api/2/version/{id}/removeAndSwap": { + /** @description Delete a project version. */ + post: operations["delete"]; + parameters: { + path: { + /** @description The version to delete */ + id: string; + }; + }; + }; + "/api/2/version/{id}/unresolvedIssueCount": { + /** @description Returns the number of unresolved issues for the given version */ + get: operations["getVersionUnresolvedIssues"]; + parameters: { + path: { + /** @description a String containing the version id */ + id: string; + }; + }; + }; + "/api/2/version/{versionId}/remotelink": { + /** @description Returns the remote version links associated with the given version ID. */ + get: operations["getRemoteVersionLinksByVersionId"]; + /** + * @description Create a remote version link via POST. The link's global ID will be taken from the + * JSON payload if provided; otherwise, it will be generated. + */ + post: operations["createOrUpdateRemoteVersionLink"]; + /** @description Delete all remote version links for a given version ID. */ + delete: operations["deleteRemoteVersionLinksByVersionId"]; + parameters: { + path: { + /** @description The version for which to delete ALL existing remote version links */ + versionId: string; + }; + }; + }; + "/api/2/version/{versionId}/remotelink/{globalId}": { + /** @description A REST sub-resource representing a remote version link */ + get: operations["getRemoteVersionLink"]; + /** + * @description Create a remote version link via POST. The link's global ID will be taken from the + * JSON payload if provided; otherwise, it will be generated. + */ + post: operations["createOrUpdateRemoteVersionLink"]; + /** @description Delete a specific remote version link with the given version ID and global ID. */ + delete: operations["deleteRemoteVersionLink"]; + parameters: { + path: { + /** @description The version ID of the remote link */ + versionId: string; + /** @description The global ID of the remote link */ + globalId: string; + }; + }; + }; + "/api/2/workflow": { + /** + * @description Returns all workflows. The “lastModifiedDate” is returned in Jira Complete Date/Time Format (dd/MMM/yy h:mm by default), + * but can also be returned as a relative date. + */ + get: operations["getAllWorkflows"]; + }; + "/api/2/workflow/api/2/transitions/{id}/properties": { + /** @description Return the property or properties associated with a transition. */ + get: operations["getProperties"]; + /** + * @description Update/add new property to a transition. Trying to update a property that does + * not exist will result in a new property being added. + */ + put: operations["updateProperty"]; + /** + * @description Add a new property to a transition. Trying to add a property that already + * exists will fail. + */ + post: operations["createProperty"]; + /** + * @description Delete a property from the passed transition on the passed workflow. It is not an error to delete a property that + * does not exist. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + /** @description the ID of the transition within the workflow. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme": { + /** + * @description Create a new workflow scheme. + *

+ * The body contains a representation of the new scheme. Values not passed are assumed to be set to their defaults. + */ + post: operations["createScheme"]; + }; + "/api/2/workflowscheme/{id}": { + /** @description Returns the requested workflow scheme to the caller. */ + get: operations["getById"]; + /** + * @description Update the passed workflow scheme. + *

+ * The body of the request is a representation of the workflow scheme. Values not passed are assumed to indicate + * no change for that field. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that the draft + * should be created and/or updated when the actual scheme cannot be edited (e.g. when the scheme is being used by + * a project). Values not appearing the body will not be touched. + */ + put: operations["update"]; + /** @description Delete the passed workflow scheme. */ + delete: operations["deleteScheme"]; + parameters: { + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/createdraft": { + /** @description Create a draft for the passed scheme. The draft will be a copy of the state of the parent. */ + post: operations["createDraftForParent"]; + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/default": { + /** @description Return the default workflow from the passed workflow scheme. */ + get: operations["getDefault"]; + /** + * @description Set the default workflow for the passed workflow scheme. + *

+ * The passed representation can have its + * updateDraftIfNeeded flag set to true to indicate that the draft should be created/updated when the actual scheme + * cannot be edited. + */ + put: operations["updateDefault"]; + /** @description Remove the default workflow from the passed workflow scheme. */ + delete: operations["deleteDefault"]; + parameters: { + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/draft": { + /** @description Returns the requested draft workflow scheme to the caller. */ + get: operations["getDraftById"]; + /** + * @description Update a draft workflow scheme. The draft will created if necessary. + *

+ * The body is a representation of the workflow scheme. Values not passed are assumed to indicate no change for that field. + */ + put: operations["updateDraft"]; + /** @description Delete the passed draft workflow scheme. */ + delete: operations["deleteDraftById"]; + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/draft/default": { + /** @description Return the default workflow from the passed draft workflow scheme to the caller. */ + get: operations["getDraftDefault"]; + /** @description Set the default workflow for the passed draft workflow scheme. */ + put: operations["updateDraftDefault"]; + /** @description Remove the default workflow from the passed draft workflow scheme. */ + delete: operations["deleteDraftDefault"]; + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/draft/issuetype/{issueType}": { + /** @description Returns the issue type mapping for the passed draft workflow scheme. */ + get: operations["getDraftIssueType"]; + /** + * @description Set the issue type mapping for the passed draft scheme. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that + * the draft should be created/updated when the actual scheme cannot be edited. + */ + put: operations["setDraftIssueType"]; + /** @description Remove the specified issue type mapping from the draft scheme. */ + delete: operations["deleteDraftIssueType"]; + parameters: { + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the parent scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/draft/workflow": { + /** @description Returns the draft workflow mappings or requested mapping to the caller. */ + get: operations["getDraftWorkflow"]; + /** + * @description Update the draft scheme to include the passed mapping. + *

+ * The body is a representation of the workflow mapping. + * Values not passed are assumed to indicate no change for that field. + */ + put: operations["updateDraftWorkflowMapping"]; + /** @description Delete the passed workflow from the draft workflow scheme. */ + delete: operations["deleteDraftWorkflowMapping"]; + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/issuetype/{issueType}": { + /** @description Returns the issue type mapping for the passed workflow scheme. */ + get: operations["getIssueType"]; + /** + * @description Set the issue type mapping for the passed scheme. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that + * the draft should be created/updated when the actual scheme cannot be edited. + */ + put: operations["setIssueType"]; + /** @description Remove the specified issue type mapping from the scheme. */ + delete: operations["deleteIssueType"]; + parameters: { + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/workflow": { + /** @description Returns the workflow mappings or requested mapping to the caller for the passed scheme. */ + get: operations["getWorkflow"]; + /** + * @description Update the scheme to include the passed mapping. + *

+ * The body is a representation of the workflow mapping. + * Values not passed are assumed to indicate no change for that field. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that the draft + * should be created/updated when the actual scheme cannot be edited. + */ + put: operations["updateWorkflowMapping"]; + /** @description Delete the passed workflow from the workflow scheme. */ + delete: operations["deleteWorkflowMapping"]; + parameters: { + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + }; + "/api/2/worklog/deleted": { + /** + * @description Returns worklogs id and delete time of worklogs that was deleted since given time. + * The returns set of worklogs is limited to 1000 elements. + * This API will not return worklogs deleted during last minute. + */ + get: operations["getIdsOfWorklogsDeletedSince"]; + }; + "/api/2/worklog/list": { + /** + * @description Returns worklogs for given worklog ids. Only worklogs to which the calling user has permissions, will be included in the result. + * The returns set of worklogs is limited to 1000 elements. + */ + post: operations["getWorklogsForIds"]; + }; + "/api/2/worklog/updated": { + /** + * @description Returns worklogs id and update time of worklogs that was updated since given time. + * The returns set of worklogs is limited to 1000 elements. + * This API will not return worklogs updated during last minute. + */ + get: operations["getIdsOfWorklogsModifiedSince"]; + }; + "/auth/1/session": { + /** + * @description Returns information about the currently authenticated user's session. If the caller is not authenticated they + * will get a 401 Unauthorized status code. + */ + get: operations["currentUser"]; + /** + * @description Creates a new session for a user in Jira. Once a session has been successfully created it can be used to access + * any of Jira's remote APIs and also the web UI by passing the appropriate HTTP Cookie header. + *

+ * Note that it is generally preferrable to use HTTP BASIC authentication with the REST API. However, this resource + * may be used to mimic the behaviour of Jira's log-in page (e.g. to display log-in errors to a user). + */ + post: operations["login"]; + /** @description Logs the current user out of Jira, destroying the existing session, if any. */ + delete: operations["logout"]; + }; + "/auth/1/websudo": { + /** @description This method invalidates the any current WebSudo session. */ + delete: operations["release"]; + }; +} +export type webhooks = Record; +export type components = Record; +export type $defs = Record; +export type external = Record; +export interface operations { + /** + * @description Returns the value of the property with a given key from the user identified by the key or by the id. The user who retrieves + * the property is required to have permissions to read the user. + */ + getProperty: { + parameters: { + query?: { + /** @description key of the user whose property is to be returned */ + userKey?: string; + /** @description username of the user whose property is to be returned */ + username?: string; + }; + path: { + propertyKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the properties that are displayed on the "General Configuration > Advanced Settings" page. */ + getAdvancedSettings: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Modify an application property via PUT. The "value" field present in the PUT will override the existing value. */ + setPropertyViaRestfulTable: { + parameters: { + path: { + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all ApplicationRoles in the system. Will also return an ETag header containing a version hash of the + * collection of ApplicationRoles. + */ + getAll: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates the ApplicationRoles with the passed data if the version hash is the same as the server. + * Only the groups and default groups setting of the role may be updated. Requests to change the key + * or the name of the role will be silently ignored. It is acceptable to pass only the roles that are updated + * as roles that are present in the server but not in data to update with, will not be deleted. + */ + putBulk: { + parameters: { + header?: { + "If-Match"?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the ApplicationRole with passed key if it exists. */ + get: { + parameters: { + path: { + /** @description the key of the role to update. */ + key: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates the ApplicationRole with the passed data. Only the groups and default groups setting of the + * role may be updated. Requests to change the key or the name of the role will be silently ignored. + *

+ * Optional: If versionHash is passed through the If-Match header the request will be rejected if not the + * same as server + */ + put: { + parameters: { + header?: { + /** @description the hash of the version to update. Optional Param */ + "If-Match"?: string; + }; + path: { + /** @description the key of the role to update. */ + key: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the meta information for an attachments, specifically if they are enabled and the maximum upload size + * allowed. + */ + getAttachmentMeta: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the meta-data for an attachment, including the URI of the actual attached file. */ + getAttachment: { + parameters: { + path: { + /** @description id of the attachment to remove */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove an attachment from an issue. */ + removeAttachment: { + parameters: { + path: { + /** @description id of the attachment to remove */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Tries to expand an attachment. Output is human-readable and subject to change. */ + expandForHumans: { + parameters: { + path: { + /** @description the id of the attachment to expand. */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Tries to expand an attachment. Output is raw and should be backwards-compatible through the course of time. */ + expandForMachines: { + parameters: { + path: { + /** @description the id of the attachment to expand. */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns auditing records filtered using provided parameters */ + getRecords: { + parameters: { + query?: { + /** @description - the number of record from which search starts */ + offset?: number; + /** @description - maximum number of returned results (if is limit is <= 0 or > 1000, it will be set do default value: 1000) */ + limit?: number; + /** @description - text query; each record that will be returned must contain the provided text in one of its fields */ + filter?: string; + /** + * @description - timestamp in past; 'from' must be less or equal 'to', otherwise the result set will be empty + * only records that where created in the same moment or after the 'from' timestamp will be provided in response + */ + from?: string; + /** + * @description - timestamp in past; 'from' must be less or equal 'to', otherwise the result set will be empty + * only records that where created in the same moment or earlier than the 'to' timestamp will be provided in response + */ + to?: string; + /** @description - list of project ids to look for */ + projectIds?: string; + /** @description - list of user ids to look for */ + userIds?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Store a record in audit log */ + addRecord: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all system avatars of the given type. */ + getAllSystemAvatars: { + parameters: { + path: { + /** @description the avatar type */ + type: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates temporary avatar */ + storeTemporaryAvatar: { + parameters: { + query?: { + /** @description name of file being uploaded */ + filename?: string; + /** @description size of file */ + size?: number; + }; + path: { + /** @description the avatar type */ + type: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Converts temporary avatar into a real avatar */ + createAvatarFromTemporary: { + parameters: { + query?: { + /** @description username */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description request current index from node (the request is processed asynchronously) */ + requestCurrentIndexFromNode: { + parameters: { + path: { + nodeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the node from the cluster if state of node is OFFLINE. */ + deleteNode: { + parameters: { + path: { + nodeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Change the node's state to offline if the node is reporting as active, but is not alive. + * Don't use this method as an equivalent of running ./stop-jira.sh. This method doesn't shut down + * a node, but only changes its state, so that other nodes don't communicate with it. + */ + changeNodeStateToOffline: { + parameters: { + path: { + nodeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + getAllNodes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + approveUpgrade: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + cancelUpgrade: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + acknowledgeErrors: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + setReadyToUpgrade: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + getState: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the keys of all properties for the user identified by the key or by the id. */ + getPropertiesKeys: { + parameters: { + query?: { + /** @description key of the user whose properties are to be returned */ + userKey?: string; + /** @description username of the user whose properties are to be returned */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Sets the value of the specified user's property. + *

+ * You can use this resource to store a custom data against the user identified by the key or by the id. The user + * who stores the data is required to have permissions to administer the user. + *

+ */ + setProperty: { + parameters: { + query?: { + /** @description key of the user whose property is to be set */ + userKey?: string; + /** @description username of the user whose property is to be set */ + username?: string; + }; + path: { + propertyKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Delete a property from the passed transition on the passed workflow. It is not an error to delete a property that + * does not exist. + */ + deleteProperty: { + parameters: { + query?: { + /** @description the name of the property to add. */ + key?: string; + /** @description the name of the workflow to use. */ + workflowName?: string; + /** @description the type of workflow to use. Can either be "live" or "draft". */ + workflowMode?: string; + }; + path: { + /** @description the ID of the transition within the workflow. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Create a component via POST. */ + createComponent: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns paginated list of filtered active components */ + getPaginatedComponents: { + parameters: { + query?: { + /** @description the index of the first components to return */ + startAt?: number; + /** @description the maximum number of components to return */ + maxResults?: number; + /** @description the string that components names will be matched with */ + query?: string; + /** @description the set of project ids to filter components */ + projectIds?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a project component. */ + getComponent: { + parameters: { + path: { + /** @description The component to delete. */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Modify a component via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field + * is not present, it is silently ignored. + *

+ * If leadUserName is an empty string ("") the component lead will be removed. + */ + updateComponent: { + parameters: { + path: { + /** @description The component to delete. */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete a project version. */ + delete: { + parameters: { + path: { + /** @description The version to delete */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns counts of issues related to this component. */ + getComponentRelatedIssues: { + parameters: { + path: { + /** @description a String containing the component id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the information if the optional features in Jira are enabled or disabled. If the time tracking is enabled, + * it also returns the detailed information about time tracking configuration. + */ + getConfiguration: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a full representation of the Custom Field Option that has the given id. */ + getCustomFieldOption: { + parameters: { + path: { + /** @description a String containing an Custom Field Option id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + getCustomFields: { + parameters: { + query?: { + startAt?: number; + maxResults?: number; + search?: string; + projectIds?: string; + screenIds?: string; + types?: string; + sortOrder?: string; + sortColumn?: string; + lastValueUpdate?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + bulkDeleteCustomFields: { + parameters: { + query?: { + ids?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns custom field's options defined in a given context composed of projects and issue types. + *

+ * If the projects and issue types match more than one context or the context for such a combination does not exist then no options are returned. + */ + getCustomFieldOptions: { + parameters: { + query?: { + /** @description a list of projects in a context. */ + projectIds?: string; + /** @description a list of issue types in a context. */ + issueTypeIds?: string; + /** @description a string used to filter options. An option matches the query if any word in option's name starts with the given query. */ + query?: string; + /** @description a limit of results. */ + maxResults?: number; + /** @description the page of options to return. */ + page?: number; + }; + path: { + /** @description id of a custom field. */ + customFieldId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all dashboards, optionally filtering them. */ + list: { + parameters: { + query?: { + /** + * @description an optional filter that is applied to the list of dashboards. Valid values include + * "favourite" for returning only favourite dashboards, and "my" for returning + * dashboards that are owned by the calling user. + */ + filter?: string; + /** + * @description the index of the first dashboard to return (0-based). must be 0 or a multiple of + * maxResults + */ + startAt?: number; + /** + * @description a hint as to the maximum number of dashboards to return in each call. Note that the + * Jira server reserves the right to impose a maxResults limit that is lower than the value that a + * client provides, dues to lack of resources or any other condition. When this happens, your results will be + * truncated. Callers should always check the returned maxResults to determine the value that is + * effectively being used. + */ + maxResults?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a single dashboard. */ + getDashboard: { + parameters: { + path: { + /** @description the dashboard id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates a zip file containing email templates at local home and returns the file. */ + downloadEmailTemplates: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Extracts given zip file to temporary templates folder. If the folder already exists it will replace it's content */ + uploadEmailTemplates: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Replaces the current email templates pack with previously uploaded one, if exists. */ + applyEmailTemplates: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Replaces the current email templates pack with default templates, which are copied over from Jira binaries. */ + revertEmailTemplatesToDefault: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of root templates mapped with Event Types. The list can be used to decide which test emails to send. */ + getEmailTypes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all fields, both System and Custom */ + getFields: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates a custom field using a definition (object encapsulating custom field data) */ + createCustomField: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates a new filter, and returns newly created filter. + * Currently sets permissions just using the users default sharing permissions + */ + createFilter: { + parameters: { + query?: { + /** @description the parameters to expand */ + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the default share scope of the logged-in user. */ + getDefaultShareScope: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Sets the default share scope of the logged-in user. + *

+ * Available values are: AUTHENTICATED (for sharing with all logged-in users) and PRIVATE (for no shares). + */ + setDefaultShareScope: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the favourite filters of the logged-in user. */ + getFavouriteFilters: { + parameters: { + query?: { + /** @description the parameters to expand */ + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a filter given an id */ + getFilter: { + parameters: { + query?: { + /** @description the parameters to expand */ + expand?: string; + }; + path: { + /** @description the id of the filter being looked up */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates an existing filter, and returns its new value. + *

+ * The following properties of a filter can be updated: 'jql', 'name', 'description'. + * Additionally, administrators can also update the 'owner' field. + * To get, set or unset 'favourite', use rest/api/1.0/filters/{id}/favourite with GET, PUT and DELETE methods instead. + *

+ */ + editFilter: { + parameters: { + query?: { + /** @description the parameters to expand */ + expand?: string; + }; + path: { + /** @description the id of the filter being looked up */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete a filter. */ + deleteFilter: { + parameters: { + path: { + /** @description the id of the filter being looked up */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the default columns for the given user. Admin permission will be required to get columns for a user + * other than the currently logged in user. + */ + defaultColumns: { + parameters: { + query?: { + /** @description username */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Sets the default columns for the given user. Admin permission will be required to get columns for a user + * other than the currently logged in user. + */ + setColumns: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Reset the default columns for the given user to the system default. Admin permission will be required to get + * columns for a user other than the currently logged in user. + */ + resetColumns: { + parameters: { + query?: { + /** @description username */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all share permissions of the given filter. */ + getSharePermissions: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds a share permissions to the given filter. Adding a global permission removes all previous permissions from the filter. */ + addSharePermission: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Removes a share permissions from the given filter. */ + deleteSharePermission: { + parameters: { + path: { + id: number; + "permission-id": number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a single share permission of the given filter. */ + getSharePermission: { + parameters: { + path: { + permissionId: number; + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns REST representation for the requested group. Allows to get list of active users belonging to the + * specified group and its subgroups if "users" expand option is provided. You can page through users list by using + * indexes in expand param. For example to get users from index 10 to index 15 use "users[10:15]" expand value. This + * will return 6 users (if there are at least 16 users in this group). Indexes are 0-based and inclusive. + *

+ * This resource is deprecated, please use group/member API instead. + */ + getGroup: { + parameters: { + query?: { + /** @description A name of requested group. */ + groupname?: string; + /** @description List of fields to expand. Currently only available expand is "users". */ + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates a group by given group parameter + *

+ * Returns REST representation for the requested group. + */ + createGroup: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Deletes a group by given group parameter. + *

+ * Returns no content + */ + removeGroup: { + parameters: { + query?: { + /** @description (mandatory) The name of the group to delete. */ + groupname?: string; + /** + * @description If you delete a group and content is restricted to that group, the content will be hidden from all users. + * To prevent this, use this parameter to specify a different group to transfer the restrictions (comments and worklogs only) to. + */ + swapGroup?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description This resource returns a paginated list of users who are members of the specified group and its subgroups. + * Users in the page are ordered by user names. User of this resource is required to have sysadmin or admin permissions. + */ + getUsersFromGroup: { + parameters: { + query?: { + /** @description a name of the group for which members will be returned. */ + groupname?: string; + /** @description inactive users will be included in the response if set to true. */ + includeInactiveUsers?: boolean; + /** @description the index of the first user in group to return (0 based). */ + startAt?: number; + /** @description the maximum number of users to return (max 50). */ + maxResults?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Adds given user to a group. + *

+ * Returns the current state of the group. + */ + addUserToGroup: { + parameters: { + query?: { + /** @description A name of requested group. */ + groupname?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Removes given user from a group. + *

+ * Returns no content + */ + removeUserFromGroup: { + parameters: { + query?: { + /** @description A name of requested group. */ + groupname?: string; + /** @description User to remove from a group */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns groups with substrings matching a given query. This is mainly for use with + * the group picker, so the returned groups contain html to be used as picker suggestions. + * The groups are also wrapped in a single response object that also contains a header for + * use in the picker, specifically Showing X of Y matching groups. + *

+ * The number of groups returned is limited by the system property "jira.ajax.autocomplete.limit" + *

+ * The groups will be unique and sorted. + */ + findGroups: { + parameters: { + query?: { + /** @description a String to match groups agains */ + query?: string; + exclude?: string; + maxResults?: number; + userName?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of users and groups matching query with highlighting. This resource cannot be accessed + * anonymously. + */ + findUsersAndGroups: { + parameters: { + query?: { + /** @description A string used to search username, Name or e-mail address */ + query?: string; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. If + * you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + showAvatar?: boolean; + /** @description The custom field id, if this request comes from a custom field, such as a user picker. Optional. */ + fieldId?: string; + /** + * @description The list of project ids to further restrict the search + * This parameter can occur multiple times to pass in multiple project ids. + * Comma separated value is not supported. + * This parameter is only used when fieldId is present. + */ + projectId?: string; + /** + * @description The list of issue type ids to further restrict the search. + * This parameter can occur multiple times to pass in multiple issue type ids. + * Comma separated value is not supported. + * Special values such as -1 (all standard issue types), -2 (all subtask issue types) are supported. + * This parameter is only used when fieldId is present. + */ + issueTypeId?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Lists available index snapshots absolute paths with timestamps. + *

+ * Only System Administrator can request listing index snapshots. + */ + listIndexSnapshot: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Tries to start taking an index snapshot if no other snapshot creation process is in progress. + * Performs a cleanup of index snapshots directory so only a limited number of most recent snapshots are persisted. + * If another snapshot creation process is in progress, returns 409 without waiting for the other process to complete. + *

+ * Only System Administrator can request creation of snapshot. There is no guarantee as to the time after which the snapshot will be available. + */ + createIndexSnapshot: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Answers true if index snapshot creation is currently running. + *

+ * Only System Administrator can request current snapshot creation status. + */ + isIndexSnapshotRunning: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Summarizes index condition of current node. + *

+ * Returned data consists of: + *

    + *
  • nodeId - Node identifier.
  • + *
  • reportTime - Time of this report creation.
  • + *
  • issueIndex - Summary of issue index status.
  • + *
  • replicationQueues - Map of index replication queues, where + * keys represent nodes from which replication operations came from.
  • + *
+ *

+ * issueIndex can contain: + *

    + *
  • indexReadable - If false the end point failed to read data from issue index + * (check Jira logs for detailed stack trace), otherwise true. + * When false other fields of issueIndex can be not visible.
  • + *
  • countInDatabase - Count of issues found in database.
  • + *
  • countInIndex - Count of issues found while querying index.
  • + *
  • lastUpdatedInDatabase - Time of last update of issue found in database.
  • + *
  • lastUpdatedInIndex - Time of last update of issue found while querying index.
  • + *
+ *

+ * replicationQueues's map values can contain: + *

    + *
  • lastConsumedOperation - Last executed index replication operation by current node from sending node's queue.
  • + *
  • lastConsumedOperation.id - Identifier of the operation.
  • + *
  • lastConsumedOperation.replicationTime - Time when the operation was sent to other nodes.
  • + *
  • lastOperationInQueue - Last index replication operation in sending node's queue.
  • + *
  • lastOperationInQueue.id - Identifier of the operation.
  • + *
  • lastOperationInQueue.replicationTime - Time when the operation was sent to other nodes.
  • + *
  • queueSize - Number of operations in queue from sending node to current node.
  • + *
+ */ + getIndexSummary: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates an issue or a sub-task from a JSON representation. + *

+ * The fields that can be set on create, in either the fields parameter or the update parameter can be determined + * using the /rest/api/2/issue/createmeta resource. + * If a field is not configured to appear on the create screen, then it will not be in the createmeta, and a field + * validation error will occur if it is submitted. + *

+ * Creating a sub-task is similar to creating a regular issue, with two important differences: + *

    + *
  • the issueType field must correspond to a sub-task issue type (you can use + * /issue/createmeta to discover sub-task issue types), and
  • + *
  • you must provide a parent field in the issue create request containing the id or key of the + * parent issue.
  • + *
  • The updateHistory param adds the project that this issue is created in, to the current user's project history, + * if set to true (by default, the project history is not updated).
  • + *
  • You can view the project history in the Jira application, via the Projects dropdown.
  • + *
+ */ + createIssue: { + parameters: { + query?: { + /** @description if true then the user's project history is updated */ + updateHistory?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Archives a list of issues. */ + archiveIssues: { + parameters: { + query?: { + /** + * @description send the email with notification that the issue was updated to users that watch it. + * Admin or project admin permissions are required to disable the notification. + */ + notifyUsers?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates issues or sub-tasks from a JSON representation. + *

+ * Creates many issues in one bulk operation. + *

+ * Creating a sub-task is similar to creating a regular issue. More details can be found in createIssue section: + * {@link IssueResource#createIssue(boolean, IssueUpdateBean)}}} + */ + createIssues: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the metadata for issue types used for creating issues. + * Data will not be returned if the user does not have permission to create issues in that project. + */ + getCreateIssueMetaProjectIssueTypes: { + parameters: { + query?: { + /** @description the page offset, if not specified then defaults to 0 */ + startAt?: number; + /** @description how many results on the page should be included. Defaults to 50. */ + maxResults?: number; + }; + path: { + /** @description to get metadata for */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the metadata for issue types used for creating issues. + * Data will not be returned if the user does not have permission to create issues in that project. + */ + getCreateIssueMetaFields: { + parameters: { + query?: { + /** @description the page offset, if not specified then defaults to 0 */ + startAt?: number; + /** @description how many results on the page should be included. Defaults to 50. */ + maxResults?: number; + }; + path: { + /** @description to get metadata for */ + issueTypeId: string; + /** @description to get metadata for */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns suggested issues which match the auto-completion query for the user which executes this request. This REST + * method will check the user's history and the user's browsing context and select this issues, which match the query. + */ + getIssuePickerResource: { + parameters: { + query?: { + /** @description the query. */ + query?: string; + /** @description the JQL in context of which the request is executed. Only issues which match this JQL query will be included in results. */ + currentJQL?: string; + /** @description the key of the issue in context of which the request is executed. The issue which is in context will not be included in the auto-completion result, even if it matches the query. */ + currentIssueKey?: string; + /** @description the id of the project in context of which the request is executed. Suggested issues will be only from this project. */ + currentProjectId?: string; + /** @description if set to false, subtasks will not be included in the list. */ + showSubTasks?: boolean; + /** @description if set to false and request is executed in context of a subtask, the parent issue will not be included in the auto-completion result, even if it matches the query. */ + showSubTaskParent?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a full representation of the issue for the given issue key. + *

+ * An issue JSON consists of the issue key, a collection of fields, + * a link to the workflow transition sub-resource, and (optionally) the HTML rendered values of any fields that support it + * (e.g. if wiki syntax is enabled for the description or comments). + *

+ * The fields param (which can be specified multiple times) gives a comma-separated list of fields + * to include in the response. This can be used to retrieve a subset of fields. + * A particular field can be excluded by prefixing it with a minus. + *

+ * By default, all (*all) fields are returned in this get-issue resource. Note: the default is different + * when doing a jql search -- the default there is just navigable fields (*navigable). + *

    + *
  • *all - include all fields
  • + *
  • *navigable - include just navigable fields
  • + *
  • summary,comment - include just the summary and comments
  • + *
  • -comment - include everything except comments (the default is *all for get-issue)
  • + *
  • *all,-comment - include everything except comments
  • + *
+ *

+ * The {@code properties} param is similar to {@code fields} and specifies a comma-separated list of issue + * properties to include. Unlike {@code fields}, properties are not included by default. To include them all + * send {@code ?properties=*all}. You can also include only specified properties or exclude some properties + * with a minus (-) sign. + *

+ *

    + *
  • {@code *all} - include all properties
  • + *
  • {@code *all, -prop1} - include all properties except {@code prop1}
  • + *
  • {@code prop1, prop1} - include {@code prop1} and {@code prop2} properties
  • + *
+ *

+ *

+ * Jira will attempt to identify the issue by the issueIdOrKey path parameter. This can be an issue id, + * or an issue key. If the issue cannot be found via an exact match, Jira will also look for the issue in a case-insensitive way, or + * by looking to see if the issue was moved. In either of these cases, the request will proceed as normal (a 302 or other redirect + * will not be returned). The issue key contained in the response will indicate the current value of issue's key. + *

+ * The expand param is used to include, hidden by default, parts of response. This can be used to include: + *

    + *
  • renderedFields - field values in HTML format
  • + *
  • names - display name of each field
  • + *
  • schema - schema for each field which describes a type of the field
  • + *
  • transitions - all possible transitions for the given issue
  • + *
  • operations - all possibles operations which may be applied on issue
  • + *
  • editmeta - information about how each field may be edited. It contains field's schema as well.
  • + *
  • changelog - history of all changes of the given issue
  • + *
  • versionedRepresentations - + * REST representations of all fields. Some field may contain more recent versions. RESET representations are numbered. + * The greatest number always represents the most recent version. It is recommended that the most recent version is used. + * version for these fields which provide a more recent REST representation. + * After including versionedRepresentations "fields" field become hidden.
  • + *
+ */ + getIssue: { + parameters: { + query?: { + /** @description the list of fields to return for the issue. By default, all fields are returned. */ + fields?: string; + expand?: string; + /** @description the list of properties to return for the issue. By default no properties are returned. */ + properties?: string; + updateHistory?: boolean; + }; + path: { + /** @description the issue id or key to update (i.e. JRA-1330) */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Edits an issue from a JSON representation. + *

+ * The issue can either be updated by setting explicit the field value(s) + * or by using an operation to change the field value. + *

+ * The fields that can be updated, in either the fields parameter or the update parameter, can be determined + * using the /rest/api/2/issue/{issueIdOrKey}/editmeta resource.
+ * If a field is not configured to appear on the edit screen, then it will not be in the editmeta, and a field + * validation error will occur if it is submitted. + *

+ * Specifying a "field_id": field_value in the "fields" is a shorthand for a "set" operation in the "update" section.
+ * Field should appear either in "fields" or "update", not in both. + */ + editIssue: { + parameters: { + query?: { + /** + * @description send the email with notification that the issue was updated to users that watch it. + * Admin or project admin permissions are required to disable the notification. + */ + notifyUsers?: boolean; + }; + path: { + /** @description the issue id or key to update (i.e. JRA-1330) */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Delete an issue. + *

+ * If the issue has subtasks you must set the parameter deleteSubtasks=true to delete the issue. + * You cannot delete an issue without its subtasks also being deleted. + */ + deleteIssue: { + parameters: { + query?: { + /** + * @description a String of true or false indicating that any subtasks should also be deleted. If the + * issue has no subtasks this parameter is ignored. If the issue has subtasks and this parameter is missing or false, + * then the issue will not be deleted and an error will be returned. + */ + deleteSubtasks?: string; + }; + path: { + /** @description the issue id or key to update (i.e. JRA-1330) */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Archives an issue. */ + archiveIssue: { + parameters: { + query?: { + /** + * @description send the email with notification that the issue was updated to users that watch it. + * Admin or project admin permissions are required to disable the notification. + */ + notifyUsers?: boolean; + }; + path: { + /** @description Issue id or issue key */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Assigns an issue to a user. + * You can use this resource to assign issues when the user submitting the request has the assign permission but not the + * edit issue permission. + * If the name is "-1" automatic assignee is used. A null name will remove the assignee. + */ + assign: { + parameters: { + path: { + /** @description a String containing an issue key */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Add one or more attachments to an issue. + *

+ * This resource expects a multipart post. The media-type multipart/form-data is defined in RFC 1867. Most client + * libraries have classes that make dealing with multipart posts simple. For instance, in Java the Apache HTTP Components + * library provides a + * MultiPartEntity + * that makes it simple to submit a multipart POST. + *

+ * In order to protect against XSRF attacks, because this method accepts multipart/form-data, it has XSRF protection + * on it. This means you must submit a header of X-Atlassian-Token: no-check with the request, otherwise it will be + * blocked. + *

+ * The name of the multipart/form-data parameter that contains attachments must be "file" + *

+ * A simple example to upload a file called "myfile.txt" to issue REST-123: + *

curl -D- -u admin:admin -X POST -H "X-Atlassian-Token: no-check" -F "file=@myfile.txt" http://myhost/rest/api/2/issue/TEST-123/attachments
+ */ + addAttachment: { + parameters: { + path: { + /** @description the issue that you want to add the attachments to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all comments for an issue. + *

+ * Results can be ordered by the "created" field which means the date a comment was added. + *

+ */ + getComments: { + parameters: { + query?: { + /** @description the page offset, if not specified then defaults to 0 */ + startAt?: number; + /** @description how many results on the page should be included. Defaults to 50. */ + maxResults?: number; + /** @description ordering of the results. */ + orderBy?: string; + /** @description optional flags: renderedBody (provides body rendered in HTML) */ + expand?: string; + }; + path: { + /** @description a string containing the issue id or key the comment will be added to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds a new comment to an issue. */ + addComment: { + parameters: { + query?: { + /** @description optional flags: renderedBody (provides body rendered in HTML) */ + expand?: string; + }; + path: { + /** @description a string containing the issue id or key the comment will be added to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a single comment. */ + getComment: { + parameters: { + query?: { + /** @description optional flags: renderedBody (provides body rendered in HTML) */ + expand?: string; + }; + path: { + /** @description of the issue the comment belongs to */ + issueIdOrKey: string; + /** @description the ID of the comment to request */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Updates an existing comment using its JSON representation. */ + updateComment: { + parameters: { + query?: { + /** @description optional flags: renderedBody (provides body rendered in HTML) */ + expand?: string; + }; + path: { + /** @description of the issue the comment belongs to */ + issueIdOrKey: string; + /** @description the ID of the comment to request */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes an existing comment . */ + deleteComment: { + parameters: { + path: { + /** @description of the issue the comment belongs to */ + issueIdOrKey: string; + /** @description the ID of the comment to request */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + setPinComment: { + parameters: { + path: { + issueIdOrKey: string; + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the meta data for editing an issue. + *

+ * The fields in the editmeta correspond to the fields in the edit screen for the issue. + * Fields not in the screen will not be in the editmeta. + */ + getEditIssueMeta: { + parameters: { + path: { + /** @description the issue whose edit meta data you want to view */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Sends a notification (email) to the list or recipients defined in the request. */ + notify: { + parameters: { + path: { + /** @description a string containing the issue id or key the comment will be added to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all pinned to the issue comments. */ + getPinnedComments: { + parameters: { + path: { + /** @description of the issue the comment belongs to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description A REST sub-resource representing the remote issue links on the issue. */ + getRemoteIssueLinks: { + parameters: { + query?: { + /** + * @description The id of the remote issue link to be returned. If null (not provided) all remote links for the + * issue are returned. + *

For a fullexplanation of Issue Link fields please refer to + * https://developer.atlassian.com/display/JIRADEV/Fields+in+Remote+Issue+Links

+ */ + globalId?: string; + }; + path: { + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates or updates a remote issue link from a JSON representation. If a globalId is provided and a remote issue link + * exists with that globalId, the remote issue link is updated. Otherwise, the remote issue link is created. + */ + createOrUpdateRemoteIssueLink: { + parameters: { + path: { + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the remote issue link with the given global id on the issue. */ + deleteRemoteIssueLinkByGlobalId: { + parameters: { + query?: { + /** @description the global id of the remote issue link */ + globalId?: string; + }; + path: { + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Get the remote issue link with the given id on the issue. */ + getRemoteIssueLinkById: { + parameters: { + path: { + /** @description the id of the remote issue link */ + linkId: string; + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Updates a remote issue link from a JSON representation. Any fields not provided are set to null. */ + updateRemoteIssueLink: { + parameters: { + path: { + /** @description the id of the remote issue link */ + linkId: string; + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the remote issue link with the given id on the issue. */ + deleteRemoteIssueLinkById: { + parameters: { + path: { + /** @description the id of the remote issue link */ + linkId: string; + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Restores an archived issue. */ + restoreIssue: { + parameters: { + query?: { + /** + * @description send the email with notification that the issue was updated to users that watch it. + * Admin or project admin permissions are required to disable the notification. + */ + notifyUsers?: boolean; + }; + path: { + /** @description Issue id or issue key */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns an issue's subtask list */ + getSubTasks: { + parameters: { + path: { + /** @description The parent issue's key or id */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + canMoveSubTask: { + parameters: { + path: { + /** @description The parent issue's key or id */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Reorders an issue's subtasks by moving the subtask at index "from" + * to index "to". + */ + moveSubTasks: { + parameters: { + path: { + /** @description The parent issue's key or id */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Get a list of the transitions possible for this issue by the current user, along with fields that are required and their types. + *

+ * Fields will only be returned if expand=transitions.fields. + *

+ * The fields in the metadata correspond to the fields in the transition screen for that transition. + * Fields not in the screen will not be in the metadata. + */ + getTransitions: { + parameters: { + query?: { + transitionId?: string; + }; + path: { + /** @description the issue you want to transition */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Perform a transition on an issue. + * When performing the transition you can update or set other issue fields. + *

+ * The fields that can be set on transtion, in either the fields parameter or the update parameter can be determined + * using the /rest/api/2/issue/{issueIdOrKey}/transitions?expand=transitions.fields resource. + * If a field is not configured to appear on the transition screen, then it will not be in the transition metadata, and a field + * validation error will occur if it is submitted. + *

+ * The updateHistory param adds the issues retrieved by this method to the current user's issue history, + * if set to true (by default, the issue history does not include issues retrieved via the REST API). + * You can view the issue history in the Jira application, via the Issues dropdown or by using the + * lastViewed JQL field in an issue search. + */ + doTransition: { + parameters: { + path: { + /** @description the issue you want to transition */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description A REST sub-resource representing the voters on the issue. */ + getVotes: { + parameters: { + path: { + /** @description the issue to view voting information for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Cast your vote in favour of an issue. */ + addVote: { + parameters: { + path: { + /** @description the issue to view voting information for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove your vote from an issue. (i.e. "unvote") */ + removeVote: { + parameters: { + path: { + /** @description the issue to view voting information for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the list of watchers for the issue with the given key. */ + getIssueWatchers: { + parameters: { + path: { + /** @description a String containing an issue key. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds a user to an issue's watcher list. */ + addWatcher: { + parameters: { + path: { + /** @description a String containing an issue key. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Removes a user from an issue's watcher list. */ + removeWatcher: { + parameters: { + query?: { + /** @description a String containing the name of the user to remove from the watcher list. Must not be null. */ + username?: string; + }; + path: { + /** @description a String containing an issue key. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all work logs for an issue.
+ * Note: Work logs won't be returned if the Log work field is hidden for the project. + */ + getIssueWorklog: { + parameters: { + path: { + /** @description a string containing the issue id or key the worklog will be added to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds a new worklog entry to an issue. */ + addWorklog: { + parameters: { + query?: { + /** + * @description (optional) allows you to provide specific instructions to update the remaining time estimate of the issue. Valid values are + *

    + *
  • "new" - sets the estimate to a specific value
  • + *
  • "leave"- leaves the estimate as is
  • + *
  • "manual" - specify a specific amount to increase remaining estimate by
  • + *
  • "auto"- Default option. Will automatically adjust the value based on the new timeSpent specified on the worklog
+ */ + adjustEstimate?: string; + /** @description (required when "new" is selected for adjustEstimate) the new value for the remaining estimate field. e.g. "2d" */ + newEstimate?: string; + /** @description (required when "manual" is selected for adjustEstimate) the amount to reduce the remaining estimate by e.g. "2d" */ + reduceBy?: string; + }; + path: { + /** @description a string containing the issue id or key the worklog will be added to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a specific worklog.
+ * Note: The work log won't be returned if the Log work field is hidden for the project. + */ + getWorklog: { + parameters: { + path: { + /** @description a string containing the issue id or key the worklog belongs to */ + issueIdOrKey: string; + /** @description id of the worklog to be deleted */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates an existing worklog entry. + *

Note that:

+ *
    + *
  • Fields possible for editing are: comment, visibility, started, timeSpent and timeSpentSeconds.
  • + *
  • Either timeSpent or timeSpentSeconds can be set.
  • + *
  • Fields which are not set will not be updated.
  • + *
  • For a request to be valid, it has to have at least one field change.
  • + *
+ */ + updateWorklog: { + parameters: { + query?: { + /** + * @description (optional) allows you to provide specific instructions to update the remaining time estimate of the issue. Valid values are + *
    + *
  • "new" - sets the estimate to a specific value
  • + *
  • "leave"- leaves the estimate as is
  • + *
  • "auto"- Default option. Will automatically adjust the value based on the new timeSpent specified on the worklog
+ */ + adjustEstimate?: string; + /** @description (required when "new" is selected for adjustEstimate) the new value for the remaining estimate field. */ + newEstimate?: string; + }; + path: { + /** @description a string containing the issue id or key the worklog belongs to */ + issueIdOrKey: string; + /** @description id of the worklog to be deleted */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes an existing worklog entry. */ + deleteWorklog: { + parameters: { + query?: { + /** + * @description (optional) allows you to provide specific instructions to update the remaining time estimate of the issue. Valid values are + *
    + *
  • "new" - sets the estimate to a specific value
  • + *
  • "leave"- leaves the estimate as is
  • + *
  • "manual" - specify a specific amount to increase remaining estimate by
  • + *
  • "auto"- Default option. Will automatically adjust the value based on the new timeSpent specified on the worklog
+ */ + adjustEstimate?: string; + /** @description (required when "new" is selected for adjustEstimate) the new value for the remaining estimate field. e.g. "2d" */ + newEstimate?: string; + /** @description (required when "manual" is selected for adjustEstimate) the amount to increase the remaining estimate by e.g. "2d" */ + increaseBy?: string; + }; + path: { + /** @description a string containing the issue id or key the worklog belongs to */ + issueIdOrKey: string; + /** @description id of the worklog to be deleted */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates an issue link between two issues. + * The user requires the link issue permission for the issue which will be linked to another issue. + * The specified link type in the request is used to create the link and will create a link from the first issue + * to the second issue using the outward description. It also create a link from the second issue to the first issue using the + * inward description of the issue link type. + * It will add the supplied comment to the first issue. The comment can have a restriction who can view it. + * If group is specified, only users of this group can view this comment, if roleLevel is specified only users who have the specified role can view this comment. + * The user who creates the issue link needs to belong to the specified group or have the specified role. + */ + linkIssues: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns an issue link with the specified id. */ + getIssueLink: { + parameters: { + path: { + /** @description the issue link id. */ + linkId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Deletes an issue link with the specified id. + * To be able to delete an issue link you must be able to view both issues and must have the link issue permission + * for at least one of the issues. + */ + deleteIssueLink: { + parameters: { + path: { + /** @description the issue link id. */ + linkId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of available issue link types, if issue linking is enabled. + * Each issue link type has an id, a name and a label for the outward and inward link relationship. + */ + getIssueLinkTypes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Create a new issue link type. */ + createIssueLinkType: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns for a given issue link type id all information about this issue link type. */ + getIssueLinkType: { + parameters: { + path: { + issueLinkTypeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Update the specified issue link type. */ + updateIssueLinkType: { + parameters: { + path: { + issueLinkTypeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the specified issue link type. */ + deleteIssueLinkType: { + parameters: { + path: { + issueLinkTypeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all issue security schemes that are defined. */ + getIssueSecuritySchemes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the issue security scheme for project. */ + getIssueSecurityScheme: { + parameters: { + path: { + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all issue types visible to the user */ + getIssueAllTypes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates an issue type from a JSON representation and adds the issue newly created issue type to the default issue + * type scheme. + */ + createIssueType: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns paginated list of filtered issue types */ + getPaginatedIssueTypes: { + parameters: { + query?: { + /** @description the index of the first issue type to return */ + startAt?: number; + /** @description the maximum number of issue type to return */ + maxResults?: number; + /** @description the string that issue type names will be matched with */ + query?: string; + /** @description the set of project ids to filter issue types */ + projectIds?: string; + }; + header?: { + "X-Requested-With"?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the issue type mapping for the passed workflow scheme. */ + getIssueType: { + parameters: { + query?: { + /** + * @description when true indicates that a scheme's draft, if it exists, should be queried instead of + * the scheme itself. + */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Updates the specified issue type from a JSON representation. */ + updateIssueType: { + parameters: { + path: { + /** @description a String containing an issue type id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove the specified issue type mapping from the scheme. */ + deleteIssueType: { + parameters: { + query?: { + /** + * @description when true will create and return a draft when the workflow scheme cannot be edited + * (e.g. when it is being used by a project). + */ + updateDraftIfNeeded?: boolean; + }; + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of all alternative issue types for the given issue type id. The list will contain these issues types, to which + * issues assigned to the given issue type can be migrated. The suitable alternatives are issue types which are assigned + * to the same workflow, the same field configuration and the same screen scheme. + */ + getAlternativeIssueTypes: { + parameters: { + path: { + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates temporary avatar using multipart. The response is sent back as JSON stored in a textarea. This is because + * the client uses remote iframing to submit avatars using multipart. So we must send them a valid HTML page back from + * which the client parses the JSON from. + *

+ * Creating a temporary avatar is part of a 3-step process in uploading a new + * avatar for a user: upload, crop, confirm. This endpoint allows you to use a multipart upload + * instead of sending the image directly as the request body. + *

+ *

+ * You *must* use "avatar" as the name of the upload parameter:

+ *

+ *

+     *  curl -c cookiejar.txt -X POST -u admin:admin -H "X-Atlassian-Token: no-check" \
+     *    -F "avatar=@mynewavatar.png;type=image/png" \
+     *    'http://localhost:8090/jira/rest/api/2/user/avatar/temporary?username=admin'
+     *  
+ */ + storeTemporaryAvatarUsingMultiPart: { + parameters: { + query?: { + /** @description Username */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the keys of all properties for the issue type identified by the id. */ + getPropertyKeys: { + parameters: { + path: { + /** @description the issue type from which the keys will be returned */ + issueTypeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of all issue type schemes visible to the user (must be admin). + *

+ * All issue types associated with the scheme will only be returned if an additional query parameter is provided: + * expand=schemes.issueTypes. + *

+ *

+ * Similarly, the default issue type associated with the scheme (if one exists) will only be returned if + * additional an query parameter is provided: expand=schemes.defaultIssueType. + *

+ *

+ * Note that both query parameters can be used together: expand=schemes.issueTypes,schemes.defaultIssueType. + *

+ */ + getAllIssueTypeSchemes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates an issue type scheme from a JSON representation. (Admin required) */ + createIssueTypeScheme: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a full representation of the issue type scheme that has the given id (must be admin). */ + getIssueTypeScheme: { + parameters: { + path: { + /** @description the id of the issue type scheme to remove. */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Updates the specified issue type scheme from a JSON representation. (Admin required) */ + updateIssueTypeScheme: { + parameters: { + path: { + /** @description the id of the issue type scheme to remove. */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Deletes the specified issue type scheme. Any projects associated with this IssueTypeScheme will be automatically + * associated with the global default IssueTypeScheme. (Admin required) + */ + deleteIssueTypeScheme: { + parameters: { + path: { + /** @description the id of the issue type scheme to remove. */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description For the specified issue type scheme, returns all of the associated projects. (Admin required) */ + getAssociatedProjects: { + parameters: { + query?: { + /** @description the parameters to expand on the returned projects; defaults to none. */ + expand?: string; + }; + path: { + /** @description the id of the issue type scheme whose project associations we're removing */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Associates the given projects with the specified issue type scheme. Any existing project-associations the issue + * type scheme has will be overwritten. (Admin required) + */ + setProjectAssociationsForScheme: { + parameters: { + path: { + /** @description the id of the issue type scheme whose project associations we're removing */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds additional projects to those already associated with the specified issue type scheme. (Admin required) */ + addProjectAssociationsToScheme: { + parameters: { + path: { + /** @description the id of the issue type scheme whose project associations we're removing */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Removes all project associations for the specified issue type scheme. These projects revert to an association with + * the default/global issue type scheme.(Admin required) + */ + removeAllProjectAssociations: { + parameters: { + path: { + /** @description the id of the issue type scheme whose project associations we're removing */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description For the specified issue type scheme, removes the given project association . This project reverts to an association + * with the default/global issue type scheme.(Admin required) + */ + removeProjectAssociation: { + parameters: { + path: { + /** @description the id or key of the project that is to be un-associated with the issue type scheme */ + projIdOrKey: string; + /** @description the id of the issue type scheme whose project association we're removing */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the auto complete data required for JQL searches. */ + getAutoComplete: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns auto complete suggestions for JQL search. */ + getFieldAutoCompleteForQueryString: { + parameters: { + query?: { + /** @description the field name for which the suggestions are generated. */ + fieldName?: string; + /** @description the portion of the field value that has already been provided by the user. */ + fieldValue?: string; + /** @description the predicate for which the suggestions are generated. Suggestions are generated only for: "by", "from" and "to". */ + predicateName?: string; + /** @description the portion of the predicate value that has already been provided by the user. */ + predicateValue?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + validate: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + isAppMonitoringEnabled: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + setAppMonitoringEnabled: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + isIpdMonitoringEnabled: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + areMetricsExposed: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + getAvailableMetrics: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + start: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + stop: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all permissions in the system and whether the currently logged in user has them. You can optionally provide a specific context to get permissions for + * (projectKey OR projectId OR issueKey OR issueId) + *
    + *
  • When no context supplied the project related permissions will return true if the user has that permission in ANY project
  • + *
  • If a project context is provided, project related permissions will return true if the user has the permissions in the specified project. + * For permissions that are determined using issue data (e.g Current Assignee), true will be returned if the user meets the permission criteria in ANY issue in that project
  • + *
  • If an issue context is provided, it will return whether or not the user has each permission in that specific issue
  • + *
+ *

+ * NB: The above means that for issue-level permissions (EDIT_ISSUE for example), hasPermission may be true when no context is provided, or when a project context is provided, + * but may be false for any given (or all) issues. This would occur (for example) if Reporters were given the EDIT_ISSUE permission. This is because + * any user could be a reporter, except in the context of a concrete issue, where the reporter is known. + *

+ *

+ * Global permissions will still be returned for all scopes. + *

+ *

+ * Prior to version 6.4 this service returned project permissions with keys corresponding to com.atlassian.jira.security.Permissions.Permission constants. + * Since 6.4 those keys are considered deprecated and this service returns system project permission keys corresponding to constants defined in com.atlassian.jira.permission.ProjectPermissions. + * Permissions with legacy keys are still also returned for backwards compatibility, they are marked with an attribute deprecatedKey=true. + * The attribute is missing for project permissions with the current keys. + *

+ */ + getPermissions: { + parameters: { + query?: { + /** @description - key of project to scope returned permissions for. */ + projectKey?: string; + /** @description - id of project to scope returned permissions for. */ + projectId?: string; + /** @description - key of the issue to scope returned permissions for. */ + issueKey?: string; + /** @description - id of the issue to scope returned permissions for. */ + issueId?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns preference of the currently logged in user. Preference key must be provided as input parameter (key). The + * value is returned exactly as it is. If key parameter is not provided or wrong - status code 404. If value is + * found - status code 200. + */ + getPreference: { + parameters: { + query?: { + /** @description - key of the preference to be returned. */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Sets preference of the currently logged in user. Preference key must be provided as input parameters (key). Value + * must be provided as post body. If key or value parameter is not provided - status code 404. If preference is set + * - status code 204. + */ + setPreference: { + parameters: { + query?: { + /** @description - key of the preference to be set. */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Removes preference of the currently logged in user. Preference key must be provided as input parameters (key). If + * key parameter is not provided or wrong - status code 404. If preference is unset - status code 204. + */ + removePreference: { + parameters: { + query?: { + /** @description - key of the preference to be removed. */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a user. This resource cannot be accessed anonymously. */ + getUser: { + parameters: { + query?: { + /** @description the username */ + username?: string; + /** @description user key */ + key?: string; + /** @description whether deleted users should be returned (flag available to users with global ADMIN rights) */ + includeDeleted?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Modify user. The "value" fields present will override the existing value. + * Fields skipped in request will not be changed. + */ + updateUser: { + parameters: { + query?: { + /** @description the username */ + username?: string; + /** @description user key */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Modify caller password. */ + changeMyPassword: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a paginated list of notification schemes. In order to access notification scheme, the calling user is + * required to have permissions to administer at least one project associated with the requested notification scheme. Each scheme contains + * a list of events and recipient configured to receive notifications for these events. Consumer should allow events without recipients to appear in response. + * The list is ordered by the scheme's name. + * Follow the documentation of /notificationscheme/{id} resource for all details about returned value. + */ + getNotificationSchemes: { + parameters: { + query?: { + /** @description the index of the first notification scheme to return (0 based). */ + startAt?: number; + /** @description the maximum number of notification schemes to return (max 50). */ + maxResults?: number; + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Gets a notification scheme associated with the project. + * Follow the documentation of /notificationscheme/{id} resource for all details about returned value. + */ + getNotificationScheme: { + parameters: { + query?: { + expand?: string; + }; + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the list of requirements for the current password policy. For example, "The password must have at least 10 characters.", + * "The password must not be similar to the user's name or email address.", etc. + */ + getPasswordPolicy: { + parameters: { + query?: { + /** + * @description whether or not the user will be required to enter their current password. Use + * {@code false} (the default) if this is a new user or if an administrator is forcibly changing + * another user's password. + */ + hasOldPassword?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of statements explaining why the password policy would disallow a proposed password for a new user. + *

+ * You can use this method to test the password policy validation. This could be done prior to an action + * where a new user and related password are created, using methods like the ones in + * UserService. + * For example, you could use this to validate a password in a create user form in the user interface, as the user enters it.
+ * The username and new password must be not empty to perform the validation.
+ * Note, this method will help you validate against the policy only. It won't check any other validations that might be performed + * when creating a new user, e.g. checking whether a user with the same name already exists. + *

+ */ + policyCheckCreateUser: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of statements explaining why the password policy would disallow a proposed new password for a user with an existing password. + *

+ * You can use this method to test the password policy validation. This could be done prior to an action where the password + * is actually updated, using methods like ChangePassword + * or ResetPassword. + * For example, you could use this to validate a password in a change password form in the user interface, as the user enters it.
+ * The user must exist and the username and new password must be not empty, to perform the validation.
+ * Note, this method will help you validate against the policy only. It won't check any other validations that might be performed + * when submitting a password change/reset request, e.g. verifying whether the old password is valid. + *

+ */ + policyCheckUpdateUser: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all permissions that are present in the Jira instance - Global, Project and the global ones added by plugins */ + getAllPermissions: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of all permission schemes. + *

+ * By default only shortened beans are returned. If you want to include permissions of all the schemes, + * then specify the permissions expand parameter. Permissions will be included also if you specify + * any other expand parameter. + *

+ */ + getPermissionSchemes: { + parameters: { + query?: { + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Create a new permission scheme. + * This method can create schemes with a defined permission set, or without. + */ + createPermissionScheme: { + parameters: { + query?: { + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + getSchemeAttribute: { + parameters: { + path: { + /** @description permission scheme id */ + permissionSchemeId: number; + /** @description permission scheme attribute key */ + attributeKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates or inserts the attribute for a permission scheme specified by permission scheme id. + * The attribute consists of the key and the value. The value will be converted to Boolean using Boolean#valueOf. + */ + setSchemeAttribute: { + parameters: { + path: { + /** @description permission scheme id */ + permissionSchemeId: number; + /** @description permission scheme attribute key */ + key: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a permission scheme identified by the given id. */ + getPermissionScheme: { + parameters: { + query?: { + expand?: string; + }; + path: { + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates a permission scheme. + *

+ * If the permissions list is present then it will be set in the permission scheme, which basically means it will overwrite any permission grants that + * existed in the permission scheme. Sending an empty list will remove all permission grants from the permission scheme. + *

+ *

+ * To update just the name and description, do not send permissions list at all. + *

+ *

+ * To add or remove a single permission grant instead of updating the whole list at once use the {schemeId}/permission/ resource. + *

+ */ + updatePermissionScheme: { + parameters: { + query?: { + expand?: string; + }; + path: { + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes a permission scheme identified by the given id. */ + deletePermissionScheme: { + parameters: { + path: { + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all permission grants of the given permission scheme. */ + getPermissionSchemeGrants: { + parameters: { + query?: { + expand?: string; + }; + path: { + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates a permission grant in a permission scheme. */ + createPermissionGrant: { + parameters: { + query?: { + expand?: string; + }; + path: { + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a permission grant identified by the given id. */ + getPermissionSchemeGrant: { + parameters: { + query?: { + expand?: string; + }; + path: { + permissionId: number; + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes a permission grant from a permission scheme. */ + deletePermissionSchemeEntity: { + parameters: { + path: { + permissionId: number; + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all issue priorities. */ + getPriorities: { + parameters: { + query?: { + startAt?: number; + maxResults?: number; + query?: string; + projectIds?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns an issue priority. */ + getPriority: { + parameters: { + path: { + /** @description a String containing the priority id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all priority schemes. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=schemes.projectKeys. + */ + getPrioritySchemes: { + parameters: { + query?: { + /** @description the page offset, if not specified then defaults to 0 */ + startAt?: number; + /** @description how many results on the page should be included. Defaults to 100, maximum is 1000. */ + maxResults?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates new priority scheme. */ + createPriorityScheme: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Gets a full representation of a priority scheme in JSON format. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + getPriorityScheme: { + parameters: { + path: { + /** @description id of priority scheme to get */ + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates a priority scheme. + * Update will be rejected if issue migration would be needed as a result of scheme update. + * Priority scheme update with migration is possible from the UI. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + updatePriorityScheme: { + parameters: { + path: { + /** @description id of priority scheme to get */ + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Deletes a priority scheme. All projects using deleted scheme will use default priority scheme afterwards. + * + * Default priority scheme can't be deleted. + */ + deletePriorityScheme: { + parameters: { + path: { + /** @description id of priority scheme to get */ + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all projects which are visible for the currently logged in user. If no user is logged in, it returns the + * list of projects that are visible when using anonymous access. + */ + getAllProjects: { + parameters: { + query?: { + /** @description the parameters to expand */ + expand?: string; + /** @description if this parameter is set then only projects recently accessed by the current user (if not logged in then based on HTTP session) will be returned (maximum count limited to the specified number but no more than 20). */ + recent?: number; + /** @description whether to include archived projects in response, default: false */ + includeArchived?: boolean; + /** @description whether to include only projects where current user can browse archive */ + browseArchive?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates a new project. */ + createProject: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all the project types defined on the Jira instance, not taking into account whether + * the license to use those project types is valid or not. + */ + getAllProjectTypes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the project type with the given key. */ + getProjectTypeByKey: { + parameters: { + path: { + projectTypeKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the project type with the given key, if it is accessible to the logged in user. + * This takes into account whether the user is licensed on the Application that defines the project type. + */ + getAccessibleProjectTypeByKey: { + parameters: { + path: { + projectTypeKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Validates a project key. */ + getProject: { + parameters: { + query?: { + /** @description the project key */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates a project. + *

+ * Only non null values sent in JSON will be updated in the project.

+ *

+ * Values available for the assigneeType field are: "PROJECT_LEAD" and "UNASSIGNED".

+ */ + updateProject: { + parameters: { + query?: { + /** @description the parameters to expand in returned project */ + expand?: string; + }; + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes a project. */ + deleteProject: { + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Archives a project. */ + archiveProject: { + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates an avatar for a project. This is step 3/3 of changing an avatar for a project: + * + *
    + *
  • Upload (store temporary avatar)
  • + *
  • Crop (create avatar from temporary)
  • + *
  • Update (update project avatar)
  • + *
+ */ + updateProjectAvatar: { + parameters: { + path: { + /** @description project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes avatar */ + deleteAvatar: { + parameters: { + query?: { + /** @description username */ + username?: string; + }; + path: { + /** @description database id for avatar */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all avatars which are visible for the currently logged in user. */ + getAllAvatars: { + parameters: { + query?: { + /** @description username */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Contains a full representation of a the specified project's components. */ + getProjectComponents: { + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Restore an archived project. + * In case of success restored project should be re-indexed. + */ + restoreProject: { + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Get all the ProjectRoles available in Jira. Currently this list is global. */ + getProjectRoles: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the details for a given project role in a project. */ + getProjectRole: { + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + /** @description the project role id */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates a project role to include the specified actors (users or groups). Can be also used to clear roles to not include any users or groups. + *

+ * For user actors, their usernames should be used. + */ + setActors: { + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + /** @description the project role id */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Adds an actor (user or group) to a project role. + *

+ * For user actors, their usernames should be used. + */ + addActorUsers: { + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + /** @description the project role id */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Deletes actors (users or groups) from a project role. + *

+ *

    + *
  • Delete a user from the role: /rest/api/2/project/{projectIdOrKey}/role/{roleId}?user={username}
  • + *
  • Delete a group from the role: /rest/api/2/project/{projectIdOrKey}/role/{roleId}?group={groupname}
  • + *
+ */ + deleteActor: { + parameters: { + query?: { + /** @description the username of the user to remove from the project role */ + user?: string; + /** @description the groupname to remove from the project role */ + group?: string; + }; + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + /** @description the project role id */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Get all issue types with valid status values for a project */ + getAllStatuses: { + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Updates the type of a project. */ + updateProjectType: { + parameters: { + path: { + /** @description identity of the project to update */ + projectIdOrKey: string; + /** @description The key of the new project type */ + newProjectTypeKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all versions for the specified project. Results are paginated. + *

+ * Results can be ordered by the following fields: + *

    + *
  • sequence
  • + *
  • name
  • + *
  • startDate
  • + *
  • releaseDate
  • + *
+ *

+ */ + getProjectVersionsPaginated: { + parameters: { + query?: { + /** @description the page offset, if not specified then defaults to 0 */ + startAt?: number; + /** @description how many results on the page should be included. Defaults to 50. */ + maxResults?: number; + /** @description ordering of the results. */ + orderBy?: string; + /** @description the parameters to expand */ + expand?: string; + }; + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Contains a full representation of a the specified project's versions. */ + getProjectVersions: { + parameters: { + query?: { + /** @description the parameters to expand */ + expand?: string; + }; + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Gets a permission scheme assigned with a project. */ + getAssignedPermissionScheme: { + parameters: { + query?: { + expand?: string; + }; + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Assigns a permission scheme with a project. */ + assignPermissionScheme: { + parameters: { + query?: { + expand?: string; + }; + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Gets a full representation of a priority scheme in JSON format used by specified project. + * User must be global administrator or project administrator. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + getAssignedPriorityScheme: { + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Assigns project with priority scheme. + * Priority scheme assign with migration is possible from the UI. + * + * Operation will fail if migration is needed as a result of operation eg. there are issues with priorities invalid in the destination scheme. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + assignPriorityScheme: { + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Unassigns project from priority scheme. + * + * Operation will fail for defualt priority scheme, project is not found or project is not associated with provided priority scheme. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + unassignPriorityScheme: { + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + /** @description object that contains an id of the scheme */ + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all security levels for the project that the current logged in user has access to. + * If the user does not have the Set Issue Security permission, the list will be empty. + */ + getSecurityLevelsForProject: { + parameters: { + path: { + /** @description - key or id of project to list the security levels for */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the workflow scheme that is associated with requested project. */ + getWorkflowSchemeForProject: { + parameters: { + path: { + /** @description the key or id of the project. */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all project categories */ + getAllProjectCategories: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Create a project category via POST. */ + createProjectCategory: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Contains a representation of a project category in JSON format. */ + getProjectCategoryById: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Modify a project category via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field + * is not present, it is silently ignored. + */ + updateProjectCategory: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete a project category. */ + removeProjectCategory: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of projects visible to the user where project name and/or key is matching the given query. + *

+ * Passing an empty (or whitespace only) query will match no projects. The project matches will + * contain a field with the query highlighted. + *

+ * The number of projects returned can be controlled by passing a value for "maxResults", but a hard limit of no + * more than 100 projects is enforced. The projects are wrapped in a single response object that contains + * a header for use in the picker, specifically Showing X of Y matching projects and the total number + * of matches for the query. + */ + searchForProjects: { + parameters: { + query?: { + /** @description a sequence of characters expected to be found in the word-prefix of project name and/or key. */ + query?: string; + /** @description maximum number of matches to return. Zero means a default limit of 100 and negative numbers return no results. */ + maxResults?: number; + /** @description if true, and the query is empty, the method will return first results limited to the value of "maxResults" or default limit of 100. */ + allowEmptyQuery?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns information on the system reindexes. If a reindex is currently taking place then information about this reindex is returned. + * If there is no active index task, then returns information about the latest reindex task run, otherwise returns a 404 + * indicating that no reindex has taken place. + */ + getReindexInfo: { + parameters: { + query?: { + /** + * @description the id of an indexing task you wish to obtain details on. If omitted, then defaults to the standard behaviour and + * returns information on the active reindex task, or the last task to run if no reindex is taking place. . If there is no + * reindexing task with that id then a 404 is returned. + */ + taskId?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Kicks off a reindex. Need Admin permissions to perform this reindex. */ + reindex: { + parameters: { + query?: { + /** @description Case insensitive String indicating type of reindex. If omitted, then defaults to BACKGROUND_PREFERRED. */ + type?: string; + /** @description Indicates that comments should also be reindexed. Not relevant for foreground reindex, where comments are always reindexed. */ + indexComments?: boolean; + /** @description Indicates that changeHistory should also be reindexed. Not relevant for foreground reindex, where changeHistory is always reindexed. */ + indexChangeHistory?: boolean; + /** @description Indicates that worklogs should also be reindexed. Not relevant for foreground reindex, where worklogs are always reindexed. */ + indexWorklogs?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Reindexes one or more individual issues. Indexing is performed synchronously - the call returns when indexing of + * the issues has completed or a failure occurs. + *

+ * Use either explicitly specified issue IDs or a JQL query to select issues to reindex. + */ + reindexIssues: { + parameters: { + query?: { + /** @description the IDs or keys of one or more issues to reindex. */ + issueId?: string; + /** @description Indicates that comments should also be reindexed. */ + indexComments?: boolean; + /** @description Indicates that changeHistory should also be reindexed. */ + indexChangeHistory?: boolean; + /** @description Indicates that worklogs should also be reindexed. */ + indexWorklogs?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns information on the system reindexes. If a reindex is currently taking place then information about this reindex is returned. + * If there is no active index task, then returns information about the latest reindex task run, otherwise returns a 404 + * indicating that no reindex has taken place. + */ + getReindexProgress: { + parameters: { + query?: { + /** + * @description the id of an indexing task you wish to obtain details on. If omitted, then defaults to the standard behaviour and + * returns information on the active reindex task, or the last task to run if no reindex is taking place. . If there is no + * reindexing task with that id then a 404 is returned. + */ + taskId?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Executes any pending reindex requests. Returns a JSON array containing the IDs of the reindex requests + * that are being processed. Execution is asynchronous - progress of the returned tasks can be monitored through + * other REST calls. + */ + processRequests: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Retrieves the progress of a multiple reindex requests. Only reindex requests that actually exist will be returned + * in the results. + */ + getProgressBulk: { + parameters: { + query?: { + /** @description the reindex request IDs. */ + requestId?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns information about a user anonymization operation progress. */ + getProgress: { + parameters: { + query?: { + /** + * @description the id of a user anonymization task you wish to obtain details on. If omitted, then defaults to + * the active anonymization task, or the last task that was run if no anonymization is taking place. + */ + taskId?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all resolutions. */ + getResolutions: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns paginated list of filtered resolutions */ + getPaginatedResolutions: { + parameters: { + query?: { + /** @description the index of the first status to return */ + startAt?: number; + /** @description the maximum number of statuses to return */ + maxResults?: number; + /** @description the string that status names will be matched with */ + query?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a resolution. */ + getResolution: { + parameters: { + path: { + /** @description a String containing the resolution id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates a new ProjectRole to be available in Jira. + * The created role does not have any default actors assigned. + */ + createProjectRole: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Get a specific ProjectRole available in Jira. */ + getProjectRolesById: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Fully updates a roles. Both name and description must be given. */ + fullyUpdateProjectRole: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Partially updates a roles name or description. */ + partialUpdateProjectRole: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes a role. May return 403 in the future */ + deleteProjectRole: { + parameters: { + query?: { + /** @description if given, removes a role even if it is used in scheme by replacing the role with the given one */ + swap?: number; + }; + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Gets default actors for the given role. */ + getProjectRoleActorsForRole: { + parameters: { + path: { + /** @description the role id to remove the actors from */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds default actors to the given role. The request data should contain a list of usernames or a list of groups to add. */ + addProjectRoleActorsToRole: { + parameters: { + path: { + /** @description the role id to remove the actors from */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Removes default actor from the given role. */ + deleteProjectRoleActorsFromRole: { + parameters: { + query?: { + /** @description if given, removes an actor from given role */ + user?: string; + /** @description if given, removes an actor from given role */ + group?: string; + }; + path: { + /** @description the role id to remove the actors from */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Gets available field screens */ + getAllScreens: { + parameters: { + query?: { + /** @description offset from which the response starts */ + startAt?: string; + /** @description amount of field screens to return */ + maxResults?: string; + expand?: string; + search?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds field or custom field to the default tab */ + addFieldToDefaultScreen: { + parameters: { + path: { + /** @description id of field / custom field */ + fieldId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Gets available fields for screen. i.e ones that haven't already been added. */ + getFieldsToAdd: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all tabs for the given screen */ + getAllTabs: { + parameters: { + query?: { + /** @description the key of the project; this parameter is optional */ + projectKey?: string; + }; + path: { + /** @description id of screen */ + screenId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates tab for given screen */ + addTab: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Renames tab on given screen */ + renameTab: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes tab to give screen */ + deleteTab: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Gets all fields for a given tab */ + getAllFields: { + parameters: { + query?: { + /** @description the key of the project; this parameter is optional */ + projectKey?: string; + }; + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds field to the given tab. */ + addField: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Removes field from given tab */ + removeField: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Moves field on the given tab */ + moveField: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Update 'showWhenEmptyIndicator' for given field on screen */ + updateShowWhenEmptyIndicator: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + /** @description new value of 'showWhenEmptyIndicator' */ + newValue: boolean; + /** @description id of field */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Moves tab position */ + moveTab: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + /** @description position of tab */ + pos: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Searches for issues using JQL. + *

+ * Sorting + * the jql parameter is a full JQL + * expression, and includes an ORDER BY clause. + *

+ *

+ * The fields param (which can be specified multiple times) gives a comma-separated list of fields + * to include in the response. This can be used to retrieve a subset of fields. + * A particular field can be excluded by prefixing it with a minus. + *

+ * By default, only navigable (*navigable) fields are returned in this search resource. Note: the default is different + * in the get-issue resource -- the default there all fields (*all). + *

    + *
  • *all - include all fields
  • + *
  • *navigable - include just navigable fields
  • + *
  • summary,comment - include just the summary and comments
  • + *
  • -description - include navigable fields except the description (the default is *navigable for search)
  • + *
  • *all,-comment - include everything except comments
  • + *
+ *

+ *

+ *

GET vs POST: + * If the JQL query is too large to be encoded as a query param you should instead + * POST to this resource. + *

+ *

+ * Expanding Issues in the Search Result: + * It is possible to expand the issues returned by directly specifying the expansion on the expand parameter passed + * in to this resources. + *

+ *

+ * For instance, to expand the "changelog" for all the issues on the search result, it is neccesary to + * specify "changelog" as one of the values to expand. + *

+ */ + search: { + parameters: { + query?: { + /** @description a JQL query string */ + jql?: string; + /** @description the index of the first issue to return (0-based) */ + startAt?: number; + /** + * @description the maximum number of issues to return (defaults to 50). The maximum allowable value is + * dictated by the Jira property 'jira.search.views.default.max'. If you specify a value that is higher than this + * number, your search results will be truncated. + */ + maxResults?: number; + /** @description whether to validate the JQL query */ + validateQuery?: boolean; + /** @description the list of fields to return for each issue. By default, all navigable fields are returned. */ + fields?: string; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Performs a search using JQL. */ + searchUsingSearchRequest: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a full representation of the security level that has the given id. */ + getIssuesecuritylevel: { + parameters: { + path: { + /** @description a String containing an issue security level id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns general information about the current Jira server. */ + getServerInfo: { + parameters: { + query?: { + doHealthCheck?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Sets the base URL that is configured for this Jira instance. */ + setBaseURL: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the default system columns for issue navigator. Admin permission will be required. */ + getIssueNavigatorDefaultColumns: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Sets the default system columns for issue navigator. Admin permission will be required. */ + setIssueNavigatorDefaultColumns: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all statuses */ + getStatuses: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns paginated list of filtered statuses */ + getPaginatedStatuses: { + parameters: { + query?: { + /** @description the index of the first status to return */ + startAt?: number; + /** @description the maximum number of statuses to return */ + maxResults?: number; + /** @description the string that status names will be matched with */ + query?: string; + /** @description the list of project ids to filter statuses */ + projectIds?: string; + /** @description the list of issue type ids to filter statuses */ + issueTypeIds?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a full representation of the Status having the given id or name. */ + getStatus: { + parameters: { + path: { + /** @description a numeric Status id or a status name */ + idOrName: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all status categories */ + getStatusCategories: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a full representation of the StatusCategory having the given id or key */ + getStatusCategory: { + parameters: { + path: { + /** @description a numeric StatusCategory id or a status category key */ + idOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the list of all defined names for the default words "epic" and "sprint". */ + getAllTerminologyEntries: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Change epic/sprint names from {"originalName"} to {"newName"}. The {"newName"} will be displayed in Jira instead of {"originalName"}. + *

+ * {"originalName"} must be equal to "epic" or "sprint". + * There can be only one entry per unique {"originalName"}. + *

+ * {"newName"} can only consist of alphanumeric characters and spaces e.g. {"newName": "iteration number 2"}. + *

+ * {"newName"} must be between 1 to 100 characters. + * It can't use the already defined {"newName"} values or restricted JQL words . + *

+ * To reset {"newName"} to the default value, enter the {"originalName"} value as the value for {"newName"}. For example, if you want to return to {"originalName": "sprint"}, enter {"newName": "sprint"}. + */ + setTerminologyEntries: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns epic or sprint name as specified in the {originalName} path param. */ + getTerminologyEntry: { + parameters: { + path: { + originalName: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + getAvatars: { + parameters: { + path: { + type: string; + owningObjectId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the result of the last upgrade task. + * + * Returns {@link javax.ws.rs.core.Response#seeOther(java.net.URI)} if still running. + */ + getUpgradeResult: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Runs any pending delayed upgrade tasks. Need Admin permissions to do this. */ + runUpgradesNow: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Create user. By default created user will not be notified with email. + * If password field is not set then password will be randomly generated. + */ + createUser: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Removes user and its references (like project roles associations, watches, history). + *
+ *
+ * Note: user references will not be removed if multiple User Directories are used and there is a user with + * the same name existing in another directory (shadowing user). + */ + removeUser: { + parameters: { + query?: { + /** @description the username */ + username?: string; + /** @description user key */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns available accessibility personal settings along with `enabled` property + * that indicates the currently logged-in user preference. + */ + getA11yPersonalSettings: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Validates user anonymization process. */ + validateUserAnonymization: { + parameters: { + query?: { + /** @description the key of the user to validate anonymization for. */ + userKey?: string; + /** @description Parameter used to include parts of the response. This can be used to include: affectedEntities. Affected entities will only be returned if expand=affectedEntities. */ + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Schedules a user anonymization process. Requires system admin permission. */ + scheduleUserAnonymization: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Validates user anonymization re-run process. */ + validateUserAnonymizationRerun: { + parameters: { + query?: { + /** @description the key of the user to validate anonymization for */ + userKey?: string; + /** + * @description user key before anonymization, only needed when current value is anonymized. + * If there is no old key, e.g. because the user was already created + * using the new key generation strategy, provide a value equal to the current key. + */ + oldUserKey?: string; + /** + * @description user name before anonymization, only needed when the current value is anonymized. + * If there is no old name, provide a value equal to the current name. + */ + oldUserName?: string; + /** @description Parameter used to include parts of the response. This can be used to include: affectedEntities. Affected entities will only be returned if expand=affectedEntities. */ + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Schedules a user anonymization process. Requires system admin permission. */ + scheduleUserAnonymizationRerun: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Removes stale user anonymization task, for scenarios when the node that was executing it is no longer alive. + *

+ * Use it only after making sure that the parent node of the task is actually down, and not just having + * connectivity issues. + */ + unlockAnonymization: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Add user to given application. Admin permission will be required to perform this operation. */ + addUserToApplication: { + parameters: { + query?: { + /** @description username */ + username?: string; + /** @description application key */ + applicationKey?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove user from given application. Admin permission will be required to perform this operation. */ + removeUserFromApplication: { + parameters: { + query?: { + /** @description username */ + username?: string; + /** @description application key */ + applicationKey?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of users that match the search string and can be assigned issues for all the given projects. */ + findBulkAssignableUsers: { + parameters: { + query?: { + /** @description the username */ + username?: string; + /** @description the keys of the projects we are finding assignable users for, comma-separated */ + projectKeys?: string; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 100. + * If you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of users that match the search string. This resource cannot be accessed anonymously. + * Please note that this resource should be called with an issue key when a list of assignable users is retrieved + * for editing. For create only a project key should be supplied. The list of assignable users may be incorrect + * if it's called with the project key for editing. + */ + findAssignableUsers: { + parameters: { + query?: { + /** @description the username */ + username?: string; + /** @description the key of the project we are finding assignable users for */ + project?: string; + /** @description the issue key for the issue being edited we need to find assignable users for. */ + issueKey?: string; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 100. + * If you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + actionDescriptorId?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + updateUserAvatar: { + parameters: { + query?: { + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the number of users whose accounts are duplicated. + * Duplicated means that the user has an account in more than one directory + * and either more than one account is active or the only active account does not belong to the directory + * with the highest priority. + * The data returned by this endpoint is cached for 10 minutes and the cache is flushed when any User Directory + * is added, removed, enabled, disabled, or synchronized. + * A System Administrator can also flush the cache manually. + * Related JAC ticket: https://jira.atlassian.com/browse/JRASERVER-68797 + */ + getDuplicatedUsersCount: { + parameters: { + query?: { + /** @description if set to true forces cache flush, user must be sysadmin for this parameter to have an effect. */ + flush?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns duplicated users mapped to their directories with an indication if their accounts are active or not. + * Duplicated means that the user has an account in more than one directory and either more than one account is active + * or the only active account does not belong to the directory with the highest priority. + * The data returned by this endpoint is cached for 10 minutes and the cache is flushed when any User Directory + * is added, removed, enabled, disabled, or synchronized. + * A System Administrator can also flush the cache manually. + * Related JAC ticket: https://jira.atlassian.com/browse/JRASERVER-68797 + */ + getDuplicatedUsersMapping: { + parameters: { + query?: { + /** @description if set to true forces cache flush, user must be sysadmin for this parameter to have an effect. */ + flush?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Modify user password. */ + changeUserPassword: { + parameters: { + query?: { + /** @description the username */ + username?: string; + /** @description user key */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of active users that match the search string and have all specified permissions for the project or issue.
+ * This resource can be accessed by users with ADMINISTER_PROJECT permission for the project or global ADMIN or SYSADMIN rights.
+ * This endpoint can cause serious performance issues and will be removed in Jira 9.0. + */ + findUsersWithAllPermissions: { + parameters: { + query?: { + /** @description the username filter, list includes all users if unspecified */ + username?: string; + /** + * @description comma separated list of permissions for project or issue returned users must have, see + * Permissions + * JavaDoc for the list of all possible permissions. + */ + permissions?: string; + /** @description the issue key for the issue for which returned users have specified permissions. */ + issueKey?: string; + /** @description the optional project key to search for users with if no issueKey is supplied. */ + projectKey?: string; + /** @description the index of the first user to return (0-based) */ + startAt?: number; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. + * If you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of users matching query with highlighting. */ + findUsersForPicker: { + parameters: { + query?: { + /** @description A string used to search username, Name or e-mail address */ + query?: string; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. + * If you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + showAvatar?: boolean; + exclude?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of users that match the search string. This resource cannot be accessed anonymously. */ + findUsers: { + parameters: { + query?: { + /** @description A query string used to search username, name or e-mail address */ + username?: string; + /** @description the index of the first user to return (0-based) */ + startAt?: number; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. + * If you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + /** @description If true, then active users are included in the results (default true) */ + includeActive?: boolean; + /** @description If true, then inactive users are included in the results (default false) */ + includeInactive?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + deleteSession: { + parameters: { + path: { + username: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of active users that match the search string. This resource cannot be accessed anonymously + * and requires the Browse Users global permission. + * Given an issue key this resource will provide a list of users that match the search string and have + * the browse issue permission for the issue provided. + */ + findUsersWithBrowsePermission: { + parameters: { + query?: { + /** @description the username filter, no users returned if left blank */ + username?: string; + /** @description the issue key for the issue being edited we need to find viewable users for. */ + issueKey?: string; + /** @description the optional project key to search for users with if no issueKey is supplied. */ + projectKey?: string; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 100. + * If you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Retrieve paginated collection of versions matching given query optionally filtered by given project IDs. */ + getPaginatedVersions: { + parameters: { + query?: { + /** @description optional index of the first version to return */ + startAt?: number; + /** @description optional maximum number of versions to return */ + maxResults?: number; + /** @description optional string that version names will be matched with */ + query?: string; + /** @description optional set of project IDs to filter versions with */ + projectIds?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Create a version via POST. */ + createVersion: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the remote version links for a given global ID. */ + getRemoteVersionLinks: { + parameters: { + query?: { + /** @description the global ID of the remote resource that is linked to the versions */ + globalId?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a project version. */ + getVersion: { + parameters: { + query?: { + expand?: string; + }; + path: { + /** @description The version to delete */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Modify a version via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field + * is not present, it is silently ignored. + */ + updateVersion: { + parameters: { + path: { + /** @description The version to delete */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Merge versions */ + merge: { + parameters: { + path: { + /** + * @description The version to set fixVersion to on issues where the deleted version is the fix version, + * If null then the fixVersion is removed. + */ + moveIssuesTo: string; + /** @description The version that will be merged to version {@code moveIssuesTo} and removed */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Modify a version's sequence within a project. + *

+ * The move version bean has 2 alternative field value pairs: + *

+ *
position
An absolute position, which may have a value of 'First', 'Last', 'Earlier' or 'Later'
+ *
after
A version to place this version after. The value should be the self link of another version
+ *
+ */ + moveVersion: { + parameters: { + path: { + /** @description a String containing the version id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a bean containing the number of fixed in and affected issues for the given version. */ + getVersionRelatedIssues: { + parameters: { + path: { + /** @description a String containing the version id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the number of unresolved issues for the given version */ + getVersionUnresolvedIssues: { + parameters: { + path: { + /** @description a String containing the version id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the remote version links associated with the given version ID. */ + getRemoteVersionLinksByVersionId: { + parameters: { + path: { + /** @description The version for which to delete ALL existing remote version links */ + versionId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Create a remote version link via POST. The link's global ID will be taken from the + * JSON payload if provided; otherwise, it will be generated. + */ + createOrUpdateRemoteVersionLink: { + parameters: { + path: { + /** @description The version ID of the remote link */ + versionId: string; + /** @description The global ID of the remote link */ + globalId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete all remote version links for a given version ID. */ + deleteRemoteVersionLinksByVersionId: { + parameters: { + path: { + /** @description The version for which to delete ALL existing remote version links */ + versionId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description A REST sub-resource representing a remote version link */ + getRemoteVersionLink: { + parameters: { + path: { + /** @description The version ID of the remote link */ + versionId: string; + /** @description The global ID of the remote link */ + globalId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete a specific remote version link with the given version ID and global ID. */ + deleteRemoteVersionLink: { + parameters: { + path: { + /** @description The version ID of the remote link */ + versionId: string; + /** @description The global ID of the remote link */ + globalId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all workflows. The “lastModifiedDate” is returned in Jira Complete Date/Time Format (dd/MMM/yy h:mm by default), + * but can also be returned as a relative date. + */ + getAllWorkflows: { + parameters: { + query?: { + workflowName?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Return the property or properties associated with a transition. */ + getProperties: { + parameters: { + query?: { + /** + * @description some keys under the "jira." prefix are editable, some are not. Set this to true + * in order to include the non-editable keys in the response. + */ + includeReservedKeys?: boolean; + /** @description the name of the property key to query. Can be left off the query to return all properties. */ + key?: string; + /** @description the name of the workflow to use. */ + workflowName?: string; + /** @description the type of workflow to use. Can either be "live" or "draft". */ + workflowMode?: string; + }; + path: { + /** @description the ID of the transition within the workflow. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Update/add new property to a transition. Trying to update a property that does + * not exist will result in a new property being added. + */ + updateProperty: { + parameters: { + query?: { + /** @description the name of the property to add. */ + key?: string; + /** @description the name of the workflow to use. */ + workflowName?: string; + /** @description the type of workflow to use. Can either be "live" or "draft". */ + workflowMode?: string; + }; + path: { + /** @description the ID of the transition within the workflow. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Add a new property to a transition. Trying to add a property that already + * exists will fail. + */ + createProperty: { + parameters: { + query?: { + /** @description the name of the property to add. */ + key?: string; + /** @description the name of the workflow to use. */ + workflowName?: string; + /** @description the type of workflow to use. Can either be "live" or "draft". */ + workflowMode?: string; + }; + path: { + /** @description the ID of the transition within the workflow. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Create a new workflow scheme. + *

+ * The body contains a representation of the new scheme. Values not passed are assumed to be set to their defaults. + */ + createScheme: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the requested workflow scheme to the caller. */ + getById: { + parameters: { + query?: { + /** + * @description when true indicates that a scheme's draft, if it exists, should be queried instead of + * the scheme itself. + */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Update the passed workflow scheme. + *

+ * The body of the request is a representation of the workflow scheme. Values not passed are assumed to indicate + * no change for that field. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that the draft + * should be created and/or updated when the actual scheme cannot be edited (e.g. when the scheme is being used by + * a project). Values not appearing the body will not be touched. + */ + update: { + parameters: { + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the passed workflow scheme. */ + deleteScheme: { + parameters: { + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Create a draft for the passed scheme. The draft will be a copy of the state of the parent. */ + createDraftForParent: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Return the default workflow from the passed workflow scheme. */ + getDefault: { + parameters: { + query?: { + /** + * @description when true indicates that a scheme's draft, if it exists, should be queried instead of + * the scheme itself. + */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Set the default workflow for the passed workflow scheme. + *

+ * The passed representation can have its + * updateDraftIfNeeded flag set to true to indicate that the draft should be created/updated when the actual scheme + * cannot be edited. + */ + updateDefault: { + parameters: { + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove the default workflow from the passed workflow scheme. */ + deleteDefault: { + parameters: { + query?: { + /** + * @description when true will create and return a draft when the workflow scheme cannot be edited + * (e.g. when it is being used by a project). + */ + updateDraftIfNeeded?: boolean; + }; + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the requested draft workflow scheme to the caller. */ + getDraftById: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Update a draft workflow scheme. The draft will created if necessary. + *

+ * The body is a representation of the workflow scheme. Values not passed are assumed to indicate no change for that field. + */ + updateDraft: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the passed draft workflow scheme. */ + deleteDraftById: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Return the default workflow from the passed draft workflow scheme to the caller. */ + getDraftDefault: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Set the default workflow for the passed draft workflow scheme. */ + updateDraftDefault: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove the default workflow from the passed draft workflow scheme. */ + deleteDraftDefault: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the issue type mapping for the passed draft workflow scheme. */ + getDraftIssueType: { + parameters: { + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Set the issue type mapping for the passed draft scheme. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that + * the draft should be created/updated when the actual scheme cannot be edited. + */ + setDraftIssueType: { + parameters: { + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove the specified issue type mapping from the draft scheme. */ + deleteDraftIssueType: { + parameters: { + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the draft workflow mappings or requested mapping to the caller. */ + getDraftWorkflow: { + parameters: { + query?: { + /** @description the workflow mapping to return. Null can be passed to return all mappings. Must be a valid workflow name. */ + workflowName?: string; + }; + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Update the draft scheme to include the passed mapping. + *

+ * The body is a representation of the workflow mapping. + * Values not passed are assumed to indicate no change for that field. + */ + updateDraftWorkflowMapping: { + parameters: { + query?: { + /** @description the name of the workflow mapping to update. */ + workflowName?: string; + }; + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the passed workflow from the draft workflow scheme. */ + deleteDraftWorkflowMapping: { + parameters: { + query?: { + /** @description the name of the workflow to delete. */ + workflowName?: string; + }; + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Set the issue type mapping for the passed scheme. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that + * the draft should be created/updated when the actual scheme cannot be edited. + */ + setIssueType: { + parameters: { + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the workflow mappings or requested mapping to the caller for the passed scheme. */ + getWorkflow: { + parameters: { + query?: { + /** @description the workflow mapping to return. Null can be passed to return all mappings. Must be a valid workflow name. */ + workflowName?: string; + /** + * @description when true indicates that a scheme's draft, if it exists, should be queried instead of + * the scheme itself. + */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Update the scheme to include the passed mapping. + *

+ * The body is a representation of the workflow mapping. + * Values not passed are assumed to indicate no change for that field. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that the draft + * should be created/updated when the actual scheme cannot be edited. + */ + updateWorkflowMapping: { + parameters: { + query?: { + /** @description the name of the workflow mapping to update. */ + workflowName?: string; + }; + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the passed workflow from the workflow scheme. */ + deleteWorkflowMapping: { + parameters: { + query?: { + /** @description the name of the workflow to delete. */ + workflowName?: string; + /** + * @description flag to indicate if a draft should be created if necessary to delete the workflow + * from the scheme. + */ + updateDraftIfNeeded?: boolean; + }; + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns worklogs id and delete time of worklogs that was deleted since given time. + * The returns set of worklogs is limited to 1000 elements. + * This API will not return worklogs deleted during last minute. + */ + getIdsOfWorklogsDeletedSince: { + parameters: { + query?: { + /** @description a date time in unix timestamp format since when deleted worklogs will be returned. */ + since?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns worklogs for given worklog ids. Only worklogs to which the calling user has permissions, will be included in the result. + * The returns set of worklogs is limited to 1000 elements. + */ + getWorklogsForIds: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns worklogs id and update time of worklogs that was updated since given time. + * The returns set of worklogs is limited to 1000 elements. + * This API will not return worklogs updated during last minute. + */ + getIdsOfWorklogsModifiedSince: { + parameters: { + query?: { + /** @description a date time in unix timestamp format since when updated worklogs will be returned. */ + since?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns information about the currently authenticated user's session. If the caller is not authenticated they + * will get a 401 Unauthorized status code. + */ + currentUser: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates a new session for a user in Jira. Once a session has been successfully created it can be used to access + * any of Jira's remote APIs and also the web UI by passing the appropriate HTTP Cookie header. + *

+ * Note that it is generally preferrable to use HTTP BASIC authentication with the REST API. However, this resource + * may be used to mimic the behaviour of Jira's log-in page (e.g. to display log-in errors to a user). + */ + login: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Logs the current user out of Jira, destroying the existing session, if any. */ + logout: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description This method invalidates the any current WebSudo session. */ + release: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; +} diff --git a/lib/generated/openapi-server.js b/lib/generated/openapi-server.js new file mode 100644 index 0000000..8fb5a2c --- /dev/null +++ b/lib/generated/openapi-server.js @@ -0,0 +1,6 @@ +"use strict"; +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/lib/generated/openapi-service-desk.d.ts b/lib/generated/openapi-service-desk.d.ts new file mode 100644 index 0000000..955e48c --- /dev/null +++ b/lib/generated/openapi-service-desk.d.ts @@ -0,0 +1,5731 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ +export interface paths { + "/rest/servicedeskapi/assets/workspace": { + /** + * Get assets workspaces + * @description Returns a list of Assets workspace IDs. Include a workspace ID in the path to access the [Assets REST APIs](https://developer.atlassian.com/cloud/assets/rest). + * + * **[Permissions](#permissions) required**: Any + */ + get: operations["getAssetsWorkspaces"]; + }; + "/rest/servicedeskapi/customer": { + /** + * Create customer + * @description This method adds a customer to the Jira Service Management instance by passing a JSON file including an email address and display name. The display name does not need to be unique. The record's identifiers, `name` and `key`, are automatically generated from the request details. + * + * **[Permissions](#permissions) required**: Jira Administrator Global permission + */ + post: operations["createCustomer"]; + }; + "/rest/servicedeskapi/info": { + /** + * Get info + * @description This method retrieves information about the Jira Service Management instance such as software version, builds, and related links. + * + * **[Permissions](#permissions) required**: None, the user does not need to be logged in. + */ + get: operations["getInfo"]; + }; + "/rest/servicedeskapi/insight/workspace": { + /** + * Get insight workspaces + * @description This endpoint is deprecated, please use /assets/workspace/. + */ + get: operations["getInsightWorkspaces"]; + }; + "/rest/servicedeskapi/knowledgebase/article": { + /** + * Get articles + * @description Returns articles which match the given query string across all service desks. + * + * **[Permissions](#permissions) required**: Permission to access the [customer portal](https://confluence.atlassian.com/servicedeskcloud/configuring-the-customer-portal-732528918.html). + */ + get: operations["getArticles"]; + }; + "/rest/servicedeskapi/organization": { + /** + * Get organizations + * @description This method returns a list of organizations in the Jira Service Management instance. Use this method when you want to present a list of organizations or want to locate an organization by name. + * + * **[Permissions](#permissions) required**: Any. However, to fetch organizations based on `accountId` the user must have a Service Desk agent license. + * + * **Response limitations**: If the user is a customer, only those organizations of which the customer is a member are listed. + */ + get: operations["getOrganizations"]; + /** + * Create organization + * @description This method creates an organization by passing the name of the organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. Note: Permission to create organizations can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + post: operations["createOrganization"]; + }; + "/rest/servicedeskapi/organization/{organizationId}": { + /** + * Get organization + * @description This method returns details of an organization. Use this method to get organization details whenever your application component is passed an organization ID but needs to display other organization details. + * + * **[Permissions](#permissions) required**: Any + * + * **Response limitations**: Customers can only retrieve organization of which they are members. + */ + get: operations["getOrganization"]; + /** + * Delete organization + * @description This method deletes an organization. Note that the organization is deleted regardless of other associations it may have. For example, associations with service desks. + * + * **[Permissions](#permissions) required**: Jira administrator. + */ + delete: operations["deleteOrganization"]; + }; + "/rest/servicedeskapi/organization/{organizationId}/property": { + /** + * Get properties keys + * @description Returns the keys of all properties for an organization. Use this resource when you need to find out what additional properties items have been added to an organization. + * + * **[Permissions](#permissions) required**: Any + * + * **Response limitations**: Customers can only access properties of organizations of which they are members. + */ + get: operations["getPropertiesKeys"]; + }; + "/rest/servicedeskapi/organization/{organizationId}/property/{propertyKey}": { + /** + * Get property + * @description Returns the value of a property from an organization. Use this method to obtain the JSON content for an organization's property. + * + * **[Permissions](#permissions) required**: Any + * + * **Response limitations**: Customers can only access properties of organizations of which they are members. + */ + get: operations["getProperty"]; + /** + * Set property + * @description Sets the value of a property for an organization. Use this resource to store custom data against an organization. + * + * **[Permissions](#permissions) required**: Service Desk Administrator or Agent. + * + * Note: Permission to manage organizations can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + put: operations["setProperty"]; + /** + * Delete property + * @description Removes a property from an organization. + * + * **[Permissions](#permissions) required**: Service Desk Administrator or Agent. + * + * Note: Permission to manage organizations can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + delete: operations["deleteProperty"]; + }; + "/rest/servicedeskapi/organization/{organizationId}/user": { + /** + * Get users in organization + * @description This method returns all the users associated with an organization. Use this method where you want to provide a list of users for an organization or determine if a user is associated with an organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. + */ + get: operations["getUsersInOrganization"]; + /** + * Add users to organization + * @description This method adds users to an organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. Note: Permission to add users to an organization can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + post: operations["addUsersToOrganization"]; + /** + * Remove users from organization + * @description This method removes users from an organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. Note: Permission to delete users from an organization can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + delete: operations["removeUsersFromOrganization"]; + }; + "/rest/servicedeskapi/request": { + /** + * Get customer requests + * @description 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](#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. + */ + get: operations["getCustomerRequests"]; + /** + * Create customer request + * @description 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](#permissions) required**: Permission to create requests in the specified service desk. + */ + post: operations["createCustomerRequest"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}": { + /** + * Get customer request by id or key + * @description This method returns a customer request. + * + * **[Permissions](#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. + * + * **Note:** `requestFieldValues` does not include hidden fields. To get a list of request type fields that includes hidden fields, see [/rest/servicedeskapi/servicedesk/\{serviceDeskId\}/requesttype/\{requestTypeId\}/field](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-servicedesk/#api-rest-servicedeskapi-servicedesk-servicedeskid-requesttype-requesttypeid-field-get) + */ + get: operations["getCustomerRequestByIdOrKey"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/approval": { + /** + * Get approvals + * @description This method returns all approvals on a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + get: operations["getApprovals"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/approval/{approvalId}": { + /** + * Get approval by id + * @description This method returns an approval. Use this method to determine the status of an approval and the list of approvers. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + get: operations["getApprovalById"]; + /** + * Answer approval + * @description 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](#permissions) required**: User is assigned to the approval request. + */ + post: operations["answerApproval"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/attachment": { + /** + * Get attachments for request + * @description This method returns all the attachments for a customer requests. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + * + * **Response limitations**: Customers will only get a list of public attachments. + */ + get: operations["getAttachmentsForRequest"]; + /** + * Create comment with attachment + * @description This method creates a comment on a customer request using one or more attachment files (uploaded using [servicedeskapi/servicedesk/\{serviceDeskId\}/attachTemporaryFile](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-servicedesk/#api-rest-servicedeskapi-servicedesk-servicedeskid-attachtemporaryfile-post)), with the visibility set by `public`. See + * + * * GET [servicedeskapi/request/\{issueIdOrKey\}/attachment](./#api-rest-servicedeskapi-request-issueidorkey-attachment-get) + * * GET [servicedeskapi/request/\{issueIdOrKey\}/comment/\{commentId\}/attachment](./#api-rest-servicedeskapi-request-issueidorkey-comment-commentid-attachment-get) + * + * **[Permissions](#permissions) required**: Permission to add an attachment. + * + * **Request limitations**: Customers can set public visibility only. + */ + post: operations["createCommentWithAttachment"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/attachment/{attachmentId}": { + /** + * Get attachment content + * @description 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. + */ + get: operations["getAttachmentContent"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/attachment/{attachmentId}/thumbnail": { + /** + * Get attachment thumbnail + * @description 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. + */ + get: operations["getAttachmentThumbnail"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/comment": { + /** + * Get request comments + * @description 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](#permissions) required**: Permission to view the customer request. + * + * **Response limitations**: Customers are returned public comments only. + */ + get: operations["getRequestComments"]; + /** + * Create request comment + * @description 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](#permissions) required**: User has Add Comments permission. + * + * **Request limitations**: Customers can set comments to public visibility only. + */ + post: operations["createRequestComment"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/comment/{commentId}": { + /** + * Get request comment by id + * @description This method returns details of a customer request's comment. + * + * **[Permissions](#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. + */ + get: operations["getRequestCommentById"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/comment/{commentId}/attachment": { + /** + * Get comment attachments + * @description This method returns the attachments referenced in a comment. + * + * **[Permissions](#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. + */ + get: operations["getCommentAttachments"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/notification": { + /** + * Get subscription status + * @description 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](#permissions) required**: Permission to view the customer request. + */ + get: operations["getSubscriptionStatus"]; + /** + * Subscribe + * @description This method subscribes the user to receiving notifications from a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + put: operations["subscribe"]; + /** + * Unsubscribe + * @description This method unsubscribes the user from notifications from a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + delete: operations["unsubscribe"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/participant": { + /** + * Get request participants + * @description This method returns a list of all the participants on a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + get: operations["getRequestParticipants"]; + /** + * Add request participants + * @description This method adds participants to a customer request. + * + * **[Permissions](#permissions) required**: Permission to manage participants on the customer request. + * + * Note, participants can be added when creating a customer request using the [request](#api-request-post) resource, by defining the participants in the `requestParticipants` field. + */ + post: operations["addRequestParticipants"]; + /** + * Remove request participants + * @description This method removes participants from a customer request. + * + * **[Permissions](#permissions) required**: Permission to manage participants on the customer request. + */ + delete: operations["removeRequestParticipants"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/sla": { + /** + * Get sla information + * @description 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](#permissions) required**: Agent for the Service Desk containing the queried customer request. + */ + get: operations["getSlaInformation"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/sla/{slaMetricId}": { + /** + * Get sla information by id + * @description This method returns the details for an SLA on a customer request. + * + * **[Permissions](#permissions) required**: Agent for the Service Desk containing the queried customer request. + */ + get: operations["getSlaInformationById"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/status": { + /** + * Get customer request status + * @description 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](#permissions) required**: Permission to view the customer request. + */ + get: operations["getCustomerRequestStatus"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/transition": { + /** + * Get customer transitions + * @description 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](#permissions) required**: Permission to view the customer request. + */ + get: operations["getCustomerTransitions"]; + /** + * Perform customer transition + * @description 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](#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. + */ + post: operations["performCustomerTransition"]; + }; + "/rest/servicedeskapi/request/{requestIdOrKey}/feedback": { + /** + * Get feedback + * @description This method retrieves a feedback of a request using it's `requestKey` or `requestId` + * + * **[Permissions](#permissions) required**: User has view request permissions. + */ + get: operations["getFeedback"]; + /** + * Post feedback + * @description This method adds a feedback on an request using it's `requestKey` or `requestId` + * + * **[Permissions](#permissions) required**: User must be the reporter or an Atlassian Connect app. + */ + post: operations["postFeedback"]; + /** + * Delete feedback + * @description This method deletes the feedback of request using it's `requestKey` or `requestId` + * + * **[Permissions](#permissions) required**: User must be the reporter or an Atlassian Connect app. + */ + delete: operations["deleteFeedback"]; + }; + "/rest/servicedeskapi/requesttype": { + /** + * Get all request types + * @description This method returns all customer request types used in the Jira Service Management instance, optionally filtered by a query string. + * + * Use [servicedeskapi/servicedesk/\{serviceDeskId\}/requesttype](#api-servicedesk-serviceDeskId-requesttype-get) to find the customer request types supported by a specific service desk. + * + * The returned list of customer request types can be filtered using the `query` parameter. The parameter is matched against the customer request types' `name` or `description`. For example, searching for "Install", "Inst", "Equi", or "Equipment" will match a customer request type with the *name* "Equipment Installation Request". + * + * **Note:** This API will filter out hidden request types (aka.request types without groups) when `query` is provided. + * + * **[Permissions](#permissions) required**: Any + */ + get: operations["getAllRequestTypes"]; + }; + "/rest/servicedeskapi/servicedesk": { + /** + * Get service desks + * @description This method returns all the service desks in the Jira Service Management instance that the user has permission to access. Use this method where you need a list of service desks or need to locate a service desk by name or keyword. + * + * **Note:** This method will be slow if the instance has hundreds of service desks. If you want to fetch a single service desk by its ID, use [/rest/servicedeskapi/servicedesk/\{serviceDeskId\}](./#api-rest-servicedeskapi-servicedesk-servicedeskid-get) instead. + * + * **[Permissions](#permissions) required**: Any + */ + get: operations["getServiceDesks"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}": { + /** + * Get service desk by id + * @description This method returns a service desk. Use this method to get service desk details whenever your application component is passed a service desk ID but needs to display other service desk details. + * + * **[Permissions](#permissions) required**: Permission to access the Service Desk. For example, being the Service Desk's Administrator or one of its Agents or Users. + */ + get: operations["getServiceDeskById"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/attachTemporaryFile": { + /** + * Attach temporary file + * @description This method adds one or more temporary attachments to a service desk, which can then be permanently attached to a customer request using [servicedeskapi/request/\{issueIdOrKey\}/attachment](#api-request-issueIdOrKey-attachment-post). + * + * **Note**: It is possible for a service desk administrator to turn off the ability to add attachments to a service desk. + * + * This method expects a multipart request. The media-type multipart/form-data is defined in RFC 1867. Most client libraries have classes that make dealing with multipart posts simple. For instance, in Java the Apache HTTP Components library provides [MultiPartEntity](http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html). + * + * Because this method accepts multipart/form-data, it has XSRF protection on it. This means you must submit a header of X-Atlassian-Token: no-check with the request or it will be blocked. + * + * The name of the multipart/form-data parameter that contains the attachments must be `file`. + * + * For example, to upload a file called `myfile.txt` in the Service Desk with ID 10001 use + * + * curl -D- -u customer:customer -X POST -H "X-ExperimentalApi: opt-in" -H "X-Atlassian-Token: no-check" -F "file=@myfile.txt" https://your-domain.atlassian.net/rest/servicedeskapi/servicedesk/10001/attachTemporaryFile + * + * **[Permissions](#permissions) required**: Permission to add attachments in this Service Desk. + */ + post: operations["attachTemporaryFile"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/customer": { + /** + * Get customers + * @description This method returns a list of the customers on a service desk. + * + * The returned list of customers can be filtered using the `query` parameter. The parameter is matched against customers' `displayName`, `name`, or `email`. For example, searching for "John", "Jo", "Smi", or "Smith" will match a user with display name "John Smith". + * + * **[Permissions](#permissions) required**: Permission to view this Service Desk's customers. + */ + get: operations["getCustomers"]; + /** + * Add customers + * @description Adds one or more customers to a service desk. If any of the passed customers are associated with the service desk, no changes will be made for those customers and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Service desk administrator + */ + post: operations["addCustomers"]; + /** + * Remove customers + * @description This method removes one or more customers from a service desk. The service desk must have closed access. If any of the passed customers are not associated with the service desk, no changes will be made for those customers and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Services desk administrator + */ + delete: operations["removeCustomers"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/knowledgebase/article": { + /** + * Get articles + * @description Returns articles which match the given query and belong to the knowledge base linked to the service desk. + * + * **[Permissions](#permissions) required**: Permission to access the service desk. + */ + get: operations["getArticles"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/organization": { + /** + * Get organizations + * @description This method returns a list of all organizations associated with a service desk. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + get: operations["getOrganizations"]; + /** + * Add organization + * @description This method adds an organization to a service desk. If the organization ID is already associated with the service desk, no change is made and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + post: operations["addOrganization"]; + /** + * Remove organization + * @description This method removes an organization from a service desk. If the organization ID does not match an organization associated with the service desk, no change is made and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + delete: operations["removeOrganization"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/queue": { + /** + * Get queues + * @description This method returns the queues in a service desk. To include a customer request count for each queue (in the `issueCount` field) in the response, set the query parameter `includeCount` to true (its default is false). + * + * **[Permissions](#permissions) required**: service desk's Agent. + */ + get: operations["getQueues"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/queue/{queueId}": { + /** + * Get queue + * @description This method returns a specific queues in a service desk. To include a customer request count for the queue (in the `issueCount` field) in the response, set the query parameter `includeCount` to true (its default is false). + * + * **[Permissions](#permissions) required**: service desk's Agent. + */ + get: operations["getQueue"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/queue/{queueId}/issue": { + /** + * Get issues in queue + * @description This method returns the customer requests in a queue. Only fields that the queue is configured to show are returned. For example, if a queue is configured to show description and due date, then only those two fields are returned for each customer request in the queue. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + get: operations["getIssuesInQueue"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttype": { + /** + * Get request types + * @description This method returns all customer request types from a service desk. There are two parameters for filtering the returned list: + * + * * `groupId` which filters the results to items in the customer request type group. + * * `searchQuery` which is matched against request types' `name` or `description`. For example, the strings "Install", "Inst", "Equi", or "Equipment" will match a request type with the *name* "Equipment Installation Request". + * + * **Note:** This API by default will filter out hidden request types (aka.request types without groups) when `searchQuery` is provided, unless `includeHiddenRequestTypesInSearch` is set to true. + * + * **[Permissions](#permissions) required**: Permission to access the service desk. + */ + get: operations["getRequestTypes"]; + /** + * Create request type + * @description This method enables a customer request type to be added to a service desk based on an issue type. Note that not all customer request type fields can be specified in the request and these fields are given the following default values: + * + * * Request type icon is given the headset icon. + * * Request type groups is left empty, which means this customer request type will not be visible on the [customer portal](https://confluence.atlassian.com/servicedeskcloud/configuring-the-customer-portal-732528918.html). + * * Request type status mapping is left empty, so the request type has no custom status mapping but inherits the status map from the issue type upon which it is based. + * * Request type field mapping is set to show the required fields as specified by the issue type used to create the customer request type. + * + * + * These fields can be updated by a service desk administrator using the **Request types** option in **Project settings**. + * Request Types are created in next-gen projects by creating Issue Types. Please use the Jira Cloud Platform Create issue type endpoint instead. + * + * **[Permissions](#permissions) required**: Service desk's administrator + */ + post: operations["createRequestType"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttype/{requestTypeId}": { + /** + * Get request type by id + * @description This method returns a customer request type from a service desk. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required**: Permission to access the service desk. + */ + get: operations["getRequestTypeById"]; + /** + * Delete request type + * @description This method deletes a customer request type from a service desk, and removes it from all customer requests. + * This only supports classic projects. + * + * **[Permissions](#permissions) required**: Service desk administrator. + */ + delete: operations["deleteRequestType"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttype/{requestTypeId}/field": { + /** + * Get request type fields + * @description This method returns the fields for a service desk's customer request type. + * + * Also, the following information about the user's permissions for the request type is returned: + * + * * `canRaiseOnBehalfOf` returns `true` if the user has permission to raise customer requests on behalf of other customers. Otherwise, returns `false`. + * * `canAddRequestParticipants` returns `true` if the user can add customer request participants. Otherwise, returns `false`. + * + * **[Permissions](#permissions) required**: Permission to view the Service Desk. However, hidden fields would be visible to only Service desk's Administrator. + */ + get: operations["getRequestTypeFields"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttype/{requestTypeId}/property": { + /** + * Get properties keys + * @description Returns the keys of all properties for a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore the keys of all properties for a request type are also available by calling the Jira Cloud Platform [Get issue type property keys](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-get) endpoint. + * + * **[Permissions](#permissions) required**: The user must have permission to view the request type. + */ + get: operations["getPropertiesKeys"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttype/{requestTypeId}/property/{propertyKey}": { + /** + * Get property + * @description Returns the value of the property from a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore also available by calling the Jira Cloud Platform [Get issue type property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-get) endpoint. + * + * **[Permissions](#permissions) required**: User must have permission to view the request type. + */ + get: operations["getProperty"]; + /** + * Set property + * @description Sets the value of a request type property. Use this resource to store custom data against a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore can also be set by calling the Jira Cloud Platform [Set issue type property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-put) endpoint. + * + * **[Permissions](#permissions) required**: Jira project administrator with a Jira Service Management agent license. + */ + put: operations["setProperty"]; + /** + * Delete property + * @description Removes a property from a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore can also be deleted by calling the Jira Cloud Platform [Delete issue type property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-delete) endpoint. + * + * **[Permissions](#permissions) required**: Jira project administrator with a Jira Service Management agent license. + */ + delete: operations["deleteProperty"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttypegroup": { + /** + * Get request type groups + * @description This method returns a service desk's customer request type groups. Jira Service Management administrators can arrange the customer request type groups in an arbitrary order for display on the customer portal; the groups are returned in this order. + * + * **[Permissions](#permissions) required**: Permission to view the service desk. + */ + get: operations["getRequestTypeGroups"]; + }; +} +export type webhooks = Record; +export interface components { + schemas: { + AdditionalCommentDTO: { + /** @description Content of the comment. */ + body?: string; + }; + ApprovalDTO: { + /** @description The REST API URL of the approval. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description Detailed list of the users who must provide a response to the approval. */ + approvers?: components["schemas"]["ApproverDTO"][]; + /** @description Indicates whether the user making the request is one of the approvers and can respond to the approval (true) or not (false). */ + canAnswerApproval?: boolean; + /** @description Date the approval was completed. */ + completedDate?: components["schemas"]["DateDTO"]; + /** @description Date the approval was created. */ + createdDate?: components["schemas"]["DateDTO"]; + /** + * @description Outcome of the approval, based on the approvals provided by all approvers. + * @enum {string} + */ + finalDecision?: "approved" | "declined" | "pending"; + /** @description ID of the approval. */ + id?: string; + /** @description Description of the approval being sought or provided. */ + name?: string; + }; + ApprovalDecisionRequestDTO: { + /** + * @description Response to the approval request. + * @enum {string} + */ + decision?: "approve" | "decline"; + }; + ApproverDTO: { + /** @description Details of the User who is providing approval. */ + approver?: components["schemas"]["UserDTO"]; + /** + * @description Decision made by the approver. + * @enum {string} + */ + approverDecision?: "approved" | "declined" | "pending"; + }; + ArticleDTO: { + content?: components["schemas"]["ContentDTO"]; + /** @description Excerpt of the article which matches the given query string. */ + excerpt?: string; + /** @description Source of the article. */ + source?: components["schemas"]["SourceDTO"]; + /** @description Title of the article. */ + title?: string; + }; + /** @description Details of an Assets workspace ID. */ + AssetsWorkspaceDTO: { + /** @description The workspace ID used as the identifier to access the Assets REST API. */ + workspaceId?: string; + }; + AttachmentCreateDTO: { + /** @description Additional content of the comment */ + additionalComment?: components["schemas"]["AdditionalCommentDTO"]; + /** @description Controls whether the comment and its attachments are visible to customers */ + public?: boolean; + /** @description List of IDs for the temporary attachments to be added to the customer request. */ + temporaryAttachmentIds?: string[]; + }; + AttachmentCreateResultDTO: { + /** @description List of the attachments added. */ + attachments?: components["schemas"]["PagedDTOAttachmentDTO"]; + /** @description Details of the comment included with the attachments. */ + comment?: components["schemas"]["CommentDTO"]; + }; + AttachmentDTO: { + /** @description Various URLs for the attachment. */ + _links?: components["schemas"]["AttachmentLinkDTO"]; + /** @description Details of the user who attached the file. */ + author?: components["schemas"]["UserDTO"]; + /** @description Date the attachment was added. */ + created?: components["schemas"]["DateDTO"]; + /** @description Filename of the item attached. */ + filename?: string; + /** @description MIME type of the attachment. */ + mimeType?: string; + /** + * Format: int64 + * @description Size of the attachment in bytes. + */ + size?: number; + }; + AttachmentLinkDTO: { + /** + * Format: uri + * @description URL for the attachment. + */ + content?: string; + /** + * Format: uri + * @description REST API URL for the attachment + */ + jiraRest?: string; + /** Format: uri */ + self?: string; + /** + * Format: uri + * @description URL for the attachment's thumbnail image. + */ + thumbnail?: string; + }; + AvatarUrlsBean: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + CSATFeedbackFullDTO: { + /** @description (Optional) The comment provided with this feedback. */ + comment?: components["schemas"]["AdditionalCommentDTO"]; + /** + * Format: int32 + * @description A numeric representation of the rating, this must be an integer value between 1 and 5. + */ + rating?: number; + /** @description Indicates the type of feedback, supported values: `csat`. */ + type?: string; + }; + /** @description A change item. */ + ChangeDetails: { + /** @description The name of the field changed. */ + field?: string; + /** @description The ID of the field changed. */ + fieldId?: string; + /** @description The type of the field changed. */ + fieldtype?: string; + /** @description The details of the original value. */ + from?: string; + /** @description The details of the original value as a string. */ + fromString?: string; + /** @description The details of the new value. */ + to?: string; + /** @description The details of the new value as a string. */ + toString?: string; + }; + /** @description A log of changes made to issue fields. Changelogs related to workflow associations are currently being deprecated. */ + Changelog: { + /** @description The user who made the change. */ + author?: components["schemas"]["UserDetails"]; + /** + * Format: date-time + * @description The date on which the change took place. + */ + created?: string; + /** @description The history metadata associated with the changed. */ + historyMetadata?: components["schemas"]["HistoryMetadata"]; + /** @description The ID of the changelog. */ + id?: string; + /** @description The list of items changed. */ + items?: readonly components["schemas"]["ChangeDetails"][]; + }; + CommentCreateDTO: { + /** @description Content of the comment. */ + body?: string; + /** @description Indicates whether the comment is public (true) or private/internal (false). */ + public?: boolean; + }; + CommentDTO: { + /** @description List of items that can be expanded in the response by specifying the expand query parameter. */ + _expands?: string[]; + /** @description REST API URL link to the comment. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description List of the attachments included in the comment. */ + attachments?: components["schemas"]["PagedDTOAttachmentDTO"]; + /** @description Details of the customer who authored the comment. */ + author?: components["schemas"]["UserDTO"]; + /** @description Content of the comment. */ + body?: string; + /** @description Date the comment was created. */ + created?: components["schemas"]["DateDTO"]; + /** @description ID of the comment. */ + id?: string; + /** @description Indicates whether the comment is public (true) or private/internal (false). */ + public?: boolean; + /** @description The rendered body of the comment. */ + renderedBody?: components["schemas"]["RenderedValueDTO"]; + }; + ContentDTO: { + /** @description Url containing the body of the article (without title), suitable for rendering in an iframe */ + iframeSrc?: string; + }; + CustomerCreateDTO: { + /** @description Customer's name for display in the UI. */ + displayName?: string; + /** @description Customer's email address. */ + email?: string; + /** @description Deprecated, please use 'displayName'. */ + fullName?: string; + }; + CustomerRequestActionDTO: { + /** @description Indicates whether the user can undertake the action (true) or not (false). */ + allowed?: boolean; + }; + CustomerRequestActionsDTO: { + /** @description Action of adding attachments to a request. */ + addAttachment?: components["schemas"]["CustomerRequestActionDTO"]; + /** @description Action of adding comments to a request. */ + addComment?: components["schemas"]["CustomerRequestActionDTO"]; + /** @description Action of adding participants to a request. */ + addParticipant?: components["schemas"]["CustomerRequestActionDTO"]; + /** @description Action of removing participants from a request. */ + removeParticipant?: components["schemas"]["CustomerRequestActionDTO"]; + }; + CustomerRequestCreateMetaDTO: { + /** @description Flag indicating if participants can be added to a request (true) or not. */ + canAddRequestParticipants?: boolean; + /** @description Flag indicating if a request can be raised on behalf of another user (true) or not. */ + canRaiseOnBehalfOf?: boolean; + /** @description List of the fields included in this request. */ + requestTypeFields?: components["schemas"]["RequestTypeFieldDTO"][]; + }; + CustomerRequestDTO: { + /** @description List of items that can be expanded in the response by specifying the expand query parameter. */ + _expands?: string[]; + /** @description List of links associated with the request. */ + _links?: components["schemas"]["CustomerRequestLinkDTO"]; + /** @description List of actions that the user can take on the request. */ + actions?: components["schemas"]["CustomerRequestActionsDTO"]; + /** @description List of attachments included with the request. */ + attachments?: components["schemas"]["PagedDTOAttachmentDTO"]; + /** @description List of comments included with the request. */ + comments?: components["schemas"]["PagedDTOCommentDTO"]; + /** @description Date on which the request was created. */ + createdDate?: components["schemas"]["DateDTO"]; + /** @description Status of the request. */ + currentStatus?: components["schemas"]["CustomerRequestStatusDTO"]; + /** @description ID of the request, as the peer issue ID. */ + issueId?: string; + /** @description Key of the request, as the peer issue key. */ + issueKey?: string; + /** @description Expandable details of the customers participating in the request. */ + participants?: components["schemas"]["PagedDTOUserDTO"]; + /** @description Details of the customer reporting the request. */ + reporter?: components["schemas"]["UserDTO"]; + /** @description JSON map of Jira field IDs and their values representing the content of the request. This list does not include hidden fields. */ + requestFieldValues?: components["schemas"]["CustomerRequestFieldValueDTO"][]; + /** @description Expandable details of the request type. */ + requestType?: components["schemas"]["RequestTypeDTO"]; + /** @description ID of the request type for the request. */ + requestTypeId?: string; + /** @description Expandable details of the service desk. */ + serviceDesk?: components["schemas"]["ServiceDeskDTO"]; + /** @description ID of the service desk the request belongs to. */ + serviceDeskId?: string; + /** @description Expandable details of the SLAs relating to the request. */ + sla?: components["schemas"]["PagedDTOSlaInformationDTO"]; + /** @description Expandable details of the request's status history. */ + status?: components["schemas"]["PagedDTOCustomerRequestStatusDTO"]; + }; + CustomerRequestFieldValueDTO: { + /** @description ID of the field. */ + fieldId?: string; + /** @description Text label for the field. */ + label?: string; + /** @description Value of the field rendered in the UI. */ + renderedValue?: Record; + /** @description Value of the field. */ + value?: unknown; + }; + CustomerRequestLinkDTO: { + /** + * Format: uri + * @description Jira agent view URL for the request. + */ + agent?: string; + /** + * Format: uri + * @description REST API URL for the request. + */ + jiraRest?: string; + /** Format: uri */ + self?: string; + /** + * Format: uri + * @description Web URL for the request. + */ + web?: string; + }; + CustomerRequestStatusDTO: { + /** @description Name of the status condition. */ + status?: string; + /** + * @description Status category the status belongs to. + * @enum {string} + */ + statusCategory?: "UNDEFINED" | "NEW" | "INDETERMINATE" | "DONE"; + /** @description Date on which the status was attained. */ + statusDate?: components["schemas"]["DateDTO"]; + }; + CustomerTransitionDTO: { + /** @description ID of the transition. */ + id?: string; + /** @description Name of the transition. */ + name?: string; + }; + CustomerTransitionExecutionDTO: { + /** @description Comment explaining the reason for the transition. */ + additionalComment?: components["schemas"]["AdditionalCommentDTO"]; + /** @description ID of the transition to be performed. */ + id?: string; + }; + DateDTO: { + /** + * Format: int64 + * @description Date as the number of milliseconds that have elapsed since 00:00:00 Coordinated Universal Time (UTC), 1 January 1970. + */ + epochMillis?: number; + /** @description Date in a user-friendly text format. */ + friendly?: string; + /** @description Date in ISO8601 format. */ + iso8601?: string; + /** @description Date in the format used in the Jira REST APIs, which is ISO8601 format but extended with milliseconds. For example, 2016-09-28T23:08:32.097+1000. */ + jira?: string; + }; + DurationDTO: { + /** @description Duration in a user-friendly text format. */ + friendly?: string; + /** + * Format: int64 + * @description Duration in milliseconds. + */ + millis?: number; + }; + /** @description An entity property, for more information see [Entity properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/). */ + EntityProperty: { + /** @description The key of the property. Required on create and update. */ + key?: string; + /** @description The value of the property. Required on create and update. */ + value?: unknown; + }; + ErrorResponse: { + errorMessage?: string; + i18nErrorMessage?: components["schemas"]["I18nErrorMessage"]; + }; + Expandable: { + _expands?: string[]; + }; + /** @description The metadata describing an issue field. */ + FieldMetadata: { + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The key of the field. */ + key: string; + /** @description The name of the field. */ + name: string; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: components["schemas"]["JsonTypeBean"]; + }; + Form: { + /** @description JSON mapping of form field answers containing form field IDs and corresponding values. */ + answers?: { + [key: string]: components["schemas"]["FormAnswer"]; + }; + [key: string]: unknown; + }; + FormAnswer: { + /** @description Answer in Atlassian Document Format (ADF) */ + adf?: components["schemas"]["JsonNode"]; + /** @description IDs of selected choices */ + choices?: string[]; + /** @description Answer in date format (yyyy-MM-dd) */ + date?: string; + /** @description The IDs of files to be attached to the form that are obtained by calling the ‘attach temporary file’ endpoint on the corresponding service desk. */ + files?: string[]; + /** @description Answer in free text format */ + text?: string; + /** @description Answer in timestamp format (HH:mm) */ + time?: string; + /** @description IDs of selected users */ + users?: string[]; + }; + /** @description Details of issue history metadata. */ + HistoryMetadata: { + /** @description The activity described in the history record. */ + activityDescription?: string; + /** @description The key of the activity described in the history record. */ + activityDescriptionKey?: string; + /** @description Details of the user whose action created the history record. */ + actor?: components["schemas"]["HistoryMetadataParticipant"]; + /** @description Details of the cause that triggered the creation the history record. */ + cause?: components["schemas"]["HistoryMetadataParticipant"]; + /** @description The description of the history record. */ + description?: string; + /** @description The description key of the history record. */ + descriptionKey?: string; + /** @description The description of the email address associated the history record. */ + emailDescription?: string; + /** @description The description key of the email address associated the history record. */ + emailDescriptionKey?: string; + /** @description Additional arbitrary information about the history record. */ + extraData?: { + [key: string]: string; + }; + /** @description Details of the system that generated the history record. */ + generator?: components["schemas"]["HistoryMetadataParticipant"]; + /** @description The type of the history record. */ + type?: string; + [key: string]: unknown; + }; + /** @description Details of user or system associated with a issue history metadata item. */ + HistoryMetadataParticipant: { + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + I18nErrorMessage: { + i18nKey?: string; + parameters?: string[]; + }; + IncludedFields: { + actuallyIncluded?: string[]; + excluded?: string[]; + included?: string[]; + }; + InputStreamSource: { + inputStream?: Record; + }; + /** @description Details of an insight workspace ID. */ + InsightWorkspaceDTO: { + /** @description The workspace ID used as the identifier to access the Insight REST API. */ + workspaceId?: string; + }; + /** @description Details about an issue. */ + IssueBean: { + /** @description Details of changelogs associated with the issue. */ + changelog?: components["schemas"]["PageOfChangelogs"]; + /** @description The metadata for the fields on the issue that can be amended. */ + editmeta?: components["schemas"]["IssueUpdateMetadata"]; + /** @description Expand options that include additional issue details in the response. */ + expand?: string; + fields?: { + [key: string]: unknown; + }; + fieldsToInclude?: components["schemas"]["IncludedFields"]; + /** @description The ID of the issue. */ + id?: string; + /** @description The key of the issue. */ + key?: string; + /** @description The ID and name of each field present on the issue. */ + names?: { + [key: string]: string; + }; + /** @description The operations that can be performed on the issue. */ + operations?: components["schemas"]["Operations"]; + /** @description Details of the issue properties identified in the request. */ + properties?: { + [key: string]: unknown; + }; + /** @description The rendered value of each field present on the issue. */ + renderedFields?: { + [key: string]: unknown; + }; + /** @description The schema describing each field present on the issue. */ + schema?: { + [key: string]: components["schemas"]["JsonTypeBean"]; + }; + /** + * Format: uri + * @description The URL of the issue details. + */ + self?: string; + /** @description The transitions that can be performed on the issue. */ + transitions?: readonly components["schemas"]["IssueTransition"][]; + /** @description The versions of each field on the issue. */ + versionedRepresentations?: { + [key: string]: { + [key: string]: unknown; + }; + }; + }; + /** @description Details of an issue transition. */ + IssueTransition: { + /** @description Expand options that include additional transition details in the response. */ + expand?: string; + /** @description Details of the fields associated with the issue transition screen. Use this information to populate `fields` and `update` in a transition request. */ + fields?: { + [key: string]: components["schemas"]["FieldMetadata"]; + }; + /** @description Whether there is a screen associated with the issue transition. */ + hasScreen?: boolean; + /** @description The ID of the issue transition. Required when specifying a transition to undertake. */ + id?: string; + /** @description Whether the transition is available to be performed. */ + isAvailable?: boolean; + /** @description Whether the issue has to meet criteria before the issue transition is applied. */ + isConditional?: boolean; + /** @description Whether the issue transition is global, that is, the transition is applied to issues regardless of their status. */ + isGlobal?: boolean; + /** @description Whether this is the initial issue transition for the workflow. */ + isInitial?: boolean; + looped?: boolean; + /** @description The name of the issue transition. */ + name?: string; + /** @description Details of the issue status after the transition. */ + to?: components["schemas"]["StatusDetails"]; + [key: string]: unknown; + }; + /** @description A list of editable field details. */ + IssueUpdateMetadata: { + fields?: { + [key: string]: components["schemas"]["FieldMetadata"]; + }; + }; + JsonNode: { + array?: boolean; + bigDecimal?: boolean; + bigInteger?: boolean; + bigIntegerValue?: number; + binary?: boolean; + binaryValue?: string[]; + boolean?: boolean; + booleanValue?: boolean; + containerNode?: boolean; + decimalValue?: number; + double?: boolean; + /** Format: double */ + doubleValue?: number; + elements?: Record; + fieldNames?: Record; + fields?: Record; + floatingPointNumber?: boolean; + int?: boolean; + /** Format: int32 */ + intValue?: number; + integralNumber?: boolean; + long?: boolean; + /** Format: int64 */ + longValue?: number; + missingNode?: boolean; + null?: boolean; + number?: boolean; + /** @enum {string} */ + numberType?: "INT" | "LONG" | "BIG_INTEGER" | "FLOAT" | "DOUBLE" | "BIG_DECIMAL"; + numberValue?: number; + object?: boolean; + pojo?: boolean; + textValue?: string; + textual?: boolean; + valueAsBoolean?: boolean; + /** Format: double */ + valueAsDouble?: number; + /** Format: int32 */ + valueAsInt?: number; + /** Format: int64 */ + valueAsLong?: number; + valueAsText?: string; + valueNode?: boolean; + }; + /** @description The schema of a field. */ + JsonTypeBean: { + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description The data type of the field. */ + type: string; + }; + /** @description Details a link group, which defines issue operations. */ + LinkGroup: { + groups?: components["schemas"]["LinkGroup"][]; + header?: components["schemas"]["SimpleLink"]; + id?: string; + links?: components["schemas"]["SimpleLink"][]; + styleClass?: string; + /** Format: int32 */ + weight?: number; + }; + Linkable: { + _links?: components["schemas"]["SelfLinkDTO"]; + }; + LinkableAttachmentLinkDTO: { + _links?: components["schemas"]["AttachmentLinkDTO"]; + }; + LinkableCustomerRequestLinkDTO: { + _links?: components["schemas"]["CustomerRequestLinkDTO"]; + }; + LinkableUserLinkDTO: { + _links?: components["schemas"]["UserLinkDTO"]; + }; + MultipartFile: { + bytes?: string[]; + contentType?: string; + empty?: boolean; + inputStream?: Record; + name?: string; + originalFilename?: string; + resource?: components["schemas"]["Resource"]; + /** Format: int64 */ + size?: number; + }; + /** @description Details of the operations that can be performed on the issue. */ + Operations: { + /** @description Details of the link groups defining issue operations. */ + linkGroups?: readonly components["schemas"]["LinkGroup"][]; + [key: string]: unknown; + }; + OrganizationCreateDTO: { + /** @description Name of the organization. Must contain 1-200 characters. */ + name: string; + }; + OrganizationDTO: { + /** @description REST API URL to the organization. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description Date the organization was created. This field may not be present in some older organizations. */ + created?: components["schemas"]["DateDTO"]; + /** @description A unique system generated ID for the organization. */ + id?: string; + /** @description Name of the organization. */ + name?: string; + }; + OrganizationServiceDeskUpdateDTO: { + /** + * Format: int32 + * @description List of organizations, specified by 'ID' field values, to add to or remove from the service desk. + */ + organizationId: number; + /** @description Service desk Id for which, organization needs to be updated */ + serviceDeskId?: string; + [key: string]: unknown; + }; + /** @description A page of changelogs. */ + PageOfChangelogs: { + /** @description The list of changelogs. */ + histories?: readonly components["schemas"]["Changelog"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + }; + PagedDTOApprovalDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["ApprovalDTO"][]; + }; + PagedDTOArticleDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["ArticleDTO"][]; + }; + PagedDTOAssetsWorkspaceDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["AssetsWorkspaceDTO"][]; + }; + PagedDTOAttachmentDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["AttachmentDTO"][]; + }; + PagedDTOCommentDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["CommentDTO"][]; + }; + PagedDTOCustomerRequestDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["CustomerRequestDTO"][]; + }; + PagedDTOCustomerRequestStatusDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["CustomerRequestStatusDTO"][]; + }; + PagedDTOCustomerTransitionDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["CustomerTransitionDTO"][]; + }; + PagedDTOInsightWorkspaceDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["InsightWorkspaceDTO"][]; + }; + PagedDTOIssueBean: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["IssueBean"][]; + }; + PagedDTOOrganizationDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["OrganizationDTO"][]; + }; + PagedDTOQueueDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["QueueDTO"][]; + }; + PagedDTORequestTypeDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["RequestTypeDTO"][]; + }; + PagedDTORequestTypeGroupDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["RequestTypeGroupDTO"][]; + }; + PagedDTOServiceDeskDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["ServiceDeskDTO"][]; + }; + PagedDTOSlaInformationDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["SlaInformationDTO"][]; + }; + PagedDTOUserDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["UserDTO"][]; + }; + PagedLinkDTO: { + /** + * Format: uri + * @description Base URL for the REST API calls. + */ + base?: string; + context?: string; + /** + * Format: uri + * @description REST API URL for the next page, if there is one. + */ + next?: string; + /** + * Format: uri + * @description REST API URL for the previous page, if there is one. + */ + prev?: string; + /** + * Format: uri + * @description REST API URL for the current page. + */ + self?: string; + }; + /** @description Details about a project. */ + ProjectDetails: { + /** @description The URLs of the project's avatars. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description The ID of the project. */ + id?: string; + /** @description The key of the project. */ + key?: string; + /** @description The name of the project. */ + name?: string; + /** @description The category the project belongs to. */ + projectCategory?: components["schemas"]["UpdatedProjectCategory"]; + /** + * @description The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes) of the project. + * @enum {string} + */ + projectTypeKey?: "software" | "service_desk" | "business"; + /** @description The URL of the project details. */ + self?: string; + /** @description Whether or not the project is simplified. */ + simplified?: boolean; + }; + /** @description Property key details. */ + PropertyKey: { + /** @description The key of the property. */ + key?: string; + /** @description The URL of the property. */ + self?: string; + }; + /** @description List of property keys. */ + PropertyKeys: { + /** @description Property key details. */ + keys?: readonly components["schemas"]["PropertyKey"][]; + }; + QueueDTO: { + /** @description REST API URL to the queue. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description Fields returned for each request in the queue. */ + fields?: string[]; + /** @description ID for the queue. */ + id?: string; + /** + * Format: int64 + * @description The count of customer requests in the queue. + */ + issueCount?: number; + /** @description JQL query that filters reqeusts for the queue. */ + jql?: string; + /** @description Short name for the queue. */ + name?: string; + }; + RenderedValueDTO: { + html?: string; + }; + RequestCreateDTO: { + /** @description (Experimental) Shows extra information for the request channel. */ + channel?: string; + /** @description (Experimental) Provides answers to the form associated with a request type that is attached to the request on creation. Jira fields should be omitted from `requestFieldValues` if they are linked to form answers. Form answers in ADF format should have `isAdfRequest` set to true. Form answers are not currently validated. */ + form?: components["schemas"]["Form"]; + /** @description (Experimental) Whether to accept rich text fields in Atlassian Document Format (ADF). */ + isAdfRequest?: boolean; + /** @description The `accountId` of the customer that the request is being raised on behalf of. */ + raiseOnBehalfOf?: string; + /** @description JSON map of Jira field IDs and their values representing the content of the request. */ + requestFieldValues?: { + [key: string]: unknown; + }; + /** @description List of customers to participate in the request, as a list of `accountId` values. */ + requestParticipants?: string[]; + /** @description ID of the request type for the request. */ + requestTypeId?: string; + /** @description ID of the service desk in which to create the request. */ + serviceDeskId?: string; + }; + RequestNotificationSubscriptionDTO: { + /** @description Indicates whether the user is subscribed (true) or not (false) to the request's notifications. */ + subscribed?: boolean; + }; + RequestParticipantUpdateDTO: { + /** @description List of users, specified by account IDs, to add to or remove as participants in the request. */ + accountIds?: string[]; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. Use `accountIds` instead. */ + usernames?: string[]; + }; + RequestTypeCreateDTO: { + /** @description Description of the request type on the service desk. */ + description?: string; + /** @description Help text for the request type on the service desk. */ + helpText?: string; + /** @description ID of the request type to add to the service desk. */ + issueTypeId?: string; + /** @description Name of the request type on the service desk. */ + name?: string; + }; + RequestTypeDTO: { + /** @description List of items that can be expanded in the response by specifying the expand query parameter. */ + _expands?: string[]; + /** @description REST API URL for the request type. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description Description of the request type. */ + description?: string; + /** @description Fields and additional metadata for creating a request that uses the request type */ + fields?: components["schemas"]["CustomerRequestCreateMetaDTO"]; + /** @description List of the request type groups the request type belongs to. */ + groupIds?: string[]; + /** @description Help text for the request type. */ + helpText?: string; + /** @description Links to the request type's icons. */ + icon?: components["schemas"]["RequestTypeIconDTO"]; + /** @description ID for the request type. */ + id?: string; + /** @description ID of the issue type the request type is based upon. */ + issueTypeId?: string; + /** @description Short name for the request type. */ + name?: string; + /** @description ID of the customer portal associated with the service desk project. */ + portalId?: string; + /** @description The request type's practice */ + practice?: string; + /** @description ID of the service desk the request type belongs to. */ + serviceDeskId?: string; + }; + RequestTypeFieldDTO: { + /** @description List of default values for the field. */ + defaultValues?: components["schemas"]["RequestTypeFieldValueDTO"][]; + /** @description Description of the field. */ + description?: string; + /** @description ID of the field. */ + fieldId?: string; + /** @description Jira specific implementation details for the field in the UI. */ + jiraSchema?: components["schemas"]["JsonTypeBean"]; + /** @description Name of the field. */ + name?: string; + /** @description List of preset values for the field. */ + presetValues?: string[]; + /** @description Indicates if the field is required (true) or not (false). */ + required?: boolean; + /** @description List of valid values for the field. */ + validValues?: components["schemas"]["RequestTypeFieldValueDTO"][]; + visible?: boolean; + }; + RequestTypeFieldValueDTO: { + /** @description List of child fields. */ + children?: components["schemas"]["RequestTypeFieldValueDTO"][]; + /** @description Label for the field. */ + label?: string; + /** @description Value of the field. */ + value?: string; + }; + RequestTypeGroupDTO: { + /** @description ID of the request type group */ + id?: string; + /** @description Name of the request type group. */ + name?: string; + }; + RequestTypeIconDTO: { + /** @description Map of the URLs for the request type icons. */ + _links?: components["schemas"]["RequestTypeIconLinkDTO"]; + /** @description ID of the request type icon. */ + id?: string; + }; + RequestTypeIconLinkDTO: { + /** @description URLs for the request type icons. */ + iconUrls?: { + [key: string]: string; + }; + }; + Resource: { + description?: string; + /** Format: binary */ + file?: string; + filename?: string; + inputStream?: Record; + open?: boolean; + readable?: boolean; + /** Format: uri */ + uri?: string; + /** Format: url */ + url?: string; + }; + /** @description The projects the item is associated with. Indicated for items associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO). */ + Scope: { + /** @description The project the item has scope in. */ + project?: components["schemas"]["ProjectDetails"]; + /** + * @description The type of scope. + * @enum {string} + */ + type?: "PROJECT" | "TEMPLATE"; + [key: string]: unknown; + }; + SelfLinkDTO: { + /** Format: uri */ + self?: string; + }; + ServiceDeskCustomerDTO: { + /** @description List of users, specified by account IDs, to add to or remove from a service desk. */ + accountIds?: string[]; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. Use `accountIds` instead. */ + usernames?: string[]; + }; + ServiceDeskDTO: { + /** @description REST API URL to the service desk. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description ID of the service desk. */ + id?: string; + /** @description ID of the peer project for the service desk. */ + projectId?: string; + /** @description Key of the peer project of the service desk. */ + projectKey?: string; + /** @description Name of the project and service desk. */ + projectName?: string; + }; + /** @description Details about the operations available in this version. */ + SimpleLink: { + href?: string; + iconClass?: string; + id?: string; + label?: string; + styleClass?: string; + title?: string; + /** Format: int32 */ + weight?: number; + }; + SlaInformationCompletedCycleDTO: { + /** @description Time and date at which the SLA cycle breached in case of completed breached cycle or would have breached in case of non-breached completed cycle. */ + breachTime?: components["schemas"]["DateDTO"]; + /** @description Indicates if the SLA (duration) was exceeded (true) or not (false). */ + breached?: boolean; + /** @description Duration in which the service was completed. */ + elapsedTime?: components["schemas"]["DurationDTO"]; + /** @description Duration within which the service should have been completed. */ + goalDuration?: components["schemas"]["DurationDTO"]; + /** @description Duration remaining after the service was completed. */ + remainingTime?: components["schemas"]["DurationDTO"]; + /** @description Time and date at which the SLA cycle started. */ + startTime?: components["schemas"]["DateDTO"]; + /** @description Time and date at which the SLA cycle completed. */ + stopTime?: components["schemas"]["DateDTO"]; + }; + SlaInformationDTO: { + /** @description REST API URL for the SLA. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description List of completed cycles for the SLA. */ + completedCycles?: components["schemas"]["SlaInformationCompletedCycleDTO"][]; + /** @description ID of the Service Level Agreement (SLA). */ + id?: string; + /** @description Description of the SLA. */ + name?: string; + /** @description Details of the active cycle for the SLA. */ + ongoingCycle?: components["schemas"]["SlaInformationOngoingCycleDTO"]; + /** @description Format in which SLA is to be displayed in the UI */ + slaDisplayFormat?: string; + }; + SlaInformationOngoingCycleDTO: { + /** @description Time and date at which the SLA cycle would have breached its limit. */ + breachTime?: components["schemas"]["DateDTO"]; + /** @description Indicates whether the SLA has been breached (true) or not (false). */ + breached?: boolean; + /** @description Duration of the service. */ + elapsedTime?: components["schemas"]["DurationDTO"]; + /** @description Duration within which the service should be completed. */ + goalDuration?: components["schemas"]["DurationDTO"]; + /** @description Indicates whether the SLA is paused (true) or not (false). */ + paused?: boolean; + /** @description Duration remaining in which to complete the service. */ + remainingTime?: components["schemas"]["DurationDTO"]; + /** @description Time and date at which the SLA cycle started. */ + startTime?: components["schemas"]["DateDTO"]; + /** @description Indicates whether the SLA it timed during calendared working hours only (true) or not (false). */ + withinCalendarHours?: boolean; + }; + SoftwareInfoDTO: { + /** @description REST API URL of the instance. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description Reference of the change set included in the build. */ + buildChangeSet?: string; + /** @description Date of the current build. */ + buildDate?: components["schemas"]["DateDTO"]; + /** @description Indicates whether the instance is licensed (true) or not (false). */ + isLicensedForUse?: boolean; + /** @description Jira Platform version upon which Service Desk is based. */ + platformVersion?: string; + /** @description Jira Service Management version. */ + version?: string; + }; + SourceDTO: { + /** + * @description Type of the knowledge base source + * @enum {string} + */ + type?: "confluence"; + [key: string]: unknown; + }; + /** @description A status category. */ + StatusCategory: { + /** @description The name of the color used to represent the status category. */ + colorName?: string; + /** + * Format: int64 + * @description The ID of the status category. + */ + id?: number; + /** @description The key of the status category. */ + key?: string; + /** @description The name of the status category. */ + name?: string; + /** @description The URL of the status category. */ + self?: string; + [key: string]: unknown; + }; + /** @description A status. */ + StatusDetails: { + /** @description The description of the status. */ + description?: string; + /** @description The URL of the icon used to represent the status. */ + iconUrl?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The name of the status. */ + name?: string; + /** @description The scope of the field. */ + scope?: components["schemas"]["Scope"]; + /** @description The URL of the status. */ + self?: string; + /** @description The category assigned to the status. */ + statusCategory?: components["schemas"]["StatusCategory"]; + [key: string]: unknown; + }; + /** @description A project category. */ + UpdatedProjectCategory: { + /** @description The name of the project category. */ + description?: string; + /** @description The ID of the project category. */ + id?: string; + /** @description The description of the project category. */ + name?: string; + /** @description The URL of the project category. */ + self?: string; + }; + UserDTO: { + /** @description URLs for the customer record and related items. */ + _links?: components["schemas"]["UserLinkDTO"]; + /** @description The accountId of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description Indicates if the customer is active (true) or inactive (false) */ + active?: boolean; + /** @description Customer's name for display in a UI. Depending on the customer’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description Customer's email address. Depending on the customer’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description Customer time zone. Depending on the customer’s privacy settings, this may be returned as null. */ + timeZone?: string; + }; + /** + * @description User details permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions: + * + * * User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank). + * * User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values. + * * User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values. + */ + UserDetails: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user) */ + accountType?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The avatars of the user. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description The display name of the user. Depending on the user’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description The email address of the user. Depending on the user’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description The URL of the user. */ + self?: string; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null. */ + timeZone?: string; + }; + UserLinkDTO: { + /** @description Links to the various sizes of the customer's avatar. Note that this property is deprecated, and will be removed in future versions. */ + avatarUrls?: { + [key: string]: string; + }; + /** + * Format: uri + * @description REST API URL for the customer. + */ + jiraRest?: string; + /** Format: uri */ + self?: string; + }; + UsersOrganizationUpdateDTO: { + /** @description List of customers, specific by account IDs, to add to or remove from the organization. */ + accountIds?: string[]; + /** + * Format: int32 + * @description The organizationId in which users need to be added + */ + organizationId?: number; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. Use `accountIds` instead. */ + usernames?: string[]; + [key: string]: unknown; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} +export type $defs = Record; +export type external = Record; +export interface operations { + /** + * Get assets workspaces + * @description Returns a list of Assets workspace IDs. Include a workspace ID in the path to access the [Assets REST APIs](https://developer.atlassian.com/cloud/assets/rest). + * + * **[Permissions](#permissions) required**: Any + */ + getAssetsWorkspaces: { + parameters: { + query?: { + /** @description The starting index of the returned workspace IDs. Base index: 0 See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of workspace IDs to return per page. Default: 50 See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOAssetsWorkspaceDTO"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Create customer + * @description This method adds a customer to the Jira Service Management instance by passing a JSON file including an email address and display name. The display name does not need to be unique. The record's identifiers, `name` and `key`, are automatically generated from the request details. + * + * **[Permissions](#permissions) required**: Jira Administrator Global permission + */ + createCustomer: { + parameters: { + query?: { + /** @description Optional boolean flag to return 409 Conflict status code for duplicate customer creation request */ + strictConflictStatusCode?: boolean; + }; + }; + requestBody: { + content: { + /** + * @example { + * "displayName": "Fred F. User", + * "email": "fred@example.com" + * } + */ + "application/json": components["schemas"]["CustomerCreateDTO"]; + }; + }; + responses: { + /** @description Returns the customer details. */ + 201: { + content: { + "application/json": components["schemas"]["UserDTO"]; + }; + }; + /** @description Returned if the request is invalid, either because the email address is incorrectly formed or already exists in the database if `strictConflictStatusCode=false` or if `strictConflictStatusCode` parameter is not provided */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the request is invalid because the email address already exists in the database and `strictConflictStatusCode=true` */ + 409: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get info + * @description This method retrieves information about the Jira Service Management instance such as software version, builds, and related links. + * + * **[Permissions](#permissions) required**: None, the user does not need to be logged in. + */ + getInfo: { + responses: { + /** @description Returns the runtime information for the Jira Service Management instance. */ + 200: { + content: { + "application/json": components["schemas"]["SoftwareInfoDTO"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get insight workspaces + * @description This endpoint is deprecated, please use /assets/workspace/. + */ + getInsightWorkspaces: { + parameters: { + query?: { + start?: number; + limit?: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOInsightWorkspaceDTO"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get articles + * @description Returns articles which match the given query and belong to the knowledge base linked to the service desk. + * + * **[Permissions](#permissions) required**: Permission to access the service desk. + */ + getArticles: { + parameters: { + query: { + /** @description The string used to filter the articles (required). */ + query: string; + /** @description If set to true matching query term in the title and excerpt will be highlighted using the \{@code */ + highlight?: boolean; + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the articles, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOArticleDTO"]; + }; + }; + /** @description Returned if the request is invalid, for example: missing query parameter. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get organizations + * @description This method returns a list of all organizations associated with a service desk. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + getOrganizations: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + }; + path: { + /** @description The ID of the service desk from which the organization list will be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the requested organizations list. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOOrganizationDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist or the user is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Create organization + * @description This method creates an organization by passing the name of the organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. Note: Permission to create organizations can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + createOrganization: { + requestBody: { + content: { + /** + * @example { + * "name": "Charlie Cakes Franchises" + * } + */ + "application/json": components["schemas"]["OrganizationCreateDTO"]; + }; + }; + responses: { + /** @description Returns the created organization or the existing organization if name already exists. */ + 201: { + content: { + "application/json": components["schemas"]["OrganizationDTO"]; + }; + }; + /** @description Returned if the HTTP request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get organization + * @description This method returns details of an organization. Use this method to get organization details whenever your application component is passed an organization ID but needs to display other organization details. + * + * **[Permissions](#permissions) required**: Any + * + * **Response limitations**: Customers can only retrieve organization of which they are members. + */ + getOrganization: { + parameters: { + path: { + /** @description The ID of the organization. */ + organizationId: number; + }; + }; + responses: { + /** @description Returns the requested organization. */ + 200: { + content: { + "application/json": components["schemas"]["OrganizationDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the organization does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Delete organization + * @description This method deletes an organization. Note that the organization is deleted regardless of other associations it may have. For example, associations with service desks. + * + * **[Permissions](#permissions) required**: Jira administrator. + */ + deleteOrganization: { + parameters: { + path: { + /** @description The ID of the organization. */ + organizationId: number; + }; + }; + responses: { + /** @description Returned if the organization was deleted. */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the organization does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get properties keys + * @description Returns the keys of all properties for a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore the keys of all properties for a request type are also available by calling the Jira Cloud Platform [Get issue type property keys](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-get) endpoint. + * + * **[Permissions](#permissions) required**: The user must have permission to view the request type. + */ + getPropertiesKeys: { + parameters: { + path: { + /** @description The ID of the request type for which keys will be retrieved. */ + requestTypeId: number; + /** @description The ID of the service desk which contains the request type. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returned if the request type was found. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the request type ID is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the request type does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get property + * @description Returns the value of the property from a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore also available by calling the Jira Cloud Platform [Get issue type property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-get) endpoint. + * + * **[Permissions](#permissions) required**: User must have permission to view the request type. + */ + getProperty: { + parameters: { + path: { + /** @description The ID of the service desk which contains the request type. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description The ID of the request type from which the property will be retrieved. */ + requestTypeId: number; + /** @description The key of the property to return. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request type property was returned. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the request type ID is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the request type or property do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Set property + * @description Sets the value of a request type property. Use this resource to store custom data against a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore can also be set by calling the Jira Cloud Platform [Set issue type property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-put) endpoint. + * + * **[Permissions](#permissions) required**: Jira project administrator with a Jira Service Management agent license. + */ + setProperty: { + parameters: { + path: { + /** @description The ID of the service desk which contains the request type. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description The ID of the request type on which the property will be set. */ + requestTypeId: number; + /** @description The key of the request type property. The maximum length of the key is 255 bytes. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request type property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request type property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request type ID is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the calling user doesn't have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the request type does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Delete property + * @description Removes a property from a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore can also be deleted by calling the Jira Cloud Platform [Delete issue type property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-delete) endpoint. + * + * **[Permissions](#permissions) required**: Jira project administrator with a Jira Service Management agent license. + */ + deleteProperty: { + parameters: { + path: { + /** @description The ID of the service desk which contains the request type. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description The ID of the request type for which the property will be removed. */ + requestTypeId: number; + /** @description The key of the property to remove. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request type property was removed. */ + 204: { + content: never; + }; + /** @description Returned if the request type ID is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the calling user doesn't have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the request type or property do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get users in organization + * @description This method returns all the users associated with an organization. Use this method where you want to provide a list of users for an organization or determine if a user is associated with an organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. + */ + getUsersInOrganization: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of users to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID of the organization. */ + organizationId: number; + }; + }; + responses: { + /** @description Returns a paged list of users associated with the organization, ordered by their accountId. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOUserDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the organization does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Add users to organization + * @description This method adds users to an organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. Note: Permission to add users to an organization can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + addUsersToOrganization: { + parameters: { + path: { + /** @description The ID of the organization. */ + organizationId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "accountIds": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd" + * ], + * "usernames": [] + * } + */ + "application/json": components["schemas"]["UsersOrganizationUpdateDTO"]; + }; + }; + responses: { + /** @description Returned if all the users were valid and added to the organization, no response payload is provided. */ + 204: { + content: never; + }; + /** @description Returned if one or more usernames are unknown. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the organization does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Remove users from organization + * @description This method removes users from an organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. Note: Permission to delete users from an organization can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + removeUsersFromOrganization: { + parameters: { + path: { + /** @description The ID of the organization. */ + organizationId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "accountIds": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd" + * ], + * "usernames": [] + * } + */ + "application/json": components["schemas"]["UsersOrganizationUpdateDTO"]; + }; + }; + responses: { + /** @description The request completed successfully. No additional content will be sent in the response. */ + 204: { + content: never; + }; + /** @description Returned if one or more user names are invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the organization does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get customer requests + * @description 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](#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. + */ + getCustomerRequests: { + parameters: { + query?: { + /** @description Filters customer requests where the request summary matches the `searchTerm`. [Wildcards](https://confluence.atlassian.com/display/JIRACORECLOUD/Search+syntax+for+text+fields) can be used in the `searchTerm` parameter. */ + searchTerm?: string; + /** + * @description Filters customer requests using the following values: + * + * * `OWNED_REQUESTS` returns customer requests where the user is the creator. + * * `PARTICIPATED_REQUESTS` returns customer requests where the user is a participant. + * * `ORGANIZATION` returns customer requests for an organization of which the user is a member when used in conjunction with `organizationId`. + * * `ALL_ORGANIZATIONS` returns customer requests that belong to all organizations of which the user is a member. + * * `APPROVER` returns customer requests where the user is an approver. Can be used in conjunction with `approvalStatus` to filter pending or complete approvals. + * * `ALL_REQUESTS` returns all customer requests. **Deprecated and will be removed, as the returned requests may change if more values are added in the future. Instead, explicitly list the desired filtering strategies.** + * + * Multiple values of the query parameter are supported. For example, `requestOwnership=OWNED_REQUESTS&requestOwnership=PARTICIPATED_REQUESTS` will only return customer requests where the user is the creator or a participant. If not specified, filtering defaults to `OWNED_REQUESTS`, `PARTICIPATED_REQUESTS`, and `ALL_ORGANIZATIONS`. + */ + requestOwnership?: string[]; + /** + * @description Filters customer requests where the request is closed, open, or either of the two where: + * + * * `CLOSED_REQUESTS` returns customer requests that are closed. + * * `OPEN_REQUESTS` returns customer requests that are open. + * * `ALL_REQUESTS` returns all customer requests. + */ + requestStatus?: string; + /** + * @description Filters results to customer requests based on their approval status: + * + * * `MY_PENDING_APPROVAL` returns customer requests pending the user's approval. + * * `MY_HISTORY_APPROVAL` returns customer requests where the user was an approver. + * + * **Note**: Valid only when used with requestOwnership=APPROVER. + */ + approvalStatus?: string; + /** @description Filters customer requests that belong to a specific organization (note that the user must be a member of that organization). **Note**: Valid only when used with requestOwnership=ORGANIZATION. */ + organizationId?: number; + /** @description Filters customer requests by service desk. */ + serviceDeskId?: number; + /** @description Filters customer requests by request type. Note that the `serviceDeskId` must be specified for the service desk in which the request type belongs. */ + requestTypeId?: number; + /** + * @description A multi-value parameter indicating which properties of the customer request to expand, where: + * + * * `serviceDesk` returns additional details for each service desk. + * * `requestType` returns additional details for each request type. + * * `participant` returns the participant details, if any, for each customer request. + * * `sla` returns the SLA information on each customer request. + * * `status` returns the status transitions, in chronological order, for each customer request. + * * `attachment` returns the attachments for the customer request. + * * `action` returns the actions that the user can or cannot perform on this customer request. + * * `comment` returns the comments, if any, for each customer request. + * * `comment.attachment` returns the attachment details, if any, for each comment. + * * `comment.renderedBody` (Experimental) returns the rendered body in HTML format (in addition to the raw body) for each comment. + */ + expand?: string[]; + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + }; + responses: { + /** @description Returns the customer requests, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOCustomerRequestDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to access the service desk, the service desk does not exist, or the service desk does not support the request type. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Create customer request + * @description 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](#permissions) required**: Permission to create requests in the specified service desk. + */ + createCustomerRequest: { + requestBody: { + content: { + /** + * @example { + * "form": { + * "answers": { + * "1": { + * "text": "Answer to a text form field" + * }, + * "2": { + * "date": "2023-07-06" + * }, + * "3": { + * "time": "14:35" + * }, + * "4": { + * "choices": [ + * "5" + * ] + * }, + * "5": { + * "users": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ] + * } + * } + * }, + * "isAdfRequest": false, + * "requestFieldValues": { + * "description": "I need a new *mouse* for my Mac", + * "summary": "Request JSD help via REST" + * }, + * "requestParticipants": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ], + * "requestTypeId": "25", + * "serviceDeskId": "10" + * } + */ + "application/json": components["schemas"]["RequestCreateDTO"]; + }; + }; + responses: { + /** @description Returned if the customer request was created. */ + 201: { + content: { + "application/json": components["schemas"]["CustomerRequestDTO"]; + }; + }; + /** @description Returned if the HTTP request call is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get customer request by id or key + * @description This method returns a customer request. + * + * **[Permissions](#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. + * + * **Note:** `requestFieldValues` does not include hidden fields. To get a list of request type fields that includes hidden fields, see [/rest/servicedeskapi/servicedesk/\{serviceDeskId\}/requesttype/\{requestTypeId\}/field](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-servicedesk/#api-rest-servicedeskapi-servicedesk-servicedeskid-requesttype-requesttypeid-field-get) + */ + getCustomerRequestByIdOrKey: { + parameters: { + query?: { + /** + * @description A multi-value parameter indicating which properties of the customer request to expand, where: + * + * * `serviceDesk` returns additional service desk details. + * * `requestType` returns additional customer request type details. + * * `participant` returns the participant details. + * * `sla` returns the SLA information. + * * `status` returns the status transitions, in chronological order. + * * `attachment` returns the attachments. + * * `action` returns the actions that the user can or cannot perform. + * * `comment` returns the comments. + * * `comment.attachment` returns the attachment details for each comment. + * * `comment.renderedBody` (Experimental) return the rendered body in HTML format (in addition to the raw body) for each comment. + */ + expand?: string[]; + }; + path: { + /** @description The ID or Key of the customer request to be returned */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the customer request. */ + 200: { + content: { + "application/json": components["schemas"]["CustomerRequestDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get approvals + * @description This method returns all approvals on a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + getApprovals: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of approvals to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request to be queried for its approvals. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the customer request's approvals. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOApprovalDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get approval by id + * @description This method returns an approval. Use this method to determine the status of an approval and the list of approvers. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + getApprovalById: { + parameters: { + path: { + /** @description The ID or key of the customer request the approval is on. */ + issueIdOrKey: string; + /** @description The ID of the approval to be returned. */ + approvalId: number; + }; + }; + responses: { + /** @description Returns the requested approval. */ + 200: { + content: { + "application/json": components["schemas"]["ApprovalDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request or approval do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Answer approval + * @description 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](#permissions) required**: User is assigned to the approval request. + */ + answerApproval: { + parameters: { + path: { + /** @description The ID or key of the customer request to be updated. */ + issueIdOrKey: string; + /** @description The ID of the approval to be updated. */ + approvalId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "decision": "approve" + * } + */ + "application/json": components["schemas"]["ApprovalDecisionRequestDTO"]; + }; + }; + responses: { + /** @description Returns the updated approval. */ + 200: { + content: { + "application/json": components["schemas"]["ApprovalDTO"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request or the approval do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer has already submitted a decision or the approval has already been completed. */ + 409: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get attachments for request + * @description This method returns all the attachments for a customer requests. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + * + * **Response limitations**: Customers will only get a list of public attachments. + */ + getAttachmentsForRequest: { + parameters: { + query: { + /** @description The starting index of the returned attachment. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start: number; + /** @description The maximum number of comments to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit: number; + }; + path: { + /** @description The ID or key of the customer request from which the attachments will be listed. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the visible attachments from the customer request. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOAttachmentDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Create comment with attachment + * @description This method creates a comment on a customer request using one or more attachment files (uploaded using [servicedeskapi/servicedesk/\{serviceDeskId\}/attachTemporaryFile](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-servicedesk/#api-rest-servicedeskapi-servicedesk-servicedeskid-attachtemporaryfile-post)), with the visibility set by `public`. See + * + * * GET [servicedeskapi/request/\{issueIdOrKey\}/attachment](./#api-rest-servicedeskapi-request-issueidorkey-attachment-get) + * * GET [servicedeskapi/request/\{issueIdOrKey\}/comment/\{commentId\}/attachment](./#api-rest-servicedeskapi-request-issueidorkey-comment-commentid-attachment-get) + * + * **[Permissions](#permissions) required**: Permission to add an attachment. + * + * **Request limitations**: Customers can set public visibility only. + */ + createCommentWithAttachment: { + parameters: { + path: { + /** @description The ID or key of the customer request to which the attachment will be added. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "additionalComment": { + * "body": "Please find the screenshot and the log file attached." + * }, + * "public": true, + * "temporaryAttachmentIds": [ + * "temp910441317820424274", + * "temp3600755449679003114" + * ] + * } + */ + "application/json": components["schemas"]["AttachmentCreateDTO"]; + }; + }; + responses: { + /** @description Returns the attachments and comment. */ + 201: { + content: { + "application/json": components["schemas"]["AttachmentCreateResultDTO"]; + }; + }; + /** @description Returned if the HTTP request is invalid, including missing the required `public` field or list of temporary file IDs, or if the temporary files have expired. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get attachment content + * @description 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. + */ + getAttachmentContent: { + parameters: { + path: { + /** @description The ID or key for the customer request the attachment is associated with */ + issueIdOrKey: string; + /** @description The ID for the attachment */ + attachmentId: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is successful. See the `Location` header for the download URL. */ + 303: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description The user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get attachment thumbnail + * @description 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. + */ + getAttachmentThumbnail: { + parameters: { + path: { + /** @description The ID or key for the customer request the attachment is associated with */ + issueIdOrKey: string; + /** @description The ID of the attachment. */ + attachmentId: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is successful. See the `Location` header for the download URL. */ + 303: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description The user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request comments + * @description 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](#permissions) required**: Permission to view the customer request. + * + * **Response limitations**: Customers are returned public comments only. + */ + getRequestComments: { + parameters: { + query?: { + /** @description Specifies whether to return public comments or not. Default: true. */ + public?: boolean; + /** @description Specifies whether to return internal comments or not. Default: true. */ + internal?: boolean; + /** + * @description A multi-value parameter indicating which properties of the comment to expand: + * + * * `attachment` returns the attachment details, if any, for each comment. (If you want to get all attachments for a request, use [servicedeskapi/request/\{issueIdOrKey\}/attachment](#api-request-issueIdOrKey-attachment-get).) + * * `renderedBody` (Experimental) returns the rendered body in HTML format (in addition to the raw body) for each comment. + */ + expand?: string[]; + /** @description The starting index of the returned comments. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of comments to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request whose comments will be retrieved. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the comments, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOCommentDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Create request comment + * @description 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](#permissions) required**: User has Add Comments permission. + * + * **Request limitations**: Customers can set comments to public visibility only. + */ + createRequestComment: { + parameters: { + path: { + /** @description The ID or key of the customer request to which the comment will be added. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "body": "Hello there", + * "public": true + * } + */ + "application/json": components["schemas"]["CommentCreateDTO"]; + }; + }; + responses: { + /** @description Returns the comment. */ + 201: { + content: { + "application/json": components["schemas"]["CommentDTO"]; + }; + }; + /** @description Returned if the HTTP request is invalid, e.g. missing the required `public`. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request comment by id + * @description This method returns details of a customer request's comment. + * + * **[Permissions](#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. + */ + getRequestCommentById: { + parameters: { + query?: { + /** + * @description A multi-value parameter indicating which properties of the comment to expand: + * + * * `attachment` returns the attachment details, if any, for the comment. (If you want to get all attachments for a request, use [servicedeskapi/request/\{issueIdOrKey\}/attachment](#api-request-issueIdOrKey-attachment-get).) + * * `renderedBody` (Experimental) returns the rendered body in HTML format (in addition to the raw body) of the comment. + */ + expand?: string[]; + }; + path: { + /** @description The ID or key of the customer request that contains the comment. */ + issueIdOrKey: string; + /** @description The ID of the comment to retrieve. */ + commentId: number; + }; + }; + responses: { + /** @description Returns the comment. */ + 200: { + content: { + "application/json": components["schemas"]["CommentDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request or comment do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get comment attachments + * @description This method returns the attachments referenced in a comment. + * + * **[Permissions](#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. + */ + getCommentAttachments: { + parameters: { + query?: { + /** @description The starting index of the returned comments. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of comments to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request that contains the comment. */ + issueIdOrKey: string; + /** @description The ID of the comment. */ + commentId: number; + }; + }; + responses: { + /** @description Returns the attachments, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOAttachmentDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request or the comment do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get subscription status + * @description 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](#permissions) required**: Permission to view the customer request. + */ + getSubscriptionStatus: { + parameters: { + path: { + /** @description The ID or key of the customer request to be queried for subscription status. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the status of the notification subscription. */ + 200: { + content: { + "application/json": components["schemas"]["RequestNotificationSubscriptionDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Subscribe + * @description This method subscribes the user to receiving notifications from a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + subscribe: { + parameters: { + path: { + /** @description The ID or key of the customer request to be subscribed to. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns if the user was subscribed. */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Unsubscribe + * @description This method unsubscribes the user from notifications from a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + unsubscribe: { + parameters: { + path: { + /** @description The ID or key of the customer request to be unsubscribed from. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns if the user was unsubscribed. */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request participants + * @description This method returns a list of all the participants on a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + getRequestParticipants: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of request types to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request to be queried for its participants. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the customer request's participants, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOUserDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Add request participants + * @description This method adds participants to a customer request. + * + * **[Permissions](#permissions) required**: Permission to manage participants on the customer request. + * + * Note, participants can be added when creating a customer request using the [request](#api-request-post) resource, by defining the participants in the `requestParticipants` field. + */ + addRequestParticipants: { + parameters: { + path: { + /** @description The ID or key of the customer request to have participants added. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "accountIds": [], + * "usernames": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ] + * } + */ + "application/json": components["schemas"]["RequestParticipantUpdateDTO"]; + }; + }; + responses: { + /** @description Returns the participants added to the customer request. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOUserDTO"]; + }; + }; + /** @description Returned if any user to be added as a participant does not exist. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Remove request participants + * @description This method removes participants from a customer request. + * + * **[Permissions](#permissions) required**: Permission to manage participants on the customer request. + */ + removeRequestParticipants: { + parameters: { + path: { + /** @description The ID or key of the customer request to have participants removed. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "accountIds": [], + * "usernames": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ] + * } + */ + "application/json": components["schemas"]["RequestParticipantUpdateDTO"]; + }; + }; + responses: { + /** @description Returns the first page of the customer request's participants (after removal of the users). */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOUserDTO"]; + }; + }; + /** @description Returned if any user to be removed as a participant does not exist, is not a participant in the customer request, or is the reporter of the request. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get sla information + * @description 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](#permissions) required**: Agent for the Service Desk containing the queried customer request. + */ + getSlaInformation: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of request types to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request whose SLAs will be retrieved. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the SLA records on the customer request, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOSlaInformationDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get sla information by id + * @description This method returns the details for an SLA on a customer request. + * + * **[Permissions](#permissions) required**: Agent for the Service Desk containing the queried customer request. + */ + getSlaInformationById: { + parameters: { + path: { + /** @description The ID or key of the customer request whose SLAs will be retrieved. */ + issueIdOrKey: string; + /** @description The ID or key of the SLAs metric to be retrieved. */ + slaMetricId: number; + }; + }; + responses: { + /** @description Returns the SLA record, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["SlaInformationDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get customer request status + * @description 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](#permissions) required**: Permission to view the customer request. + */ + getCustomerRequestStatus: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request to be retrieved. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the customer request's status history, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOCustomerRequestStatusDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get customer transitions + * @description 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](#permissions) required**: Permission to view the customer request. + */ + getCustomerTransitions: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request whose transitions will be retrieved. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the transitions available to the user on the customer request. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOCustomerTransitionDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Perform customer transition + * @description 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](#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. + */ + performCustomerTransition: { + parameters: { + path: { + /** @description ID or key of the issue to transition */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "additionalComment": { + * "body": "I have fixed the problem." + * }, + * "id": "1" + * } + */ + "application/json": components["schemas"]["CustomerTransitionExecutionDTO"]; + }; + }; + responses: { + /** @description Returned if the request is transitioned. */ + 204: { + content: never; + }; + /** @description Returned if the transition ID is invalid or the comment is too long. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get feedback + * @description This method retrieves a feedback of a request using it's `requestKey` or `requestId` + * + * **[Permissions](#permissions) required**: User has view request permissions. + */ + getFeedback: { + parameters: { + path: { + /** @description The id or the key of the request to post the feedback on */ + requestIdOrKey: string; + }; + }; + responses: { + /** @description Returns the comment. */ + 200: { + content: { + "application/json": components["schemas"]["CSATFeedbackFullDTO"]; + }; + }; + /** @description Returned if the HTTP request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if no logged in user/app. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user/app does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Post feedback + * @description This method adds a feedback on an request using it's `requestKey` or `requestId` + * + * **[Permissions](#permissions) required**: User must be the reporter or an Atlassian Connect app. + */ + postFeedback: { + parameters: { + path: { + /** @description The id or the key of the request to post the feedback on */ + requestIdOrKey: string; + }; + }; + /** @description The feedback to be added on the request */ + requestBody: { + content: { + /** + * @example { + * "comment": { + * "body": "Great work!" + * }, + * "rating": 4, + * "type": "csat" + * } + */ + "application/json": components["schemas"]["CSATFeedbackFullDTO"]; + }; + }; + responses: { + /** @description Returns the comment. */ + 201: { + content: { + "application/json": components["schemas"]["CSATFeedbackFullDTO"]; + }; + }; + /** @description Returned if the HTTP request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if no logged in user/app. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user/app does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Delete feedback + * @description This method deletes the feedback of request using it's `requestKey` or `requestId` + * + * **[Permissions](#permissions) required**: User must be the reporter or an Atlassian Connect app. + */ + deleteFeedback: { + parameters: { + path: { + /** @description The id or the key of the request to post the feedback on */ + requestIdOrKey: string; + }; + }; + responses: { + /** @description No content. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no logged in user/app. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user/app does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get all request types + * @description This method returns all customer request types used in the Jira Service Management instance, optionally filtered by a query string. + * + * Use [servicedeskapi/servicedesk/\{serviceDeskId\}/requesttype](#api-servicedesk-serviceDeskId-requesttype-get) to find the customer request types supported by a specific service desk. + * + * The returned list of customer request types can be filtered using the `query` parameter. The parameter is matched against the customer request types' `name` or `description`. For example, searching for "Install", "Inst", "Equi", or "Equipment" will match a customer request type with the *name* "Equipment Installation Request". + * + * **Note:** This API will filter out hidden request types (aka.request types without groups) when `query` is provided. + * + * **[Permissions](#permissions) required**: Any + */ + getAllRequestTypes: { + parameters: { + query?: { + /** @description String to be used to filter the results. */ + searchQuery?: string; + /** @description Filter the request types by service desk Ids provided. Multiple values of the query parameter are supported. For example, `serviceDeskId=1&serviceDeskId=2` will return request types only for service desks 1 and 2. */ + serviceDeskId?: number[]; + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + expand?: string[]; + }; + }; + responses: { + /** @description Returns the request types, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTORequestTypeDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get service desks + * @description This method returns all the service desks in the Jira Service Management instance that the user has permission to access. Use this method where you need a list of service desks or need to locate a service desk by name or keyword. + * + * **Note:** This method will be slow if the instance has hundreds of service desks. If you want to fetch a single service desk by its ID, use [/rest/servicedeskapi/servicedesk/\{serviceDeskId\}](./#api-rest-servicedeskapi-servicedesk-servicedeskid-get) instead. + * + * **[Permissions](#permissions) required**: Any + */ + getServiceDesks: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + }; + responses: { + /** @description Returns the service desks, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOServiceDeskDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get service desk by id + * @description This method returns a service desk. Use this method to get service desk details whenever your application component is passed a service desk ID but needs to display other service desk details. + * + * **[Permissions](#permissions) required**: Permission to access the Service Desk. For example, being the Service Desk's Administrator or one of its Agents or Users. + */ + getServiceDeskById: { + parameters: { + path: { + /** @description The ID of the service desk to return. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the requested service desk. */ + 200: { + content: { + "application/json": components["schemas"]["ServiceDeskDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Attach temporary file + * @description This method adds one or more temporary attachments to a service desk, which can then be permanently attached to a customer request using [servicedeskapi/request/\{issueIdOrKey\}/attachment](#api-request-issueIdOrKey-attachment-post). + * + * **Note**: It is possible for a service desk administrator to turn off the ability to add attachments to a service desk. + * + * This method expects a multipart request. The media-type multipart/form-data is defined in RFC 1867. Most client libraries have classes that make dealing with multipart posts simple. For instance, in Java the Apache HTTP Components library provides [MultiPartEntity](http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html). + * + * Because this method accepts multipart/form-data, it has XSRF protection on it. This means you must submit a header of X-Atlassian-Token: no-check with the request or it will be blocked. + * + * The name of the multipart/form-data parameter that contains the attachments must be `file`. + * + * For example, to upload a file called `myfile.txt` in the Service Desk with ID 10001 use + * + * curl -D- -u customer:customer -X POST -H "X-ExperimentalApi: opt-in" -H "X-Atlassian-Token: no-check" -F "file=@myfile.txt" https://your-domain.atlassian.net/rest/servicedeskapi/servicedesk/10001/attachTemporaryFile + * + * **[Permissions](#permissions) required**: Permission to add attachments in this Service Desk. + */ + attachTemporaryFile: { + parameters: { + path: { + /** @description The ID of the Service Desk to which the file will be attached. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + requestBody: { + content: { + "multipart/form-data": components["schemas"]["MultipartFile"][]; + }; + }; + responses: { + /** @description Returns if the file(s) were attached. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the attachments are not valid, or exceed the maximum configured attachment size. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if more than 60 files are requested to be uploaded. */ + 413: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get customers + * @description This method returns a list of the customers on a service desk. + * + * The returned list of customers can be filtered using the `query` parameter. The parameter is matched against customers' `displayName`, `name`, or `email`. For example, searching for "John", "Jo", "Smi", or "Smith" will match a user with display name "John Smith". + * + * **[Permissions](#permissions) required**: Permission to view this Service Desk's customers. + */ + getCustomers: { + parameters: { + query?: { + /** @description The string used to filter the customer list. */ + query?: string; + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of users to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID of the service desk the customer list should be returned from. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the service desk's customer list. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOUserDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Add customers + * @description Adds one or more customers to a service desk. If any of the passed customers are associated with the service desk, no changes will be made for those customers and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Service desk administrator + */ + addCustomers: { + parameters: { + path: { + /** @description The ID of the service desk the customer list should be returned from. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "accountIds": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ], + * "usernames": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ] + * } + */ + "application/json": components["schemas"]["ServiceDeskCustomerDTO"]; + }; + }; + responses: { + /** @description Returned if all the customers were added to the service desk or were already associated with the service desk. */ + 204: { + content: never; + }; + /** @description Returned if any of the customers do not exist. Note that any valid customers are added, but no confirmation is returned. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Remove customers + * @description This method removes one or more customers from a service desk. The service desk must have closed access. If any of the passed customers are not associated with the service desk, no changes will be made for those customers and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Services desk administrator + */ + removeCustomers: { + parameters: { + path: { + /** @description The ID of the service desk the customers should be removed from. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "accountIds": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ], + * "usernames": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ] + * } + */ + "application/json": components["schemas"]["ServiceDeskCustomerDTO"]; + }; + }; + responses: { + /** @description Returned if the customers were removed from the service desk, or any of the customers were not associated with the service desk. */ + 204: { + content: never; + }; + /** @description Returned if the service desk has public signup or open access enabled. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Add organization + * @description This method adds an organization to a service desk. If the organization ID is already associated with the service desk, no change is made and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + addOrganization: { + parameters: { + path: { + /** @description The ID of the service desk to which the organization will be added. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "organizationId": 1 + * } + */ + "application/json": components["schemas"]["OrganizationServiceDeskUpdateDTO"]; + }; + }; + responses: { + /** @description Returned if the organization was added or the organization was already associated with the service desk. */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or organization do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Remove organization + * @description This method removes an organization from a service desk. If the organization ID does not match an organization associated with the service desk, no change is made and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + removeOrganization: { + parameters: { + path: { + /** @description The ID of the service desk from which the organization will be removed. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "organizationId": 1 + * } + */ + "application/json": components["schemas"]["OrganizationServiceDeskUpdateDTO"]; + }; + }; + responses: { + /** @description Returned if the organization was removed from the service desk or no such organization was associated with the service desk. */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or organization do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get queues + * @description This method returns the queues in a service desk. To include a customer request count for each queue (in the `issueCount` field) in the response, set the query parameter `includeCount` to true (its default is false). + * + * **[Permissions](#permissions) required**: service desk's Agent. + */ + getQueues: { + parameters: { + query?: { + /** @description Specifies whether to include each queue's customer request (issue) count in the response. */ + includeCount?: boolean; + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description ID of the service desk whose queues will be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the queues of the service desk, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOQueueDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get queue + * @description This method returns a specific queues in a service desk. To include a customer request count for the queue (in the `issueCount` field) in the response, set the query parameter `includeCount` to true (its default is false). + * + * **[Permissions](#permissions) required**: service desk's Agent. + */ + getQueue: { + parameters: { + query?: { + /** @description Specifies whether to include each queue's customer request (issue) count in the response. */ + includeCount?: boolean; + }; + path: { + /** @description ID of the service desk whose queues will be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description ID of the required queue. */ + queueId: number; + }; + }; + responses: { + /** @description Returns the specific queue of the service desk. */ + 200: { + content: { + "application/json": components["schemas"]["QueueDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get issues in queue + * @description This method returns the customer requests in a queue. Only fields that the queue is configured to show are returned. For example, if a queue is configured to show description and due date, then only those two fields are returned for each customer request in the queue. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + getIssuesInQueue: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID of the service desk containing the queue to be queried. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description The ID of the queue whose customer requests will be returned. */ + queueId: number; + }; + }; + responses: { + /** @description Returns the customer requests belonging to the queue, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOIssueBean"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or the queue do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request types + * @description This method returns all customer request types from a service desk. There are two parameters for filtering the returned list: + * + * * `groupId` which filters the results to items in the customer request type group. + * * `searchQuery` which is matched against request types' `name` or `description`. For example, the strings "Install", "Inst", "Equi", or "Equipment" will match a request type with the *name* "Equipment Installation Request". + * + * **Note:** This API by default will filter out hidden request types (aka.request types without groups) when `searchQuery` is provided, unless `includeHiddenRequestTypesInSearch` is set to true. + * + * **[Permissions](#permissions) required**: Permission to access the service desk. + */ + getRequestTypes: { + parameters: { + query?: { + /** @description Filters results to those in a customer request type group. */ + groupId?: number; + expand?: string[]; + /** @description The string to be used to filter the results. */ + searchQuery?: string; + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + /** @description Whether to include hidden request types when searching with `searchQuery`. Default: false */ + includeHiddenRequestTypesInSearch?: boolean; + }; + path: { + /** @description The ID of the service desk whose customer request types are to be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the requested customer request types, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTORequestTypeDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Create request type + * @description This method enables a customer request type to be added to a service desk based on an issue type. Note that not all customer request type fields can be specified in the request and these fields are given the following default values: + * + * * Request type icon is given the headset icon. + * * Request type groups is left empty, which means this customer request type will not be visible on the [customer portal](https://confluence.atlassian.com/servicedeskcloud/configuring-the-customer-portal-732528918.html). + * * Request type status mapping is left empty, so the request type has no custom status mapping but inherits the status map from the issue type upon which it is based. + * * Request type field mapping is set to show the required fields as specified by the issue type used to create the customer request type. + * + * + * These fields can be updated by a service desk administrator using the **Request types** option in **Project settings**. + * Request Types are created in next-gen projects by creating Issue Types. Please use the Jira Cloud Platform Create issue type endpoint instead. + * + * **[Permissions](#permissions) required**: Service desk's administrator + */ + createRequestType: { + parameters: { + path: { + /** @description The ID of the service desk where the customer request type is to be created. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "Get IT Help", + * "helpText": "Please tell us clearly the problem you have within 100 words.", + * "issueTypeId": "12345", + * "name": "Get IT Help" + * } + */ + "application/json": components["schemas"]["RequestTypeCreateDTO"]; + }; + }; + responses: { + /** @description Returns the customer request type created. */ + 200: { + content: { + "application/json": components["schemas"]["RequestTypeDTO"]; + }; + }; + /** @description Returned if the customer request type name is empty. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or issue type do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request type by id + * @description This method returns a customer request type from a service desk. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required**: Permission to access the service desk. + */ + getRequestTypeById: { + parameters: { + query?: { + expand?: string[]; + }; + path: { + /** @description The ID of the service desk whose customer request type is to be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description The ID of the customer request type to be returned. */ + requestTypeId: string; + }; + }; + responses: { + /** @description Returns the customer request type item. */ + 200: { + content: { + "application/json": components["schemas"]["RequestTypeDTO"]; + }; + }; + /** @description Returned if the user credentials are invalid. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or customer request type do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Delete request type + * @description This method deletes a customer request type from a service desk, and removes it from all customer requests. + * This only supports classic projects. + * + * **[Permissions](#permissions) required**: Service desk administrator. + */ + deleteRequestType: { + parameters: { + path: { + /** @description The ID or [project identifier](#project-identifiers) of the service desk. */ + serviceDeskId: string; + /** @description The ID of the request type. */ + requestTypeId: number; + }; + }; + responses: { + /** @description Returned if the request type is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the request type ID is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have the necessary permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or request type do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request type fields + * @description This method returns the fields for a service desk's customer request type. + * + * Also, the following information about the user's permissions for the request type is returned: + * + * * `canRaiseOnBehalfOf` returns `true` if the user has permission to raise customer requests on behalf of other customers. Otherwise, returns `false`. + * * `canAddRequestParticipants` returns `true` if the user can add customer request participants. Otherwise, returns `false`. + * + * **[Permissions](#permissions) required**: Permission to view the Service Desk. However, hidden fields would be visible to only Service desk's Administrator. + */ + getRequestTypeFields: { + parameters: { + query?: { + /** @description Use [expand](#expansion) to include additional information in the response. This parameter accepts `hiddenFields` that returns hidden fields associated with the request type. */ + expand?: string[]; + }; + path: { + /** @description The ID of the service desk containing the request types whose fields are to be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description The ID of the request types whose fields are to be returned. */ + requestTypeId: number; + }; + }; + responses: { + /** @description Returns the request type's fields and user permission details, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["CustomerRequestCreateMetaDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or request type do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request type groups + * @description This method returns a service desk's customer request type groups. Jira Service Management administrators can arrange the customer request type groups in an arbitrary order for display on the customer portal; the groups are returned in this order. + * + * **[Permissions](#permissions) required**: Permission to view the service desk. + */ + getRequestTypeGroups: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID of the service desk whose customer request type groups are to be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the service desk's customer request type groups, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTORequestTypeGroupDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; +} diff --git a/lib/generated/openapi-service-desk.js b/lib/generated/openapi-service-desk.js new file mode 100644 index 0000000..8fb5a2c --- /dev/null +++ b/lib/generated/openapi-service-desk.js @@ -0,0 +1,6 @@ +"use strict"; +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/lib/generated/openapi-software.d.ts b/lib/generated/openapi-software.d.ts new file mode 100644 index 0000000..100f8d2 --- /dev/null +++ b/lib/generated/openapi-software.d.ts @@ -0,0 +1,11509 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ +/** OneOf type helpers */ +type Without = { + [P in Exclude]?: never; +}; +type XOR = T | U extends object ? (Without & U) | (Without & T) : T | U; +type OneOf = T extends [infer Only] ? Only : T extends [infer A, infer B, ...infer Rest] ? OneOf<[XOR, ...Rest]> : never; +export interface paths { + "/rest/agile/1.0/backlog/issue": { + /** + * Move issues to backlog + * @description Move issues to the backlog. + * This operation is equivalent to remove future and active sprints from a given set of issues. At most 50 issues may be moved at once. + */ + post: operations["moveIssuesToBacklog"]; + }; + "/rest/agile/1.0/backlog/{boardId}/issue": { + /** + * Move issues to backlog for board + * @description Move issues to the backlog of a particular board (if they are already on that board). + * This operation is equivalent to remove future and active sprints from a given set of issues if the board has sprints If the board does not have sprints this will put the issues back into the backlog from the board. At most 50 issues may be moved at once. + */ + post: operations["moveIssuesToBacklogForBoard"]; + }; + "/rest/agile/1.0/board": { + /** + * Get all boards + * @description Returns all boards. This only includes boards that the user has permission to view. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024. + * + * * `read:board-scope:jira-software`, `read:project:jira` + */ + get: operations["getAllBoards"]; + /** + * Create board + * @description Creates a new board. Board name, type and filter ID is required. + * + * * `name` \- Must be less than 255 characters. + * * `type` \- Valid values: scrum, kanban + * * `filterId` \- ID of a filter that the user has permissions to view. Note, if the user does not have the 'Create shared objects' permission and tries to create a shared board, a private board will be created instead (remember that board sharing depends on the filter sharing). + * * `location` \- The container that the board will be located in. `location` must include the `type` property (Valid values: project, user). If choosing 'project', then a project must be specified by a `projectKeyOrId` property in `location`. If choosing 'user', the current user is chosen by default. The `projectKeyOrId` property should not be provided. + * + * Note: + * + * * If you want to create a new project with an associated board, use the [Jira platform REST API](https://docs.atlassian.com/jira/REST/latest). For more information, see the [Create project](#api-rest-api-3-project-post) method. The `projectTypeKey` for software boards must be 'software' and the `projectTemplateKey` must be either `com.pyxis.greenhopper.jira:gh-kanban-template` or `com.pyxis.greenhopper.jira:gh-scrum-template`. + * * You can create a filter using the [Jira REST API](https://docs.atlassian.com/jira/REST/latest). For more information, see the [Create filter](#api-rest-api-3-filter-post) method. + * * If you do not ORDER BY the Rank field for the filter of your board, you will not be able to reorder issues on the board. + */ + post: operations["createBoard"]; + }; + "/rest/agile/1.0/board/filter/{filterId}": { + /** + * Get board by filter id + * @description Returns any boards which use the provided filter id. This method can be executed by users without a valid software license in order to find which boards are using a particular filter. + */ + get: operations["getBoardByFilterId"]; + }; + "/rest/agile/1.0/board/{boardId}": { + /** + * Get board + * @description Returns the board for the given board ID. This board will only be returned if the user has permission to view it. Admins without the view permission will see the board as a private one, so will see only a subset of the board's data (board location for instance). + */ + get: operations["getBoard"]; + /** + * Delete board + * @description Deletes the board. Admin without the view permission can still remove the board. + */ + delete: operations["deleteBoard"]; + }; + "/rest/agile/1.0/board/{boardId}/backlog": { + /** + * Get issues for backlog + * @description Returns all issues from the board's backlog, for the given board ID. This only includes issues that the user has permission to view. The backlog contains incomplete issues that are not assigned to any future or active sprint. Note, if the user does not have permission to view the board, no issues will be returned at all. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + get: operations["getIssuesForBacklog"]; + }; + "/rest/agile/1.0/board/{boardId}/configuration": { + /** + * Get configuration + * @description Get the board configuration. The response contains the following fields: + * + * * `id` \- ID of the board. + * * `name` \- Name of the board. + * * `filter` \- Reference to the filter used by the given board. + * * `location` \- Reference to the container that the board is located in. Includes the container type (Valid values: project, user). + * * `subQuery` (Kanban only) - JQL subquery used by the given board. + * * `columnConfig` \- The column configuration lists the columns for the board, in the order defined in the column configuration. For each column, it shows the issue status mapping as well as the constraint type (Valid values: none, issueCount, issueCountExclSubs) for the min/max number of issues. Note, the last column with statuses mapped to it is treated as the "Done" column, which means that issues in that column will be marked as already completed. + * * `estimation` (Scrum only) - Contains information about type of estimation used for the board. Valid values: none, issueCount, field. If the estimation type is "field", the ID and display name of the field used for estimation is also returned. Note, estimates for an issue can be updated by a PUT /rest/api/3/issue/\{issueIdOrKey\} request, however the fields must be on the screen. "timeoriginalestimate" field will never be on the screen, so in order to update it "originalEstimate" in "timetracking" field should be updated. + * * `ranking` \- Contains information about custom field used for ranking in the given board. + */ + get: operations["getConfiguration"]; + }; + "/rest/agile/1.0/board/{boardId}/epic": { + /** + * Get epics + * @description Returns all epics from the board, for the given board ID. This only includes epics that the user has permission to view. Note, if the user does not have permission to view the board, no epics will be returned at all. + */ + get: operations["getEpics"]; + }; + "/rest/agile/1.0/board/{boardId}/epic/none/issue": { + /** + * Get issues without epic for board + * @description Returns all issues that do not belong to any epic on a board, for a given board ID. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + get: operations["getIssuesWithoutEpicForBoard"]; + }; + "/rest/agile/1.0/board/{boardId}/epic/{epicId}/issue": { + /** + * Get board issues for epic + * @description Returns all issues that belong to an epic on the board, for the given epic ID and the board ID. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + get: operations["getBoardIssuesForEpic"]; + }; + "/rest/agile/1.0/board/{boardId}/features": { + /** Get features for board */ + get: operations["getFeaturesForBoard"]; + /** Toggle features */ + put: operations["toggleFeatures"]; + }; + "/rest/agile/1.0/board/{boardId}/issue": { + /** + * Get issues for board + * @description Returns all issues from a board, for a given board ID. This only includes issues that the user has permission to view. An issue belongs to the board if its status is mapped to the board's column. Epic issues do not belongs to the scrum boards. Note, if the user does not have permission to view the board, no issues will be returned at all. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + get: operations["getIssuesForBoard"]; + /** + * Move issues to board + * @description Move issues from the backog to the board (if they are already in the backlog of that board). + * This operation either moves an issue(s) onto a board from the backlog (by adding it to the issueList for the board) Or transitions the issue(s) to the first column for a kanban board with backlog. At most 50 issues may be moved at once. + */ + post: operations["moveIssuesToBoard"]; + }; + "/rest/agile/1.0/board/{boardId}/project": { + /** + * Get projects + * @description Returns all projects that are associated with the board, for the given board ID. If the user does not have permission to view the board, no projects will be returned at all. Returned projects are ordered by the name. + * + * A project is associated with a board if the board filter contains reference the project or there is an issue from the project that belongs to the board. + * + * The board filter contains reference the project only if JQL query guarantees that returned issues will be returned from the project set defined in JQL. For instance the query `project in (ABC, BCD) AND reporter = admin` have reference to ABC and BCD projects but query `project in (ABC, BCD) OR reporter = admin` doesn't have reference to any project. + * + * An issue belongs to the board if its status is mapped to the board's column. Epic issues do not belongs to the scrum boards. + */ + get: operations["getProjects"]; + }; + "/rest/agile/1.0/board/{boardId}/project/full": { + /** + * Get projects full + * @description Returns all projects that are statically associated with the board, for the given board ID. Returned projects are ordered by the name. + * + * A project is associated with a board if the board filter contains reference the project. + * + * The board filter contains reference the project only if JQL query guarantees that returned issues will be returned from the project set defined in JQL. For instance the query `project in (ABC, BCD) AND reporter = admin` have reference to ABC and BCD projects but query `project in (ABC, BCD) OR reporter = admin` doesn't have reference to any project. + */ + get: operations["getProjectsFull"]; + }; + "/rest/agile/1.0/board/{boardId}/properties": { + /** + * Get board property keys + * @description Returns the keys of all properties for the board identified by the id. The user who retrieves the property keys is required to have permissions to view the board. + */ + get: operations["getBoardPropertyKeys"]; + }; + "/rest/agile/1.0/board/{boardId}/properties/{propertyKey}": { + /** + * Get board property + * @description Returns the value of the property with a given key from the board identified by the provided id. The user who retrieves the property is required to have permissions to view the board. + */ + get: operations["getBoardProperty"]; + /** + * Set board property + * @description Sets the value of the specified board's property. + * + * You can use this resource to store a custom data against the board identified by the id. The user who stores the data is required to have permissions to modify the board. + */ + put: operations["setBoardProperty"]; + /** + * Delete board property + * @description Removes the property from the board identified by the id. Ths user removing the property is required to have permissions to modify the board. + */ + delete: operations["deleteBoardProperty"]; + }; + "/rest/agile/1.0/board/{boardId}/quickfilter": { + /** + * Get all quick filters + * @description Returns all quick filters from a board, for a given board ID. + */ + get: operations["getAllQuickFilters"]; + }; + "/rest/agile/1.0/board/{boardId}/quickfilter/{quickFilterId}": { + /** + * Get quick filter + * @description Returns the quick filter for a given quick filter ID. The quick filter will only be returned if the user can view the board that the quick filter belongs to. + */ + get: operations["getQuickFilter"]; + }; + "/rest/agile/1.0/board/{boardId}/reports": { + /** Get reports for board */ + get: operations["getReportsForBoard"]; + }; + "/rest/agile/1.0/board/{boardId}/sprint": { + /** + * Get all sprints + * @description Returns all sprints from a board, for a given board ID. This only includes sprints that the user has permission to view. + */ + get: operations["getAllSprints"]; + }; + "/rest/agile/1.0/board/{boardId}/sprint/{sprintId}/issue": { + /** + * Get board issues for sprint + * @description Get all issues you have access to that belong to the sprint from the board. Issue returned from this resource contains additional fields like: sprint, closedSprints, flagged and epic. Issues are returned ordered by rank. JQL order has higher priority than default rank. + */ + get: operations["getBoardIssuesForSprint"]; + }; + "/rest/agile/1.0/board/{boardId}/version": { + /** + * Get all versions + * @description Returns all versions from a board, for a given board ID. This only includes versions that the user has permission to view. Note, if the user does not have permission to view the board, no versions will be returned at all. Returned versions are ordered by the name of the project from which they belong and then by sequence defined by user. + */ + get: operations["getAllVersions"]; + }; + "/rest/agile/1.0/epic/none/issue": { + /** + * Get issues without epic + * @description Returns all issues that do not belong to any epic. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. **Note:** If you are querying a next-gen project, do not use this operation. Instead, search for issues that don't belong to an epic by using the [Search for issues using JQL](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-get) operation in the Jira platform REST API. Build your JQL query using the `parent is empty` clause. For more information on the `parent` JQL field, see [Advanced searching](https://confluence.atlassian.com/x/dAiiLQ#Advancedsearching-fieldsreference-Parent). + */ + get: operations["getIssuesWithoutEpic"]; + /** + * Remove issues from epic + * @description Removes issues from epics. The user needs to have the edit issue permission for all issue they want to remove from epics. The maximum number of issues that can be moved in one operation is 50. **Note:** This operation does not work for epics in next-gen projects. Instead, update the issue using `\{ fields: \{ parent: \{\} \} \}` + */ + post: operations["removeIssuesFromEpic"]; + }; + "/rest/agile/1.0/epic/{epicIdOrKey}": { + /** + * Get epic + * @description Returns the epic for a given epic ID. This epic will only be returned if the user has permission to view it. **Note:** This operation does not work for epics in next-gen projects. + */ + get: operations["getEpic"]; + /** + * Partially update epic + * @description Performs a partial update of the epic. A partial update means that fields not present in the request JSON will not be updated. Valid values for color are `color_1` to `color_9`. **Note:** This operation does not work for epics in next-gen projects. + */ + post: operations["partiallyUpdateEpic"]; + }; + "/rest/agile/1.0/epic/{epicIdOrKey}/issue": { + /** + * Get issues for epic + * @description Returns all issues that belong to the epic, for the given epic ID. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. **Note:** If you are querying a next-gen project, do not use this operation. Instead, search for issues that belong to an epic by using the [Search for issues using JQL](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-get) operation in the Jira platform REST API. Build your JQL query using the `parent` clause. For more information on the `parent` JQL field, see [Advanced searching](https://confluence.atlassian.com/x/dAiiLQ#Advancedsearching-fieldsreference-Parent). + */ + get: operations["getIssuesForEpic"]; + /** + * Move issues to epic + * @description Moves issues to an epic, for a given epic id. Issues can be only in a single epic at the same time. That means that already assigned issues to an epic, will not be assigned to the previous epic anymore. The user needs to have the edit issue permission for all issue they want to move and to the epic. The maximum number of issues that can be moved in one operation is 50. **Note:** This operation does not work for epics in next-gen projects. + */ + post: operations["moveIssuesToEpic"]; + }; + "/rest/agile/1.0/epic/{epicIdOrKey}/rank": { + /** + * Rank epics + * @description Moves (ranks) an epic before or after a given epic. + * + * If rankCustomFieldId is not defined, the default rank field will be used. + * + * **Note:** This operation does not work for epics in next-gen projects. + */ + put: operations["rankEpics"]; + }; + "/rest/agile/1.0/issue/rank": { + /** + * Rank issues + * @description Moves (ranks) issues before or after a given issue. At most 50 issues may be ranked at once. + * + * This operation may fail for some issues, although this will be rare. In that case the 207 status code is returned for the whole response and detailed information regarding each issue is available in the response body. + * + * If rankCustomFieldId is not defined, the default rank field will be used. + */ + put: operations["rankIssues"]; + }; + "/rest/agile/1.0/issue/{issueIdOrKey}": { + /** + * Get issue + * @description Returns a single issue, for a given issue ID or issue key. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. + */ + get: operations["getIssue"]; + }; + "/rest/agile/1.0/issue/{issueIdOrKey}/estimation": { + /** + * Get issue estimation for board + * @description Returns the estimation of the issue and a fieldId of the field that is used for it. `boardId` param is required. This param determines which field will be updated on a issue. + * + * Original time internally stores and returns the estimation as a number of seconds. + * + * The field used for estimation on the given board can be obtained from [board configuration resource](#agile/1.0/board-getConfiguration). More information about the field are returned by [edit meta resource](#api-rest-api-3-issue-getEditIssueMeta) or [field resource](#api-rest-api-3-field-get). + */ + get: operations["getIssueEstimationForBoard"]; + /** + * Estimate issue for board + * @description Updates the estimation of the issue. boardId param is required. This param determines which field will be updated on a issue. + * + * Note that this resource changes the estimation field of the issue regardless of appearance the field on the screen. + * + * Original time tracking estimation field accepts estimation in formats like "1w", "2d", "3h", "20m" or number which represent number of minutes. However, internally the field stores and returns the estimation as a number of seconds. + * + * The field used for estimation on the given board can be obtained from [board configuration resource](#agile/1.0/board-getConfiguration). More information about the field are returned by [edit meta resource](#api-rest-api-3-issue-issueIdOrKey-editmeta-get) or [field resource](#api-rest-api-3-field-get). + */ + put: operations["estimateIssueForBoard"]; + }; + "/rest/agile/1.0/sprint": { + /** + * Create sprint + * @description Creates a future sprint. Sprint name and origin board id are required. Start date, end date, and goal are optional. + * + * Note that the sprint name is trimmed. Also, when starting sprints from the UI, the "endDate" set through this call is ignored and instead the last sprint's duration is used to fill the form. + */ + post: operations["createSprint"]; + }; + "/rest/agile/1.0/sprint/{sprintId}": { + /** + * Get sprint + * @description Returns the sprint for a given sprint ID. The sprint will only be returned if the user can view the board that the sprint was created on, or view at least one of the issues in the sprint. + */ + get: operations["getSprint"]; + /** + * Update sprint + * @description Performs a full update of a sprint. A full update means that the result will be exactly the same as the request body. Any fields not present in the request JSON will be set to null. + * + * Notes: + * + * * Sprints that are in a closed state cannot be updated. + * * A sprint can be started by updating the state to 'active'. This requires the sprint to be in the 'future' state and have a startDate and endDate set. + * * A sprint can be completed by updating the state to 'closed'. This action requires the sprint to be in the 'active' state. This sets the completeDate to the time of the request. + * * Other changes to state are not allowed. + * * The completeDate field cannot be updated manually. + */ + put: operations["updateSprint"]; + /** + * Partially update sprint + * @description Performs a partial update of a sprint. A partial update means that fields not present in the request JSON will not be updated. + * + * Notes: + * + * * Sprints that are in a closed state cannot be updated. + * * A sprint can be started by updating the state to 'active'. This requires the sprint to be in the 'future' state and have a startDate and endDate set. + * * A sprint can be completed by updating the state to 'closed'. This action requires the sprint to be in the 'active' state. This sets the completeDate to the time of the request. + * * Other changes to state are not allowed. + * * The completeDate field cannot be updated manually. + */ + post: operations["partiallyUpdateSprint"]; + /** + * Delete sprint + * @description Deletes a sprint. Once a sprint is deleted, all open issues in the sprint will be moved to the backlog. + */ + delete: operations["deleteSprint"]; + }; + "/rest/agile/1.0/sprint/{sprintId}/issue": { + /** + * Get issues for sprint + * @description Returns all issues in a sprint, for a given sprint ID. This only includes issues that the user has permission to view. By default, the returned issues are ordered by rank. + */ + get: operations["getIssuesForSprint"]; + /** + * Move issues to sprint and rank + * @description Moves issues to a sprint, for a given sprint ID. Issues can only be moved to open or active sprints. The maximum number of issues that can be moved in one operation is 50. + */ + post: operations["moveIssuesToSprintAndRank"]; + }; + "/rest/agile/1.0/sprint/{sprintId}/properties": { + /** + * Get properties keys + * @description Returns the keys of all properties for the sprint identified by the id. The user who retrieves the property keys is required to have permissions to view the sprint. + */ + get: operations["getPropertiesKeys"]; + }; + "/rest/agile/1.0/sprint/{sprintId}/properties/{propertyKey}": { + /** + * Get property + * @description Returns the value of the property with a given key from the sprint identified by the provided id. The user who retrieves the property is required to have permissions to view the sprint. + */ + get: operations["getProperty"]; + /** + * Set property + * @description Sets the value of the specified sprint's property. + * + * You can use this resource to store a custom data against the sprint identified by the id. The user who stores the data is required to have permissions to modify the sprint. + */ + put: operations["setProperty"]; + /** + * Delete property + * @description Removes the property from the sprint identified by the id. Ths user removing the property is required to have permissions to modify the sprint. + */ + delete: operations["deleteProperty"]; + }; + "/rest/agile/1.0/sprint/{sprintId}/swap": { + /** + * Swap sprint + * @description Swap the position of the sprint with the second sprint. + */ + post: operations["swapSprint"]; + }; + "/rest/devinfo/0.10/bulk": { + /** + * Store development information + * @description Stores development information provided in the request to make it available when viewing issues in Jira. Existing repository and entity data for the same ID will be replaced if the updateSequenceId of existing data is less than the incoming data. Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are available within a short period of time, but may take some time during peak load and/or maintenance times. + */ + post: operations["storeDevelopmentInformation"]; + }; + "/rest/devinfo/0.10/repository/{repositoryId}": { + /** + * Get repository + * @description For the specified repository ID, retrieves the repository and the most recent 400 development information entities. The result will be what is currently stored, ignoring any pending updates or deletes. + */ + get: operations["getRepository"]; + /** + * Delete repository + * @description Deletes the repository data stored by the given ID and all related development information entities. Deletion is performed asynchronously. + */ + delete: operations["deleteRepository"]; + }; + "/rest/devinfo/0.10/bulkByProperties": { + /** + * Delete development information by properties + * @description Deletes development information entities which have all the provided properties. Entities will be deleted that match ALL of the properties (i.e. treated as an AND). For example if request is `DELETE bulk?accountId=123&projectId=ABC` entities which have properties `accountId=123` and `projectId=ABC` will be deleted. Special property `_updateSequenceId` can be used to delete all entities with updateSequenceId less or equal than the value specified. In addition to the optional `_updateSequenceId`, one or more query params must be supplied to specify properties to delete by. Deletion is performed asynchronously: specified entities will eventually be removed from Jira. + */ + delete: operations["deleteByProperties"]; + }; + "/rest/devinfo/0.10/existsByProperties": { + /** + * Check if data exists for the supplied properties + * @description Checks if development information which have all the provided properties exists. For example, if request is `GET existsByProperties?accountId=123&projectId=ABC` then result will be positive only if there is at least one entity or repository with both properties `accountId=123` and `projectId=ABC`. Special property `_updateSequenceId` can be used to filter all entities with updateSequenceId less or equal than the value specified. In addition to the optional `_updateSequenceId`, one or more query params must be supplied to specify properties to search by. + */ + get: operations["existsByProperties"]; + }; + "/rest/devinfo/0.10/repository/{repositoryId}/{entityType}/{entityId}": { + /** + * Delete development information entity + * @description Deletes particular development information entity. Deletion is performed asynchronously. + */ + delete: operations["deleteEntity"]; + }; + "/rest/featureflags/0.1/bulk": { + /** + * Submit Feature Flag data + * @description Update / insert Feature Flag data. + * + * Feature Flags are identified by their ID, and existing Feature Flag data for the same ID will be replaced if it exists and the updateSequenceId of existing data is less than the incoming data. + * + * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are available within a short period of time, but may take some time during peak load and/or maintenance times. The getFeatureFlagById operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple Feature Flags being submitted in one request, each is validated individually prior to submission. Details of which Feature Flags failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + post: operations["submitFeatureFlags"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + }; + }; + "/rest/featureflags/0.1/bulkByProperties": { + /** + * Delete Feature Flags by Property + * @description Bulk delete all Feature Flags that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. Optional param `_updateSequenceId` is no longer supported. + * If more than one Property is provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). + * See the documentation for the submitFeatureFlags operation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456 + * + * Deletion is performed asynchronously. The getFeatureFlagById operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteFeatureFlagsByProperty"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + }; + }; + "/rest/featureflags/0.1/flag/{featureFlagId}": { + /** + * Get a Feature Flag by ID + * @description Retrieve the currently stored Feature Flag data for the given ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getFeatureFlagById"]; + /** + * Delete a Feature Flag by ID + * @description Delete the Feature Flag data currently stored for the given ID. + * + * Deletion is performed asynchronously. The getFeatureFlagById operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteFeatureFlagById"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + }; + }; + "/rest/deployments/0.1/bulk": { + /** + * Submit deployment data + * @description Update / insert deployment data. + * + * Deployments are identified by the combination of `pipelineId`, `environmentId` and `deploymentSequenceNumber`, and existing deployment data for the same deployment will be replaced if it exists and the `updateSequenceNumber` of existing data is less than the incoming data. + * + * Submissions are processed asynchronously. Submitted data will eventually be available in Jira. Most updates are available within a short period of time, but may take some time during peak load and/or maintenance times. The `getDeploymentByKey` operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple deployments being submitted in one request, each is validated individually prior to submission. Details of which deployments failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + post: operations["submitDeployments"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/deployments/0.1/bulkByProperties": { + /** + * Delete deployments by Property + * @description Bulk delete all deployments that match the given request. + * + * One or more query params must be supplied to specify the Properties to delete by. Optional param `_updateSequenceNumber` is no longer supported. + * If more than one Property is provided, data will be deleted that matches ALL of the Properties (i.e. treated as AND). + * See the documentation for the `submitDeployments` operation for more details. + * + * Example operation: DELETE /bulkByProperties?accountId=account-123&createdBy=user-456 + * + * Deletion is performed asynchronously. The `getDeploymentByKey` operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteDeploymentsByProperty"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/deployments/0.1/pipelines/{pipelineId}/environments/{environmentId}/deployments/{deploymentSequenceNumber}": { + /** + * Get a deployment by key + * @description Retrieve the currently stored deployment data for the given `pipelineId`, `environmentId` and `deploymentSequenceNumber` combination. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getDeploymentByKey"]; + /** + * Delete a deployment by key + * @description Delete the currently stored deployment data for the given `pipelineId`, `environmentId` and `deploymentSequenceNumber` combination. + * + * Deletion is performed asynchronously. The `getDeploymentByKey` operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteDeploymentByKey"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/deployments/0.1/pipelines/{pipelineId}/environments/{environmentId}/deployments/{deploymentSequenceNumber}/gating-status": { + /** + * Get deployment gating status by key + * @description Retrieve the Deployment gating status for the given `pipelineId + environmentId + deploymentSequenceNumber` combination. + * Only apps that define the `jiraDeploymentInfoProvider` module can access this resource. This resource requires the 'READ' scope. + */ + get: operations["getDeploymentGatingStatusByKey"]; + }; + "/rest/builds/0.1/bulk": { + /** + * Submit build data + * @description Update / insert builds data. + * + * Builds are identified by the combination of `pipelineId` and `buildNumber`, and existing build data for the same + * build will be replaced if it exists and the `updateSequenceNumber` of the existing data is less than the + * incoming data. + * + * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are + * available within a short period of time, but may take some time during peak load and/or maintenance times. + * The `getBuildByKey` operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple builds being submitted in one request, each is validated individually prior to + * submission. Details of which build failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + post: operations["submitBuilds"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/builds/0.1/bulkByProperties": { + /** + * Delete builds by Property + * @description Bulk delete all builds data that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. + * Optional param `_updateSequenceNumber` is no longer supported. + * If more than one Property is provided, data will be deleted that matches ALL of the + * Properties (e.g. treated as an AND). + * + * See the documentation for the `submitBuilds` operation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&repoId=repo-345 + * + * Deletion is performed asynchronously. The `getBuildByKey` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteBuildsByProperty"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/builds/0.1/pipelines/{pipelineId}/builds/{buildNumber}": { + /** + * Get a build by key + * @description Retrieve the currently stored build data for the given `pipelineId` and `buildNumber` combination. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getBuildByKey"]; + /** + * Delete a build by key + * @description Delete the build data currently stored for the given `pipelineId` and `buildNumber` combination. + * + * Deletion is performed asynchronously. The `getBuildByKey` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteBuildByKey"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/remotelinks/1.0/bulk": { + /** + * Submit Remote Link data + * @description Update / insert Remote Link data. + * + * Remote Links are identified by their ID, existing Remote Link data for the same ID will be replaced if it + * exists and the updateSequenceId of existing data is less than the incoming data. + * + * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are + * available within a short period of time, but may take some time during peak load and/or maintenance times. + * The `getRemoteLinkById` operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple Remote Links being submitted in one request, each is validated individually prior to + * submission. Details of which Remote LInk failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module can access this resource. This resource + * requires the 'WRITE' scope for Connect apps. + */ + post: operations["submitRemoteLinks"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/remotelinks/1.0/bulkByProperties": { + /** + * Delete Remote Links by Property + * @description Bulk delete all Remote Links data that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. + * Optional param `_updateSequenceNumber` is no longer supported. If more than one Property is provided, + * data will be deleted that matches ALL of the Properties (e.g. treated as an AND). + * + * See the documentation for the `submitRemoteLinks` operation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&repoId=repo-345 + * + * Deletion is performed asynchronously. The `getRemoteLinkById` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteRemoteLinksByProperty"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that + * corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/remotelinks/1.0/remotelink/{remoteLinkId}": { + /** + * Get a Remote Link by ID + * @description Retrieve the currently stored Remote Link data for the given ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getRemoteLinkById"]; + /** + * Delete a Remote Link by ID + * @description Delete the Remote Link data currently stored for the given ID. + * + * Deletion is performed asynchronously. The `getRemoteLinkById` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteRemoteLinkById"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that + * corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/security/1.0/linkedWorkspaces/bulk": { + /** + * Submit Security Workspaces to link + * @description Insert Security Workspace IDs to establish a relationship between them and the Jira site the app is installed on. If a relationship between the workspace ID and Jira already exists then the workspace ID will be ignored and Jira will process the rest of the entries. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + post: operations["submitWorkspaces"]; + /** + * Delete linked Security Workspaces + * @description Bulk delete all linked Security Workspaces that match the given request. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + * + * e.g. DELETE /bulk?workspaceIds=111-222-333,444-555-666 + */ + delete: operations["deleteLinkedWorkspaces"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read [understanding jwt](https://developer.atlassian.com/blog/2015/01/understanding-jwt/) for more details. + */ + Authorization: string; + }; + }; + }; + "/rest/security/1.0/linkedWorkspaces": { + /** + * Get linked Security Workspaces + * @description Retrieve all Security Workspaces linked with the Jira site. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getLinkedWorkspaces"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + }; + "/rest/security/1.0/linkedWorkspaces/{workspaceId}": { + /** + * Get a linked Security Workspace by ID + * @description Retrieve a specific Security Workspace linked to the Jira site for the given workspace ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getLinkedWorkspaceById"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + }; + "/rest/security/1.0/bulk": { + /** + * Submit Vulnerability data + * @description Update / Insert Vulnerability data. + * + * Vulnerabilities are identified by their ID, any existing Vulnerability data with the same ID will be replaced if it exists and the updateSequenceNumber of the existing data is less than the incoming data. + * + * Submissions are performed asynchronously. Most updates are available within a short period of time but may take some time during peak load and/or maintenance times. The GET vulnerability endpoint can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple Vulnerabilities being submitted in one request, each is validated individually prior to submission. Details of Vulnerabilities that failed submission (if any) are available in the response object. + * + * A maximum of 1000 vulnerabilities can be submitted in one request. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + post: operations["submitVulnerabilities"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + }; + "/rest/security/1.0/bulkByProperties": { + /** + * Delete Vulnerabilities by Property + * @description Bulk delete all Vulnerabilities that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. + * If more than one Property is provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). + * Read the POST bulk endpoint documentation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456 + * + * Deletion is performed asynchronously. The GET vulnerability endpoint can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteVulnerabilitiesByProperty"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + }; + "/rest/security/1.0/vulnerability/{vulnerabilityId}": { + /** + * Get a Vulnerability by ID + * @description Retrieve the currently stored Vulnerability data for the given ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getVulnerabilityById"]; + /** + * Delete a Vulnerability by ID + * @description Delete the Vulnerability data currently stored for the given ID. + * + * Deletion is performed asynchronously. The GET vulnerability endpoint can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteVulnerabilityById"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + }; +} +export type webhooks = Record; +export interface components { + schemas: { + StringList: Record; + IssueAssignRequestBean: { + issues?: string[]; + }; + EpicRankRequestBean: { + rankBeforeEpic?: string; + rankAfterEpic?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + ColorBean: { + /** @enum {string} */ + key?: "color_1" | "color_2" | "color_3" | "color_4" | "color_5" | "color_6" | "color_7" | "color_8" | "color_9" | "color_10" | "color_11" | "color_12" | "color_13" | "color_14"; + }; + EpicUpdateBean: { + name?: string; + summary?: string; + color?: { + /** @enum {string} */ + key?: "color_1" | "color_2" | "color_3" | "color_4" | "color_5" | "color_6" | "color_7" | "color_8" | "color_9" | "color_10" | "color_11" | "color_12" | "color_13" | "color_14"; + }; + done?: boolean; + }; + ReportBean: Record; + ReportsResponseBean: { + reports?: Record[]; + }; + SprintCreateBean: { + name?: string; + startDate?: string; + endDate?: string; + /** Format: int64 */ + originBoardId?: number; + goal?: string; + }; + SprintBean: { + /** Format: int64 */ + id?: number; + /** Format: uri */ + self?: string; + state?: string; + name?: string; + startDate?: string; + endDate?: string; + completeDate?: string; + createdDate?: string; + /** Format: int64 */ + originBoardId?: number; + goal?: string; + }; + IssueRankRequestBean: { + issues?: string[]; + rankBeforeIssue?: string; + rankAfterIssue?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + SprintSwapBean: { + /** Format: int64 */ + sprintToSwapWith?: number; + }; + PageBeanQuickFilterBean: { + /** Format: int32 */ + maxResults?: number; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + isLast?: boolean; + values?: { + /** Format: int64 */ + id?: number; + /** Format: int64 */ + boardId?: number; + name?: string; + jql?: string; + description?: string; + /** Format: int32 */ + position?: number; + }[]; + }; + QuickFilterBean: { + /** Format: int64 */ + id?: number; + /** Format: int64 */ + boardId?: number; + name?: string; + jql?: string; + description?: string; + /** Format: int32 */ + position?: number; + }; + /** @description Details about a board. */ + Board: { + /** + * Format: int64 + * @description The ID of the board. + */ + id?: number; + /** + * Format: uri + * @description The URL of the board. + */ + self?: string; + /** @description The name of the board. */ + name?: string; + /** @description The type the board. */ + type?: string; + admins?: { + users?: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }[]; + groups?: { + name?: string; + /** Format: uri */ + self?: string; + }[]; + }; + /** @description The container that the board is located in. */ + location?: { + /** Format: int64 */ + projectId?: number; + /** Format: int64 */ + userId?: number; + userAccountId?: string; + displayName?: string; + projectName?: string; + projectKey?: string; + projectTypeKey?: string; + /** Format: uri */ + avatarURI?: string; + name?: string; + }; + /** @description Whether the board can be edited. */ + canEdit?: boolean; + /** @description Whether the board is private. */ + isPrivate?: boolean; + /** @description Whether the board is selected as a favorite. */ + favourite?: boolean; + }; + /** @description The users and groups who own the board. */ + BoardAdminsBean: { + users?: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }[]; + groups?: { + name?: string; + /** Format: uri */ + self?: string; + }[]; + }; + /** @description The container that the board is located in. */ + BoardLocationBean: { + /** Format: int64 */ + projectId?: number; + /** Format: int64 */ + userId?: number; + userAccountId?: string; + displayName?: string; + projectName?: string; + projectKey?: string; + projectTypeKey?: string; + /** Format: uri */ + avatarURI?: string; + name?: string; + }; + GroupBean: { + name?: string; + /** Format: uri */ + self?: string; + }; + PageBeanBoard: { + /** Format: int32 */ + maxResults?: number; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + isLast?: boolean; + values?: { + /** + * Format: int64 + * @description The ID of the board. + */ + id?: number; + /** + * Format: uri + * @description The URL of the board. + */ + self?: string; + /** @description The name of the board. */ + name?: string; + /** @description The type the board. */ + type?: string; + admins?: { + users?: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }[]; + groups?: { + name?: string; + /** Format: uri */ + self?: string; + }[]; + }; + /** @description The container that the board is located in. */ + location?: { + /** Format: int64 */ + projectId?: number; + /** Format: int64 */ + userId?: number; + userAccountId?: string; + displayName?: string; + projectName?: string; + projectKey?: string; + projectTypeKey?: string; + /** Format: uri */ + avatarURI?: string; + name?: string; + }; + /** @description Whether the board can be edited. */ + canEdit?: boolean; + /** @description Whether the board is private. */ + isPrivate?: boolean; + /** @description Whether the board is selected as a favorite. */ + favourite?: boolean; + }[]; + }; + UserBean: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }; + UserBeanAvatarUrls: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + BoardFilterBean: { + /** Format: int64 */ + id?: number; + /** Format: uri */ + self?: string; + name?: string; + }; + PageBeanBoardFilterBean: { + /** Format: int32 */ + maxResults?: number; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + isLast?: boolean; + values?: { + /** Format: int64 */ + id?: number; + /** Format: uri */ + self?: string; + name?: string; + }[]; + }; + AvatarUrlsBean: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + /** @description A change item. */ + ChangeDetails: { + /** @description The name of the field changed. */ + field?: string; + /** @description The type of the field changed. */ + fieldtype?: string; + /** @description The ID of the field changed. */ + fieldId?: string; + /** @description The details of the original value. */ + from?: string; + /** @description The details of the original value as a string. */ + fromString?: string; + /** @description The details of the new value. */ + to?: string; + /** @description The details of the new value as a string. */ + toString?: string; + }; + /** @description A changelog. */ + Changelog: { + /** @description The ID of the changelog. */ + id?: string; + /** @description The user who made the change. */ + author?: { + /** @description The URL of the user. */ + self?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The email address of the user. Depending on the user’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + /** @description The display name of the user. Depending on the user’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null. */ + timeZone?: string; + /** @description The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user) */ + accountType?: string; + }; + /** + * Format: date-time + * @description The date on which the change took place. + */ + created?: string; + /** @description The list of items changed. */ + items?: readonly { + /** @description The name of the field changed. */ + field?: string; + /** @description The type of the field changed. */ + fieldtype?: string; + /** @description The ID of the field changed. */ + fieldId?: string; + /** @description The details of the original value. */ + from?: string; + /** @description The details of the original value as a string. */ + fromString?: string; + /** @description The details of the new value. */ + to?: string; + /** @description The details of the new value as a string. */ + toString?: string; + }[]; + /** @description The history metadata associated with the changed. */ + historyMetadata?: { + /** @description The type of the history record. */ + type?: string; + /** @description The description of the history record. */ + description?: string; + /** @description The description key of the history record. */ + descriptionKey?: string; + /** @description The activity described in the history record. */ + activityDescription?: string; + /** @description The key of the activity described in the history record. */ + activityDescriptionKey?: string; + /** @description The description of the email address associated the history record. */ + emailDescription?: string; + /** @description The description key of the email address associated the history record. */ + emailDescriptionKey?: string; + /** @description Details of the user whose action created the history record. */ + actor?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the system that generated the history record. */ + generator?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the cause that triggered the creation the history record. */ + cause?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Additional arbitrary information about the history record. */ + extraData?: { + [key: string]: string; + }; + [key: string]: unknown; + }; + }; + /** @description The metadata describing an issue field. */ + FieldMetadata: { + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description The name of the field. */ + name: string; + /** @description The key of the field. */ + key: string; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description Details of issue history metadata. */ + HistoryMetadata: { + /** @description The type of the history record. */ + type?: string; + /** @description The description of the history record. */ + description?: string; + /** @description The description key of the history record. */ + descriptionKey?: string; + /** @description The activity described in the history record. */ + activityDescription?: string; + /** @description The key of the activity described in the history record. */ + activityDescriptionKey?: string; + /** @description The description of the email address associated the history record. */ + emailDescription?: string; + /** @description The description key of the email address associated the history record. */ + emailDescriptionKey?: string; + /** @description Details of the user whose action created the history record. */ + actor?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the system that generated the history record. */ + generator?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the cause that triggered the creation the history record. */ + cause?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Additional arbitrary information about the history record. */ + extraData?: { + [key: string]: string; + }; + [key: string]: unknown; + }; + /** @description Details of user or system associated with a issue history metadata item. */ + HistoryMetadataParticipant: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + IncludedFields: { + included?: string[]; + actuallyIncluded?: string[]; + excluded?: string[]; + }; + /** @description Details about an issue. */ + IssueBean: { + /** @description Expand options that include additional issue details in the response. */ + expand?: string; + /** @description The ID of the issue. */ + id?: string; + /** + * Format: uri + * @description The URL of the issue details. + */ + self?: string; + /** @description The key of the issue. */ + key?: string; + /** @description The rendered value of each field present on the issue. */ + renderedFields?: { + [key: string]: unknown; + }; + /** @description Details of the issue properties identified in the request. */ + properties?: { + [key: string]: unknown; + }; + /** @description The ID and name of each field present on the issue. */ + names?: { + [key: string]: string; + }; + /** @description The schema describing each field present on the issue. */ + schema?: { + [key: string]: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + }; + /** @description The transitions that can be performed on the issue. */ + transitions?: readonly { + /** @description The ID of the issue transition. Required when specifying a transition to undertake. */ + id?: string; + /** @description The name of the issue transition. */ + name?: string; + /** @description Details of the issue status after the transition. */ + to?: { + /** @description The URL of the status. */ + self?: string; + /** @description The description of the status. */ + description?: string; + /** @description The URL of the icon used to represent the status. */ + iconUrl?: string; + /** @description The name of the status. */ + name?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The category assigned to the status. */ + statusCategory?: { + /** @description The URL of the status category. */ + self?: string; + /** + * Format: int64 + * @description The ID of the status category. + */ + id?: number; + /** @description The key of the status category. */ + key?: string; + /** @description The name of the color used to represent the status category. */ + colorName?: string; + /** @description The name of the status category. */ + name?: string; + [key: string]: unknown; + }; + [key: string]: unknown; + }; + /** @description Whether there is a screen associated with the issue transition. */ + hasScreen?: boolean; + /** @description Whether the issue transition is global, that is, the transition is applied to issues regardless of their status. */ + isGlobal?: boolean; + /** @description Whether this is the initial issue transition for the workflow. */ + isInitial?: boolean; + /** @description Whether the transition is available to be performed. */ + isAvailable?: boolean; + /** @description Whether the issue has to meet criteria before the issue transition is applied. */ + isConditional?: boolean; + /** @description Details of the fields associated with the issue transition screen. Use this information to populate `fields` and `update` in a transition request. */ + fields?: { + [key: string]: { + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description The name of the field. */ + name: string; + /** @description The key of the field. */ + key: string; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + }; + }; + /** @description Expand options that include additional transition details in the response. */ + expand?: string; + looped?: boolean; + [key: string]: unknown; + }[]; + /** @description The operations that can be performed on the issue. */ + operations?: components["schemas"]["Operations"]; + /** @description The metadata for the fields on the issue that can be amended. */ + editmeta?: { + fields?: { + [key: string]: { + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description The name of the field. */ + name: string; + /** @description The key of the field. */ + key: string; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + }; + }; + }; + /** @description Details of changelogs associated with the issue. */ + changelog?: { + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + /** @description The list of changelogs. */ + histories?: readonly { + /** @description The ID of the changelog. */ + id?: string; + /** @description The user who made the change. */ + author?: { + /** @description The URL of the user. */ + self?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The email address of the user. Depending on the user’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + /** @description The display name of the user. Depending on the user’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null. */ + timeZone?: string; + /** @description The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user) */ + accountType?: string; + }; + /** + * Format: date-time + * @description The date on which the change took place. + */ + created?: string; + /** @description The list of items changed. */ + items?: readonly { + /** @description The name of the field changed. */ + field?: string; + /** @description The type of the field changed. */ + fieldtype?: string; + /** @description The ID of the field changed. */ + fieldId?: string; + /** @description The details of the original value. */ + from?: string; + /** @description The details of the original value as a string. */ + fromString?: string; + /** @description The details of the new value. */ + to?: string; + /** @description The details of the new value as a string. */ + toString?: string; + }[]; + /** @description The history metadata associated with the changed. */ + historyMetadata?: { + /** @description The type of the history record. */ + type?: string; + /** @description The description of the history record. */ + description?: string; + /** @description The description key of the history record. */ + descriptionKey?: string; + /** @description The activity described in the history record. */ + activityDescription?: string; + /** @description The key of the activity described in the history record. */ + activityDescriptionKey?: string; + /** @description The description of the email address associated the history record. */ + emailDescription?: string; + /** @description The description key of the email address associated the history record. */ + emailDescriptionKey?: string; + /** @description Details of the user whose action created the history record. */ + actor?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the system that generated the history record. */ + generator?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the cause that triggered the creation the history record. */ + cause?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Additional arbitrary information about the history record. */ + extraData?: { + [key: string]: string; + }; + [key: string]: unknown; + }; + }[]; + }; + /** @description The versions of each field on the issue. */ + versionedRepresentations?: { + [key: string]: { + [key: string]: unknown; + }; + }; + fieldsToInclude?: { + included?: string[]; + actuallyIncluded?: string[]; + excluded?: string[]; + }; + fields?: { + [key: string]: unknown; + }; + }; + /** @description Details of an issue transition. */ + IssueTransition: { + /** @description The ID of the issue transition. Required when specifying a transition to undertake. */ + id?: string; + /** @description The name of the issue transition. */ + name?: string; + /** @description Details of the issue status after the transition. */ + to?: { + /** @description The URL of the status. */ + self?: string; + /** @description The description of the status. */ + description?: string; + /** @description The URL of the icon used to represent the status. */ + iconUrl?: string; + /** @description The name of the status. */ + name?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The category assigned to the status. */ + statusCategory?: { + /** @description The URL of the status category. */ + self?: string; + /** + * Format: int64 + * @description The ID of the status category. + */ + id?: number; + /** @description The key of the status category. */ + key?: string; + /** @description The name of the color used to represent the status category. */ + colorName?: string; + /** @description The name of the status category. */ + name?: string; + [key: string]: unknown; + }; + [key: string]: unknown; + }; + /** @description Whether there is a screen associated with the issue transition. */ + hasScreen?: boolean; + /** @description Whether the issue transition is global, that is, the transition is applied to issues regardless of their status. */ + isGlobal?: boolean; + /** @description Whether this is the initial issue transition for the workflow. */ + isInitial?: boolean; + /** @description Whether the transition is available to be performed. */ + isAvailable?: boolean; + /** @description Whether the issue has to meet criteria before the issue transition is applied. */ + isConditional?: boolean; + /** @description Details of the fields associated with the issue transition screen. Use this information to populate `fields` and `update` in a transition request. */ + fields?: { + [key: string]: { + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description The name of the field. */ + name: string; + /** @description The key of the field. */ + key: string; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + }; + }; + /** @description Expand options that include additional transition details in the response. */ + expand?: string; + looped?: boolean; + [key: string]: unknown; + }; + /** @description A list of editable field details. */ + IssueUpdateMetadata: { + fields?: { + [key: string]: { + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description The name of the field. */ + name: string; + /** @description The key of the field. */ + key: string; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + }; + }; + }; + /** @description The schema of a field. */ + JsonTypeBean: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description Details a link group, which defines issue operations. */ + LinkGroup: { + id?: string; + styleClass?: string; + /** @description Details about the operations available in this version. */ + header?: { + id?: string; + styleClass?: string; + iconClass?: string; + label?: string; + title?: string; + href?: string; + /** Format: int32 */ + weight?: number; + }; + /** Format: int32 */ + weight?: number; + links?: { + id?: string; + styleClass?: string; + iconClass?: string; + label?: string; + title?: string; + href?: string; + /** Format: int32 */ + weight?: number; + }[]; + groups?: components["schemas"]["LinkGroup"][]; + }; + /** @description Details of the operations that can be performed on the issue. */ + Operations: { + /** @description Details of the link groups defining issue operations. */ + linkGroups?: readonly components["schemas"]["LinkGroup"][]; + [key: string]: unknown; + }; + /** @description A page of changelogs. */ + PageOfChangelogs: { + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + /** @description The list of changelogs. */ + histories?: readonly { + /** @description The ID of the changelog. */ + id?: string; + /** @description The user who made the change. */ + author?: { + /** @description The URL of the user. */ + self?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The email address of the user. Depending on the user’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + /** @description The display name of the user. Depending on the user’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null. */ + timeZone?: string; + /** @description The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user) */ + accountType?: string; + }; + /** + * Format: date-time + * @description The date on which the change took place. + */ + created?: string; + /** @description The list of items changed. */ + items?: readonly { + /** @description The name of the field changed. */ + field?: string; + /** @description The type of the field changed. */ + fieldtype?: string; + /** @description The ID of the field changed. */ + fieldId?: string; + /** @description The details of the original value. */ + from?: string; + /** @description The details of the original value as a string. */ + fromString?: string; + /** @description The details of the new value. */ + to?: string; + /** @description The details of the new value as a string. */ + toString?: string; + }[]; + /** @description The history metadata associated with the changed. */ + historyMetadata?: { + /** @description The type of the history record. */ + type?: string; + /** @description The description of the history record. */ + description?: string; + /** @description The description key of the history record. */ + descriptionKey?: string; + /** @description The activity described in the history record. */ + activityDescription?: string; + /** @description The key of the activity described in the history record. */ + activityDescriptionKey?: string; + /** @description The description of the email address associated the history record. */ + emailDescription?: string; + /** @description The description key of the email address associated the history record. */ + emailDescriptionKey?: string; + /** @description Details of the user whose action created the history record. */ + actor?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the system that generated the history record. */ + generator?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the cause that triggered the creation the history record. */ + cause?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Additional arbitrary information about the history record. */ + extraData?: { + [key: string]: string; + }; + [key: string]: unknown; + }; + }[]; + }; + /** @description The result of a JQL search. */ + SearchResults: { + /** @description Expand options that include additional search result details in the response. */ + expand?: string; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + /** @description The list of issues found by the search. */ + issues?: readonly components["schemas"]["IssueBean"][]; + /** @description Any warnings related to the JQL query. */ + warningMessages?: readonly string[]; + /** @description The ID and name of each field in the search results. */ + names?: { + [key: string]: string; + }; + /** @description The schema describing the field types in the search results. */ + schema?: { + [key: string]: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + }; + }; + /** @description Details about the operations available in this version. */ + SimpleLink: { + id?: string; + styleClass?: string; + iconClass?: string; + label?: string; + title?: string; + href?: string; + /** Format: int32 */ + weight?: number; + }; + /** @description A status category. */ + StatusCategory: { + /** @description The URL of the status category. */ + self?: string; + /** + * Format: int64 + * @description The ID of the status category. + */ + id?: number; + /** @description The key of the status category. */ + key?: string; + /** @description The name of the color used to represent the status category. */ + colorName?: string; + /** @description The name of the status category. */ + name?: string; + [key: string]: unknown; + }; + /** @description A status. */ + StatusDetails: { + /** @description The URL of the status. */ + self?: string; + /** @description The description of the status. */ + description?: string; + /** @description The URL of the icon used to represent the status. */ + iconUrl?: string; + /** @description The name of the status. */ + name?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The category assigned to the status. */ + statusCategory?: { + /** @description The URL of the status category. */ + self?: string; + /** + * Format: int64 + * @description The ID of the status category. + */ + id?: number; + /** @description The key of the status category. */ + key?: string; + /** @description The name of the color used to represent the status category. */ + colorName?: string; + /** @description The name of the status category. */ + name?: string; + [key: string]: unknown; + }; + [key: string]: unknown; + }; + /** + * @description User details permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions: + * + * * User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank). + * * User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values. + * * User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values. + */ + UserDetails: { + /** @description The URL of the user. */ + self?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The email address of the user. Depending on the user’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + /** @description The display name of the user. Depending on the user’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null. */ + timeZone?: string; + /** @description The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user) */ + accountType?: string; + }; + Entry: { + /** Format: int64 */ + issueId?: number; + issueKey?: string; + /** Format: int32 */ + status?: number; + errors?: string[]; + }; + PartialSuccessBean: { + entries?: { + /** Format: int64 */ + issueId?: number; + issueKey?: string; + /** Format: int32 */ + status?: number; + errors?: string[]; + }[]; + }; + BoardConfigBean: { + /** Format: int64 */ + id?: number; + name?: string; + type?: string; + /** Format: uri */ + self?: string; + location?: { + /** @enum {string} */ + type?: "project" | "user"; + projectKeyOrId?: string; + }; + filter?: { + id?: string; + /** Format: uri */ + self?: string; + }; + subQuery?: { + query?: string; + }; + columnConfig?: { + columns?: { + name?: string; + statuses?: { + id?: string; + /** Format: uri */ + self?: string; + }[]; + /** Format: int32 */ + min?: number; + /** Format: int32 */ + max?: number; + }[]; + constraintType?: string; + }; + estimation?: { + type?: string; + field?: { + fieldId?: string; + displayName?: string; + }; + }; + ranking?: { + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + ColumnBean: { + name?: string; + statuses?: { + id?: string; + /** Format: uri */ + self?: string; + }[]; + /** Format: int32 */ + min?: number; + /** Format: int32 */ + max?: number; + }; + ColumnConfigBean: { + columns?: { + name?: string; + statuses?: { + id?: string; + /** Format: uri */ + self?: string; + }[]; + /** Format: int32 */ + min?: number; + /** Format: int32 */ + max?: number; + }[]; + constraintType?: string; + }; + EstimationConfigBean: { + type?: string; + field?: { + fieldId?: string; + displayName?: string; + }; + }; + EstimationFieldBean: { + fieldId?: string; + displayName?: string; + }; + LocationBean: { + /** @enum {string} */ + type?: "project" | "user"; + projectKeyOrId?: string; + }; + RankingConfigBean: { + /** Format: int64 */ + rankCustomFieldId?: number; + }; + RelationBean: { + id?: string; + /** Format: uri */ + self?: string; + }; + SubqueryBean: { + query?: string; + }; + BoardCreateBean: { + name?: string; + /** @enum {string} */ + type?: "kanban" | "scrum" | "agility"; + /** Format: int64 */ + filterId?: number; + location?: { + /** @enum {string} */ + type?: "project" | "user"; + projectKeyOrId?: string; + }; + }; + EstimationConfigurationBean: { + /** @enum {string} */ + value?: "STORY_POINTS" | "ORIGINAL_ESTIMATE"; + localisedName?: string; + localisedDescription?: string; + }; + FeatureBean: { + /** @enum {string} */ + boardFeature?: "SIMPLE_ROADMAP" | "BACKLOG" | "SPRINTS" | "DEVTOOLS" | "REPORTS" | "ESTIMATION" | "PAGES" | "CODE" | "RELEASES" | "DEPLOYMENTS" | "ISSUE_NAVIGATOR" | "ON_CALL_SCHEDULE" | "BOARD"; + /** Format: int64 */ + boardId?: number; + /** @enum {string} */ + state?: "ENABLED" | "DISABLED" | "COMING_SOON"; + localisedName?: string; + localisedDescription?: string; + learnMoreLink?: string; + imageUri?: string; + /** @enum {string} */ + featureType?: "BASIC" | "ESTIMATION"; + localisedGroup?: string; + permissibleEstimationTypes?: { + /** @enum {string} */ + value?: "STORY_POINTS" | "ORIGINAL_ESTIMATE"; + localisedName?: string; + localisedDescription?: string; + }[]; + featureId?: string; + learnMoreArticleId?: string; + toggleLocked?: boolean; + }; + FeatureResponseBean: { + features?: { + /** @enum {string} */ + boardFeature?: "SIMPLE_ROADMAP" | "BACKLOG" | "SPRINTS" | "DEVTOOLS" | "REPORTS" | "ESTIMATION" | "PAGES" | "CODE" | "RELEASES" | "DEPLOYMENTS" | "ISSUE_NAVIGATOR" | "ON_CALL_SCHEDULE" | "BOARD"; + /** Format: int64 */ + boardId?: number; + /** @enum {string} */ + state?: "ENABLED" | "DISABLED" | "COMING_SOON"; + localisedName?: string; + localisedDescription?: string; + learnMoreLink?: string; + imageUri?: string; + /** @enum {string} */ + featureType?: "BASIC" | "ESTIMATION"; + localisedGroup?: string; + permissibleEstimationTypes?: { + /** @enum {string} */ + value?: "STORY_POINTS" | "ORIGINAL_ESTIMATE"; + localisedName?: string; + localisedDescription?: string; + }[]; + featureId?: string; + learnMoreArticleId?: string; + toggleLocked?: boolean; + }[]; + }; + FeatureToggleRequestBean: { + /** Format: int64 */ + boardId?: number; + feature?: string; + enabling?: boolean; + }; + FieldEditBean: { + value?: string; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} +export type $defs = Record; +export type external = Record; +export interface operations { + /** + * Move issues to backlog + * @description Move issues to the backlog. + * This operation is equivalent to remove future and active sprints from a given set of issues. At most 50 issues may be moved at once. + */ + moveIssuesToBacklog: { + requestBody: { + content: { + /** + * @example { + * "issues": [ + * "PR-1",moveIssuesToBacklog + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to assign issues. */ + 403: { + content: never; + }; + /** @description Returned if sprint does not exist or the user cannot view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Move issues to backlog for board + * @description Move issues to the backlog of a particular board (if they are already on that board). + * This operation is equivalent to remove future and active sprints from a given set of issues if the board has sprints If the board does not have sprints this will put the issues back into the backlog from the board. At most 50 issues may be moved at once. + */ + moveIssuesToBacklogForBoard: { + parameters: { + path: { + boardId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "rankBeforeIssue": "PR-4", + * "rankCustomFieldId": 10521, + * "issues": [ + * "PR-1", + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + rankBeforeIssue?: string; + rankAfterIssue?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returns the list of issue with status of rank operation. */ + 207: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to assign issues. */ + 403: { + content: never; + }; + /** @description Returned if sprint does not exist or the user cannot view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all boards + * @description Returns all boards. This only includes boards that the user has permission to view. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024. + * + * * `read:board-scope:jira-software`, `read:project:jira` + */ + getAllBoards: { + parameters: { + query?: { + /** @description The starting index of the returned boards. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of boards to return per page. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + /** @description Filters results to boards of the specified types. Valid values: scrum, kanban, simple. */ + type?: Record; + /** @description Filters results to boards that match or partially match the specified name. */ + name?: string; + /** @description Filters results to boards that are relevant to a project. Relevance means that the jql filter defined in board contains a reference to a project. */ + projectKeyOrId?: string; + accountIdLocation?: string; + projectLocation?: string; + /** @description Appends private boards to the end of the list. The name and type fields are excluded for security reasons. */ + includePrivate?: boolean; + /** @description If set to true, negate filters used for querying by location. By default false. */ + negateLocationFiltering?: boolean; + /** @description Ordering of the results by a given field. If not provided, values will not be sorted. Valid values: name. */ + orderBy?: "name" | "-name" | "+name"; + /** @description List of fields to expand for each board. Valid values: admins, permissions. */ + expand?: string; + /** @description Filters results to boards that are relevant to a filter. Not supported for next-gen boards. */ + filterId?: number; + }; + }; + responses: { + /** @description Returns the requested boards, at the specified page of the results. */ + 200: { + content: { + "application/json": { + /** Format: int32 */ + maxResults?: number; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + isLast?: boolean; + values?: { + /** + * Format: int64 + * @description The ID of the board. + */ + id?: number; + /** + * Format: uri + * @description The URL of the board. + */ + self?: string; + /** @description The name of the board. */ + name?: string; + /** @description The type the board. */ + type?: string; + admins?: { + users?: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }[]; + groups?: { + name?: string; + /** Format: uri */ + self?: string; + }[]; + }; + /** @description The container that the board is located in. */ + location?: { + /** Format: int64 */ + projectId?: number; + /** Format: int64 */ + userId?: number; + userAccountId?: string; + displayName?: string; + projectName?: string; + projectKey?: string; + projectTypeKey?: string; + /** Format: uri */ + avatarURI?: string; + name?: string; + }; + /** @description Whether the board can be edited. */ + canEdit?: boolean; + /** @description Whether the board is private. */ + isPrivate?: boolean; + /** @description Whether the board is selected as a favorite. */ + favourite?: boolean; + }[]; + }; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have valid license. */ + 403: { + content: never; + }; + }; + }; + /** + * Create board + * @description Creates a new board. Board name, type and filter ID is required. + * + * * `name` \- Must be less than 255 characters. + * * `type` \- Valid values: scrum, kanban + * * `filterId` \- ID of a filter that the user has permissions to view. Note, if the user does not have the 'Create shared objects' permission and tries to create a shared board, a private board will be created instead (remember that board sharing depends on the filter sharing). + * * `location` \- The container that the board will be located in. `location` must include the `type` property (Valid values: project, user). If choosing 'project', then a project must be specified by a `projectKeyOrId` property in `location`. If choosing 'user', the current user is chosen by default. The `projectKeyOrId` property should not be provided. + * + * Note: + * + * * If you want to create a new project with an associated board, use the [Jira platform REST API](https://docs.atlassian.com/jira/REST/latest). For more information, see the [Create project](#api-rest-api-3-project-post) method. The `projectTypeKey` for software boards must be 'software' and the `projectTemplateKey` must be either `com.pyxis.greenhopper.jira:gh-kanban-template` or `com.pyxis.greenhopper.jira:gh-scrum-template`. + * * You can create a filter using the [Jira REST API](https://docs.atlassian.com/jira/REST/latest). For more information, see the [Create filter](#api-rest-api-3-filter-post) method. + * * If you do not ORDER BY the Rank field for the filter of your board, you will not be able to reorder issues on the board. + */ + createBoard: { + requestBody: { + content: { + /** + * @example { + * "filterId": 10040, + * "name": "scrum board", + * "location": { + * "projectKeyOrId": "10000", + * "type": "project" + * }, + * "type": "scrum" + * } + */ + "application/json": { + name?: string; + /** @enum {string} */ + type?: "kanban" | "scrum" | "agility"; + /** Format: int64 */ + filterId?: number; + location?: { + /** @enum {string} */ + type?: "project" | "user"; + projectKeyOrId?: string; + }; + }; + }; + }; + responses: { + /** @description Returns the created board. */ + 201: { + content: { + "application/json": { + /** + * Format: int64 + * @description The ID of the board. + */ + id?: number; + /** + * Format: uri + * @description The URL of the board. + */ + self?: string; + /** @description The name of the board. */ + name?: string; + /** @description The type the board. */ + type?: string; + admins?: { + users?: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }[]; + groups?: { + name?: string; + /** Format: uri */ + self?: string; + }[]; + }; + /** @description The container that the board is located in. */ + location?: { + /** Format: int64 */ + projectId?: number; + /** Format: int64 */ + userId?: number; + userAccountId?: string; + displayName?: string; + projectName?: string; + projectKey?: string; + projectTypeKey?: string; + /** Format: uri */ + avatarURI?: string; + name?: string; + }; + /** @description Whether the board can be edited. */ + canEdit?: boolean; + /** @description Whether the board is private. */ + isPrivate?: boolean; + /** @description Whether the board is selected as a favorite. */ + favourite?: boolean; + }; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + }; + }; + /** + * Get board by filter id + * @description Returns any boards which use the provided filter id. This method can be executed by users without a valid software license in order to find which boards are using a particular filter. + */ + getBoardByFilterId: { + parameters: { + query?: { + /** @description The starting index of the returned boards. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of boards to return per page. Default: 50. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + }; + path: { + /** @description Filters results to boards that are relevant to a filter. Not supported for next-gen boards. */ + filterId: number; + }; + }; + responses: { + /** @description Returns the requested boards, at the specified page of the results. */ + 200: { + content: { + "application/json": { + /** Format: int32 */ + maxResults?: number; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + isLast?: boolean; + values?: { + /** Format: int64 */ + id?: number; + /** Format: uri */ + self?: string; + name?: string; + }[]; + }; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + }; + }; + /** + * Get board + * @description Returns the board for the given board ID. This board will only be returned if the user has permission to view it. Admins without the view permission will see the board as a private one, so will see only a subset of the board's data (board location for instance). + */ + getBoard: { + parameters: { + path: { + /** @description The ID of the requested board. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested board. */ + 200: { + content: { + "application/json": { + /** + * Format: int64 + * @description The ID of the board. + */ + id?: number; + /** + * Format: uri + * @description The URL of the board. + */ + self?: string; + /** @description The name of the board. */ + name?: string; + /** @description The type the board. */ + type?: string; + admins?: { + users?: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }[]; + groups?: { + name?: string; + /** Format: uri */ + self?: string; + }[]; + }; + /** @description The container that the board is located in. */ + location?: { + /** Format: int64 */ + projectId?: number; + /** Format: int64 */ + userId?: number; + userAccountId?: string; + displayName?: string; + projectName?: string; + projectKey?: string; + projectTypeKey?: string; + /** Format: uri */ + avatarURI?: string; + name?: string; + }; + /** @description Whether the board can be edited. */ + canEdit?: boolean; + /** @description Whether the board is private. */ + isPrivate?: boolean; + /** @description Whether the board is selected as a favorite. */ + favourite?: boolean; + }; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete board + * @description Deletes the board. Admin without the view permission can still remove the board. + */ + deleteBoard: { + parameters: { + path: { + /** @description ID of the board to be deleted */ + boardId: number; + }; + }; + responses: { + /** @description Returned if the board has been successfully removed. */ + 204: { + content: never; + }; + /** @description Returned if the user does not a have valid license, or when the user does not have the permission to delete the board, or when the user tried to delete a next-gen board. The user has to be a Jira Administrator or a board administrator to remove the board. Next-gen boards cannot be deleted, because next-gen software projects must have a board. */ + 403: { + content: never; + }; + /** @description Returned if a board with the given ID does not exist or the user does not have the permission to view the board. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issues for backlog + * @description Returns all issues from the board's backlog, for the given board ID. This only includes issues that the user has permission to view. The backlog contains incomplete issues that are not assigned to any future or active sprint. Note, if the user does not have permission to view the board, no issues will be returned at all. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + getIssuesForBacklog: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. Default: 50. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** + * @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. + * Note that `username` and `userkey` can't be used as search terms for this parameter due to privacy reasons. Use `accountId` instead. + */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description This parameter is currently not used. */ + expand?: string; + }; + path: { + /** @description The ID of the board that has the backlog containing the requested issues. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["SearchResults"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get configuration + * @description Get the board configuration. The response contains the following fields: + * + * * `id` \- ID of the board. + * * `name` \- Name of the board. + * * `filter` \- Reference to the filter used by the given board. + * * `location` \- Reference to the container that the board is located in. Includes the container type (Valid values: project, user). + * * `subQuery` (Kanban only) - JQL subquery used by the given board. + * * `columnConfig` \- The column configuration lists the columns for the board, in the order defined in the column configuration. For each column, it shows the issue status mapping as well as the constraint type (Valid values: none, issueCount, issueCountExclSubs) for the min/max number of issues. Note, the last column with statuses mapped to it is treated as the "Done" column, which means that issues in that column will be marked as already completed. + * * `estimation` (Scrum only) - Contains information about type of estimation used for the board. Valid values: none, issueCount, field. If the estimation type is "field", the ID and display name of the field used for estimation is also returned. Note, estimates for an issue can be updated by a PUT /rest/api/3/issue/\{issueIdOrKey\} request, however the fields must be on the screen. "timeoriginalestimate" field will never be on the screen, so in order to update it "originalEstimate" in "timetracking" field should be updated. + * * `ranking` \- Contains information about custom field used for ranking in the given board. + */ + getConfiguration: { + parameters: { + path: { + /** @description The ID of the board for which configuration is requested. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the configuration of the board for given boardId. */ + 200: { + content: { + "application/json": { + /** Format: int64 */ + id?: number; + name?: string; + type?: string; + /** Format: uri */ + self?: string; + location?: { + /** @enum {string} */ + type?: "project" | "user"; + projectKeyOrId?: string; + }; + filter?: { + id?: string; + /** Format: uri */ + self?: string; + }; + subQuery?: { + query?: string; + }; + columnConfig?: { + columns?: { + name?: string; + statuses?: { + id?: string; + /** Format: uri */ + self?: string; + }[]; + /** Format: int32 */ + min?: number; + /** Format: int32 */ + max?: number; + }[]; + constraintType?: string; + }; + estimation?: { + type?: string; + field?: { + fieldId?: string; + displayName?: string; + }; + }; + ranking?: { + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user cannot view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get epics + * @description Returns all epics from the board, for the given board ID. This only includes epics that the user has permission to view. Note, if the user does not have permission to view the board, no epics will be returned at all. + */ + getEpics: { + parameters: { + query?: { + /** @description The starting index of the returned epics. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of epics to return per page. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + /** @description Filters results to epics that are either done or not done. Valid values: true, false. */ + done?: string; + }; + path: { + /** @description The ID of the board that contains the requested epics. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested epics, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issues without epic for board + * @description Returns all issues that do not belong to any epic on a board, for a given board ID. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + getIssuesWithoutEpicForBoard: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** + * @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. + * Note that `username` and `userkey` can't be used as search terms for this parameter due to privacy reasons. Use `accountId` instead. + */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + path: { + /** @description The ID of the board that contains the requested issues. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get board issues for epic + * @description Returns all issues that belong to an epic on the board, for the given epic ID and the board ID. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + getBoardIssuesForEpic: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. Default: 50. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + path: { + /** @description The ID of the board that contains the requested issues. */ + boardId: number; + /** @description The ID of the epic that contains the requested issues. */ + epicId: number; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** Get features for board */ + getFeaturesForBoard: { + parameters: { + path: { + boardId: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": { + features?: { + /** @enum {string} */ + boardFeature?: "SIMPLE_ROADMAP" | "BACKLOG" | "SPRINTS" | "DEVTOOLS" | "REPORTS" | "ESTIMATION" | "PAGES" | "CODE" | "RELEASES" | "DEPLOYMENTS" | "ISSUE_NAVIGATOR" | "ON_CALL_SCHEDULE" | "BOARD"; + /** Format: int64 */ + boardId?: number; + /** @enum {string} */ + state?: "ENABLED" | "DISABLED" | "COMING_SOON"; + localisedName?: string; + localisedDescription?: string; + learnMoreLink?: string; + imageUri?: string; + /** @enum {string} */ + featureType?: "BASIC" | "ESTIMATION"; + localisedGroup?: string; + permissibleEstimationTypes?: { + /** @enum {string} */ + value?: "STORY_POINTS" | "ORIGINAL_ESTIMATE"; + localisedName?: string; + localisedDescription?: string; + }[]; + featureId?: string; + learnMoreArticleId?: string; + toggleLocked?: boolean; + }[]; + }; + }; + }; + }; + }; + /** Toggle features */ + toggleFeatures: { + parameters: { + path: { + boardId: number; + }; + }; + requestBody: { + content: { + "application/json": { + /** Format: int64 */ + boardId?: number; + feature?: string; + enabling?: boolean; + }; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": { + features?: { + /** @enum {string} */ + boardFeature?: "SIMPLE_ROADMAP" | "BACKLOG" | "SPRINTS" | "DEVTOOLS" | "REPORTS" | "ESTIMATION" | "PAGES" | "CODE" | "RELEASES" | "DEPLOYMENTS" | "ISSUE_NAVIGATOR" | "ON_CALL_SCHEDULE" | "BOARD"; + /** Format: int64 */ + boardId?: number; + /** @enum {string} */ + state?: "ENABLED" | "DISABLED" | "COMING_SOON"; + localisedName?: string; + localisedDescription?: string; + learnMoreLink?: string; + imageUri?: string; + /** @enum {string} */ + featureType?: "BASIC" | "ESTIMATION"; + localisedGroup?: string; + permissibleEstimationTypes?: { + /** @enum {string} */ + value?: "STORY_POINTS" | "ORIGINAL_ESTIMATE"; + localisedName?: string; + localisedDescription?: string; + }[]; + featureId?: string; + learnMoreArticleId?: string; + toggleLocked?: boolean; + }[]; + }; + }; + }; + }; + }; + /** + * Get issues for board + * @description Returns all issues from a board, for a given board ID. This only includes issues that the user has permission to view. An issue belongs to the board if its status is mapped to the board's column. Epic issues do not belongs to the scrum boards. Note, if the user does not have permission to view the board, no issues will be returned at all. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + getIssuesForBoard: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** + * @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. + * Note that `username` and `userkey` can't be used as search terms for this parameter due to privacy reasons. Use `accountId` instead. + */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description This parameter is currently not used. */ + expand?: string; + }; + path: { + /** @description The ID of the board that contains the requested issues. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["SearchResults"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Move issues to board + * @description Move issues from the backog to the board (if they are already in the backlog of that board). + * This operation either moves an issue(s) onto a board from the backlog (by adding it to the issueList for the board) Or transitions the issue(s) to the first column for a kanban board with backlog. At most 50 issues may be moved at once. + */ + moveIssuesToBoard: { + parameters: { + path: { + boardId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "rankBeforeIssue": "PR-4", + * "rankCustomFieldId": 10521, + * "issues": [ + * "PR-1", + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + rankBeforeIssue?: string; + rankAfterIssue?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returns the list of issue with status of rank operation. */ + 207: { + content: { + "application/json": { + entries?: { + /** Format: int64 */ + issueId?: number; + issueKey?: string; + /** Format: int32 */ + status?: number; + errors?: string[]; + }[]; + }; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to assign issues. */ + 403: { + content: never; + }; + }; + }; + /** + * Get projects + * @description Returns all projects that are associated with the board, for the given board ID. If the user does not have permission to view the board, no projects will be returned at all. Returned projects are ordered by the name. + * + * A project is associated with a board if the board filter contains reference the project or there is an issue from the project that belongs to the board. + * + * The board filter contains reference the project only if JQL query guarantees that returned issues will be returned from the project set defined in JQL. For instance the query `project in (ABC, BCD) AND reporter = admin` have reference to ABC and BCD projects but query `project in (ABC, BCD) OR reporter = admin` doesn't have reference to any project. + * + * An issue belongs to the board if its status is mapped to the board's column. Epic issues do not belongs to the scrum boards. + */ + getProjects: { + parameters: { + query?: { + /** @description The starting index of the returned projects. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of projects to return per page. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + }; + path: { + /** @description The ID of the board that contains returned projects. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the board's projects, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user does not have permission to access it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get projects full + * @description Returns all projects that are statically associated with the board, for the given board ID. Returned projects are ordered by the name. + * + * A project is associated with a board if the board filter contains reference the project. + * + * The board filter contains reference the project only if JQL query guarantees that returned issues will be returned from the project set defined in JQL. For instance the query `project in (ABC, BCD) AND reporter = admin` have reference to ABC and BCD projects but query `project in (ABC, BCD) OR reporter = admin` doesn't have reference to any project. + */ + getProjectsFull: { + parameters: { + path: { + /** @description The ID of the board that contains returned projects. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the board's projects, at the specified page of the results. */ + 200: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user does not have permission to access it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get board property keys + * @description Returns the keys of all properties for the board identified by the id. The user who retrieves the property keys is required to have permissions to view the board. + */ + getBoardPropertyKeys: { + parameters: { + path: { + /** @description the ID of the board from which property keys will be returned. */ + boardId: string; + }; + }; + responses: { + /** @description Returned if the board with given id exists. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the boardId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the board with given id does not exist, or if the property with given key is not found, or the user doesn't have permissions to see it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get board property + * @description Returns the value of the property with a given key from the board identified by the provided id. The user who retrieves the property is required to have permissions to view the board. + */ + getBoardProperty: { + parameters: { + path: { + /** @description the ID of the board from which the property will be returned. */ + boardId: string; + /** @description the key of the property to return. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the board exists and the property was found. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the boardId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the board with given id does not exist, or if the property with given key is not found, or the user doesn't have permissions to see it. */ + 404: { + content: never; + }; + }; + }; + /** + * Set board property + * @description Sets the value of the specified board's property. + * + * You can use this resource to store a custom data against the board identified by the id. The user who stores the data is required to have permissions to modify the board. + */ + setBoardProperty: { + parameters: { + path: { + /** @description the ID of the board on which the property will be set. */ + boardId: string; + /** @description the key of the board's property. The maximum length of the key is 255 bytes. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the board property is successfully updated. */ + 200: { + content: never; + }; + /** @description Returned if the board property is successfully created. */ + 201: { + content: never; + }; + /** @description Returned if the boardId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the board with given id does not exist or the user doesn't have permissions to see it. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete board property + * @description Removes the property from the board identified by the id. Ths user removing the property is required to have permissions to modify the board. + */ + deleteBoardProperty: { + parameters: { + path: { + /** @description the id of the board from which the property will be removed. */ + boardId: string; + /** @description the key of the property to remove. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the board property was removed successfully. */ + 204: { + content: never; + }; + /** @description Returned if the boardId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the board with given id does not exist, or if the property with given key is not found, or the user doesn't have permissions to see it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all quick filters + * @description Returns all quick filters from a board, for a given board ID. + */ + getAllQuickFilters: { + parameters: { + query?: { + /** @description The starting index of the returned quick filters. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of sprints to return per page. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + }; + path: { + /** @description The ID of the board that contains the requested quick filters. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested quick filters, at the specified page of the results. Quick filters will be ordered first by position. */ + 200: { + content: { + "application/json": { + /** Format: int32 */ + maxResults?: number; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + isLast?: boolean; + values?: { + /** Format: int64 */ + id?: number; + /** Format: int64 */ + boardId?: number; + name?: string; + jql?: string; + description?: string; + /** Format: int32 */ + position?: number; + }[]; + }; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get quick filter + * @description Returns the quick filter for a given quick filter ID. The quick filter will only be returned if the user can view the board that the quick filter belongs to. + */ + getQuickFilter: { + parameters: { + path: { + boardId: number; + /** @description The ID of the requested quick filter. */ + quickFilterId: number; + }; + }; + responses: { + /** @description Returns the requested quick filter. */ + 200: { + content: { + "application/json": { + /** Format: int64 */ + id?: number; + /** Format: int64 */ + boardId?: number; + name?: string; + jql?: string; + description?: string; + /** Format: int32 */ + position?: number; + }; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board with given id does not exist or if the quick filter with given id is not found or the user doesn't have permissions to see it. */ + 404: { + content: never; + }; + }; + }; + /** Get reports for board */ + getReportsForBoard: { + parameters: { + path: { + boardId: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": { + reports?: Record[]; + }; + }; + }; + }; + }; + /** + * Get all sprints + * @description Returns all sprints from a board, for a given board ID. This only includes sprints that the user has permission to view. + */ + getAllSprints: { + parameters: { + query?: { + /** @description The starting index of the returned sprints. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of sprints to return per page. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + /** @description Filters results to sprints in specified states. Valid values: future, active, closed. You can define multiple states separated by commas, e.g. state=active,closed */ + state?: Record; + }; + path: { + /** @description The ID of the board that contains the requested sprints. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested sprints, at the specified page of the results. Sprints will be ordered first by state (i.e. closed, active, future) then by their position in the backlog. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get board issues for sprint + * @description Get all issues you have access to that belong to the sprint from the board. Issue returned from this resource contains additional fields like: sprint, closedSprints, flagged and epic. Issues are returned ordered by rank. JQL order has higher priority than default rank. + */ + getBoardIssuesForSprint: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** + * @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. + * Note that `username` and `userkey` can't be used as search terms for this parameter due to privacy reasons. Use `accountId` instead. + */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + path: { + /** @description The ID of the board that contains requested issues. */ + boardId: number; + /** @description The ID of the sprint that contains requested issues. */ + sprintId: number; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all versions + * @description Returns all versions from a board, for a given board ID. This only includes versions that the user has permission to view. Note, if the user does not have permission to view the board, no versions will be returned at all. Returned versions are ordered by the name of the project from which they belong and then by sequence defined by user. + */ + getAllVersions: { + parameters: { + query?: { + /** @description The starting index of the returned versions. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of versions to return per page. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + /** @description Filters results to versions that are either released or unreleased. Valid values: true, false. */ + released?: string; + }; + path: { + /** @description The ID of the board that contains the requested versions. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested versions, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issues without epic + * @description Returns all issues that do not belong to any epic. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. **Note:** If you are querying a next-gen project, do not use this operation. Instead, search for issues that don't belong to an epic by using the [Search for issues using JQL](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-get) operation in the Jira platform REST API. Build your JQL query using the `parent is empty` clause. For more information on the `parent` JQL field, see [Advanced searching](https://confluence.atlassian.com/x/dAiiLQ#Advancedsearching-fieldsreference-Parent). + */ + getIssuesWithoutEpic: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + }; + }; + /** + * Remove issues from epic + * @description Removes issues from epics. The user needs to have the edit issue permission for all issue they want to remove from epics. The maximum number of issues that can be moved in one operation is 50. **Note:** This operation does not work for epics in next-gen projects. Instead, update the issue using `\{ fields: \{ parent: \{\} \} \}` + */ + removeIssuesFromEpic: { + requestBody: { + content: { + /** + * @example { + * "issues": [ + * "PR-1", + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license or does not have permission to assign issues. */ + 403: { + content: never; + }; + /** @description Returned if the epic does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get epic + * @description Returns the epic for a given epic ID. This epic will only be returned if the user has permission to view it. **Note:** This operation does not work for epics in next-gen projects. + */ + getEpic: { + parameters: { + path: { + /** @description The id or key of the requested epic. */ + epicIdOrKey: string; + }; + }; + responses: { + /** @description Returns the requested epic. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the epic does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Partially update epic + * @description Performs a partial update of the epic. A partial update means that fields not present in the request JSON will not be updated. Valid values for color are `color_1` to `color_9`. **Note:** This operation does not work for epics in next-gen projects. + */ + partiallyUpdateEpic: { + parameters: { + path: { + /** @description The id or key of the epic to update. */ + epicIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "summary": "epic 2 summary", + * "color": { + * "key": "color_6" + * }, + * "name": "epic 2", + * "done": true + * } + */ + "application/json": { + name?: string; + summary?: string; + color?: { + /** @enum {string} */ + key?: "color_1" | "color_2" | "color_3" | "color_4" | "color_5" | "color_6" | "color_7" | "color_8" | "color_9" | "color_10" | "color_11" | "color_12" | "color_13" | "color_14"; + }; + done?: boolean; + }; + }; + }; + responses: { + /** @description Updated epic */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license or edit issue permission. */ + 403: { + content: never; + }; + /** @description Returned if the epic does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issues for epic + * @description Returns all issues that belong to the epic, for the given epic ID. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. **Note:** If you are querying a next-gen project, do not use this operation. Instead, search for issues that belong to an epic by using the [Search for issues using JQL](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-get) operation in the Jira platform REST API. Build your JQL query using the `parent` clause. For more information on the `parent` JQL field, see [Advanced searching](https://confluence.atlassian.com/x/dAiiLQ#Advancedsearching-fieldsreference-Parent). + */ + getIssuesForEpic: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. Default: 50. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** + * @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. + * Note that `username` and `userkey` can't be used as search terms for this parameter due to privacy reasons. Use `accountId` instead. + */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + path: { + /** @description The id or key of the epic that contains the requested issues. */ + epicIdOrKey: string; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the epic does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Move issues to epic + * @description Moves issues to an epic, for a given epic id. Issues can be only in a single epic at the same time. That means that already assigned issues to an epic, will not be assigned to the previous epic anymore. The user needs to have the edit issue permission for all issue they want to move and to the epic. The maximum number of issues that can be moved in one operation is 50. **Note:** This operation does not work for epics in next-gen projects. + */ + moveIssuesToEpic: { + parameters: { + path: { + /** @description The id or key of the epic that you want to assign issues to. */ + epicIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issues": [ + * "PR-1", + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license or does not have edit issue permission for all issues to assign or for the epic. */ + 403: { + content: never; + }; + /** @description Returned if the epic does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Rank epics + * @description Moves (ranks) an epic before or after a given epic. + * + * If rankCustomFieldId is not defined, the default rank field will be used. + * + * **Note:** This operation does not work for epics in next-gen projects. + */ + rankEpics: { + parameters: { + path: { + /** @description The id or key of the epic to rank. */ + epicIdOrKey: string; + }; + }; + /** @description bean which contains the information where the given epic should be ranked. */ + requestBody: { + content: { + /** + * @example { + * "rankBeforeEpic": "10000", + * "rankCustomFieldId": 10521 + * } + */ + "application/json": { + rankBeforeEpic?: string; + rankAfterEpic?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to rank. To rank issues user have to have schedule issue permission for epics that they want to rank. */ + 403: { + content: never; + }; + /** @description Returned when the given epics in the path parameter or the request body do not exist. */ + 404: { + content: never; + }; + }; + }; + /** + * Rank issues + * @description Moves (ranks) issues before or after a given issue. At most 50 issues may be ranked at once. + * + * This operation may fail for some issues, although this will be rare. In that case the 207 status code is returned for the whole response and detailed information regarding each issue is available in the response body. + * + * If rankCustomFieldId is not defined, the default rank field will be used. + */ + rankIssues: { + /** @description bean which contains list of issues to rank and information where it should be ranked. */ + requestBody: { + content: { + /** + * @example { + * "rankBeforeIssue": "PR-4", + * "rankCustomFieldId": 10521, + * "issues": [ + * "PR-1", + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + rankBeforeIssue?: string; + rankAfterIssue?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returns the list of issue with status of rank operation. */ + 207: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to rank. To rank issues user has to have schedule issue permission for issues that they want to rank. */ + 403: { + content: never; + }; + }; + }; + /** + * Get issue + * @description Returns a single issue, for a given issue ID or issue key. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. + */ + getIssue: { + parameters: { + query?: { + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + /** @description A boolean indicating whether the issue retrieved by this method should be added to the current user's issue history */ + updateHistory?: boolean; + }; + path: { + /** @description The ID or key of the requested issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the requested issue. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** + * @description Returned in these cases: + * + * * the issue does not exist + * * the user does not have permission to view issue + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue estimation for board + * @description Returns the estimation of the issue and a fieldId of the field that is used for it. `boardId` param is required. This param determines which field will be updated on a issue. + * + * Original time internally stores and returns the estimation as a number of seconds. + * + * The field used for estimation on the given board can be obtained from [board configuration resource](#agile/1.0/board-getConfiguration). More information about the field are returned by [edit meta resource](#api-rest-api-3-issue-getEditIssueMeta) or [field resource](#api-rest-api-3-field-get). + */ + getIssueEstimationForBoard: { + parameters: { + query?: { + /** @description The ID of the board required to determine which field is used for estimation. */ + boardId?: number; + }; + path: { + /** @description The ID or key of the requested issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the estimation of the issue and a fieldId of the field that is used for it. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the boardId was not provided, field does not exists or value was in wrong format. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to edit issue. */ + 403: { + content: never; + }; + /** + * @description Returned in these cases: + * + * * the issue does not exist + * * the user does not have permission to view issue + * * the board does not exist + * * the user does not have permission to view board + * * the issue does not belong to the board + */ + 404: { + content: never; + }; + }; + }; + /** + * Estimate issue for board + * @description Updates the estimation of the issue. boardId param is required. This param determines which field will be updated on a issue. + * + * Note that this resource changes the estimation field of the issue regardless of appearance the field on the screen. + * + * Original time tracking estimation field accepts estimation in formats like "1w", "2d", "3h", "20m" or number which represent number of minutes. However, internally the field stores and returns the estimation as a number of seconds. + * + * The field used for estimation on the given board can be obtained from [board configuration resource](#agile/1.0/board-getConfiguration). More information about the field are returned by [edit meta resource](#api-rest-api-3-issue-issueIdOrKey-editmeta-get) or [field resource](#api-rest-api-3-field-get). + */ + estimateIssueForBoard: { + parameters: { + query?: { + /** @description The ID of the board required to determine which field is used for estimation. */ + boardId?: number; + }; + path: { + /** @description The ID or key of the requested issue. */ + issueIdOrKey: string; + }; + }; + /** @description bean that contains value of a new estimation. */ + requestBody: { + content: { + /** + * @example { + * "value": "8.0" + * } + */ + "application/json": { + value?: string; + }; + }; + }; + responses: { + /** @description Returns the estimation of the issue and a fieldId of the field that is used for it. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the boardId was not provided, field does not exists or value was in wrong format. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to edit issue. */ + 403: { + content: never; + }; + /** + * @description Returned in these cases: + * + * * the issue does not exist + * * the user does not have permission to view issue + * * the board does not exist + * * the user does not have permission to view board + * * the issue does not belong to the board + */ + 404: { + content: never; + }; + }; + }; + /** + * Create sprint + * @description Creates a future sprint. Sprint name and origin board id are required. Start date, end date, and goal are optional. + * + * Note that the sprint name is trimmed. Also, when starting sprints from the UI, the "endDate" set through this call is ignored and instead the last sprint's duration is used to fill the form. + */ + createSprint: { + requestBody: { + content: { + /** + * @example { + * "originBoardId": 5, + * "goal": "sprint 1 goal", + * "endDate": "2015-04-20T01:22:00.000+10:00", + * "name": "sprint 1", + * "startDate": "2015-04-11T15:22:00.000+10:00" + * } + */ + "application/json": { + name?: string; + startDate?: string; + endDate?: string; + /** Format: int64 */ + originBoardId?: number; + goal?: string; + }; + }; + }; + responses: { + /** @description Created sprint */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get sprint + * @description Returns the sprint for a given sprint ID. The sprint will only be returned if the user can view the board that the sprint was created on, or view at least one of the issues in the sprint. + */ + getSprint: { + parameters: { + path: { + /** @description The ID of the requested sprint. */ + sprintId: number; + }; + }; + responses: { + /** @description Returns the requested sprint. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the sprint does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Update sprint + * @description Performs a full update of a sprint. A full update means that the result will be exactly the same as the request body. Any fields not present in the request JSON will be set to null. + * + * Notes: + * + * * Sprints that are in a closed state cannot be updated. + * * A sprint can be started by updating the state to 'active'. This requires the sprint to be in the 'future' state and have a startDate and endDate set. + * * A sprint can be completed by updating the state to 'closed'. This action requires the sprint to be in the 'active' state. This sets the completeDate to the time of the request. + * * Other changes to state are not allowed. + * * The completeDate field cannot be updated manually. + */ + updateSprint: { + parameters: { + path: { + /** @description the ID of the sprint to update. */ + sprintId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "goal": "sprint 1 goal", + * "endDate": "2015-04-16T14:01:00.000+10:00", + * "name": "sprint 1", + * "state": "closed", + * "startDate": "2015-04-11T15:36:00.000+10:00", + * "completeDate": "2015-04-20T11:11:28.008+10:00" + * } + */ + "application/json": { + /** Format: int64 */ + id?: number; + /** Format: uri */ + self?: string; + state?: string; + name?: string; + startDate?: string; + endDate?: string; + completeDate?: string; + createdDate?: string; + /** Format: int64 */ + originBoardId?: number; + goal?: string; + }; + }; + }; + responses: { + /** @description Updated sprint */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the sprint does not exist. */ + 404: { + content: never; + }; + }; + }; + /** + * Partially update sprint + * @description Performs a partial update of a sprint. A partial update means that fields not present in the request JSON will not be updated. + * + * Notes: + * + * * Sprints that are in a closed state cannot be updated. + * * A sprint can be started by updating the state to 'active'. This requires the sprint to be in the 'future' state and have a startDate and endDate set. + * * A sprint can be completed by updating the state to 'closed'. This action requires the sprint to be in the 'active' state. This sets the completeDate to the time of the request. + * * Other changes to state are not allowed. + * * The completeDate field cannot be updated manually. + */ + partiallyUpdateSprint: { + parameters: { + path: { + /** @description The ID of the sprint to update. */ + sprintId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "name": "new name" + * } + */ + "application/json": { + /** Format: int64 */ + id?: number; + /** Format: uri */ + self?: string; + state?: string; + name?: string; + startDate?: string; + endDate?: string; + completeDate?: string; + createdDate?: string; + /** Format: int64 */ + originBoardId?: number; + goal?: string; + }; + }; + }; + responses: { + /** @description Updated sprint */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the sprint does not exist. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete sprint + * @description Deletes a sprint. Once a sprint is deleted, all open issues in the sprint will be moved to the backlog. + */ + deleteSprint: { + parameters: { + path: { + /** @description The ID of the sprint to delete. */ + sprintId: number; + }; + }; + responses: { + /** @description Returned if the sprint was deleted successfully */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license or does not have permission to delete sprints. */ + 403: { + content: never; + }; + /** @description Returned if the sprint does not exist. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issues for sprint + * @description Returns all issues in a sprint, for a given sprint ID. This only includes issues that the user has permission to view. By default, the returned issues are ordered by rank. + */ + getIssuesForSprint: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** + * @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. + * Note that `username` and `userkey` can't be used as search terms for this parameter due to privacy reasons. Use `accountId` instead. + */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + path: { + /** @description The ID of the sprint that contains the requested issues. */ + sprintId: number; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if sprint does not exist or the user cannot view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Move issues to sprint and rank + * @description Moves issues to a sprint, for a given sprint ID. Issues can only be moved to open or active sprints. The maximum number of issues that can be moved in one operation is 50. + */ + moveIssuesToSprintAndRank: { + parameters: { + path: { + /** @description The ID of the sprint that you want to assign issues to. */ + sprintId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "rankBeforeIssue": "PR-4", + * "rankCustomFieldId": 10521, + * "issues": [ + * "PR-1", + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + rankBeforeIssue?: string; + rankAfterIssue?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license or does not have permission to assign issues. */ + 403: { + content: never; + }; + /** @description Returned if the sprint does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get properties keys + * @description Returns the keys of all properties for the sprint identified by the id. The user who retrieves the property keys is required to have permissions to view the sprint. + */ + getPropertiesKeys: { + parameters: { + path: { + /** @description the ID of the sprint from which property keys will be returned. */ + sprintId: string; + }; + }; + responses: { + /** @description Returned if the sprint with given id exists. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the sprintId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have permission to view the sprint. */ + 403: { + content: never; + }; + /** @description Returned if the sprint with given id does not exist. */ + 404: { + content: never; + }; + }; + }; + /** + * Get property + * @description Returns the value of the property with a given key from the sprint identified by the provided id. The user who retrieves the property is required to have permissions to view the sprint. + */ + getProperty: { + parameters: { + path: { + /** @description the ID of the sprint from which the property will be returned. */ + sprintId: string; + /** @description the key of the property to return. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the sprint exists and the property was found. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the sprintId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have permission to view the sprint. */ + 403: { + content: never; + }; + /** @description Returned if the sprint with a given id does not exist or if the property with given key is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set property + * @description Sets the value of the specified sprint's property. + * + * You can use this resource to store a custom data against the sprint identified by the id. The user who stores the data is required to have permissions to modify the sprint. + */ + setProperty: { + parameters: { + path: { + /** @description the ID of the sprint on which the property will be set. */ + sprintId: string; + /** @description the key of the sprint's property. The maximum length of the key is 255 bytes. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the sprint property is successfully updated. */ + 200: { + content: never; + }; + /** @description Returned if the sprint property is successfully created. */ + 201: { + content: never; + }; + /** @description Returned if the sprintId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have permission to edit the sprint */ + 403: { + content: never; + }; + /** @description Returned if the sprint with given id does not exist. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete property + * @description Removes the property from the sprint identified by the id. Ths user removing the property is required to have permissions to modify the sprint. + */ + deleteProperty: { + parameters: { + path: { + /** @description the ID of the sprint from which the property will be removed. */ + sprintId: string; + /** @description the key of the property to remove. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the sprint property was removed successfully. */ + 204: { + content: never; + }; + /** @description Returned if the sprintId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have permission to modify the sprint. */ + 403: { + content: never; + }; + /** @description Returned if the sprint with given id does not exist or if the property with given key is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Swap sprint + * @description Swap the position of the sprint with the second sprint. + */ + swapSprint: { + parameters: { + path: { + /** @description The ID of the sprint to swap. */ + sprintId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "sprintToSwapWith": 3 + * } + */ + "application/json": { + /** Format: int64 */ + sprintToSwapWith?: number; + }; + }; + }; + responses: { + /** @description Returned if the sprint swap was performed successfully */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license or does not have permission to at least one sprint. */ + 403: { + content: never; + }; + /** @description Returned if at least one sprint does not exist or user does not have permission to view to at least one sprint. */ + 404: { + content: never; + }; + }; + }; + /** + * Store development information + * @description Stores development information provided in the request to make it available when viewing issues in Jira. Existing repository and entity data for the same ID will be replaced if the updateSequenceId of existing data is less than the incoming data. Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are available within a short period of time, but may take some time during peak load and/or maintenance times. + */ + storeDevelopmentInformation: { + parameters: { + header: { + /** @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. If the JWT token corresponds to a Connect app that does not define the jiraDevelopmentTool module it will be rejected with a 403. See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. */ + Authorization: string; + }; + }; + /** @description Request object, which contains development information */ + requestBody: { + content: { + "application/json": { + /** @description List of repositories containing development information. Must not contain duplicates. Maximum number of entities across all repositories is 1000. */ + repositories: { + /** + * @description The name of this repository. Max length is 255 characters. + * @example atlassian-connect-jira-example + */ + name: string; + /** + * @description Description of this repository. Max length is 1024 characters. + * @example The repository which stores code of the Atlassian Connect Add-on Devinfo application. + */ + description?: string; + /** + * @description The ID of the repository this repository was forked from, if it's a fork. Max length is 1024 characters. + * @example 56c7c750-cee2-48e2-b920-d7706dfd11f7 + */ + forkOf?: string; + /** + * Format: url + * @description The URL of this repository. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example + */ + url: string; + /** @description List of commits to update in this repository. Must not contain duplicate entity IDs. Maximum number of commits is 400 */ + commits?: { + /** + * @description The identifier or hash of the commit. Will be used for cross entity linking. Must be unique for all commits within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters + * @example a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** @description Deprecated. Use the id field instead. */ + hash?: string; + /** + * @description The set of flags for this commit + * @example [MERGE_COMMIT] + */ + flags?: "MERGE_COMMIT"[]; + /** + * @description The commit message. Max length is 1024 characters. If anything longer is supplied, it will be truncated down to 1024 characters. + * @example README.md edited online with Bitbucket + */ + message: string; + /** + * Author + * @description Describes the author of a particular entity + */ + author: { + /** + * @description Deprecated. The name of this user in a format suitable for display. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + /** + * @description Deprecated. The username of the user. Used to associate the user with a Jira user if there are multiple users for a given email. Max length is 255 characters. + * @example jdoe + */ + username?: string; + /** + * @description Deprecated. The URL of the profile for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * @description Deprecated. The URL of the avatar for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + }; + /** + * Format: int32 + * @description The total number of files added, removed, or modified by this commit + * @example 1 + */ + fileCount: number; + /** + * Format: url + * @description The URL of this commit. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/commits/a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + url: string; + /** @description List of file changes. Max number of files is 10. Currently, only the first 5 files are shown (sorted by path) in the UI. This UI behavior may change without notice. */ + files?: { + /** + * @description The path of the file. Max length is 1024 characters. + * @example /home/user/src/atlassian-connect-jira-example/README.md + */ + path: string; + /** + * Format: url + * @description The URL of this file. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/src/a7727ee6350c33cdf90826dc21abaa26a5704370/README.md + */ + url: string; + /** + * @description The operation performed on this file + * @example MODIFIED + * @enum {string} + */ + changeType: "ADDED" | "COPIED" | "DELETED" | "MODIFIED" | "MOVED" | "UNKNOWN"; + /** + * Format: int32 + * @description Number of lines added to the file + * @example 0 + */ + linesAdded: number; + /** + * Format: int32 + * @description Number of lines removed from the file + * @example 1 + */ + linesRemoved: number; + }[]; + /** + * @description The author timestamp of this commit. Formatted as a UTC ISO 8601 date time format. + * @example 2016-10-31T23:27:25+00:00 + */ + authorTimestamp: string; + /** + * @description Shortened identifier for this commit, used for display. Max length is 255 characters. + * @example a7727ee + */ + displayId: string; + }[]; + /** @description List of branches to update in this repository. Must not contain duplicate entity IDs. Maximum number of branches is 400. */ + branches?: { + /** + * @description The ID of this entity. Will be used for cross entity linking. Must be unique by entity type within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters. + * @example c6c7c750-cee2-48e2-b920-d7706dfd11f9 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** + * @description The name of the branch. Max length is 512 characters. + * @example master + */ + name: string; + /** + * Commit + * @description Represents a commit in the version control system. + */ + lastCommit: { + /** + * @description The identifier or hash of the commit. Will be used for cross entity linking. Must be unique for all commits within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters + * @example a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** @description Deprecated. Use the id field instead. */ + hash?: string; + /** + * @description The set of flags for this commit + * @example [MERGE_COMMIT] + */ + flags?: "MERGE_COMMIT"[]; + /** + * @description The commit message. Max length is 1024 characters. If anything longer is supplied, it will be truncated down to 1024 characters. + * @example README.md edited online with Bitbucket + */ + message: string; + /** + * Author + * @description Describes the author of a particular entity + */ + author: { + /** + * @description Deprecated. The name of this user in a format suitable for display. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + /** + * @description Deprecated. The username of the user. Used to associate the user with a Jira user if there are multiple users for a given email. Max length is 255 characters. + * @example jdoe + */ + username?: string; + /** + * @description Deprecated. The URL of the profile for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * @description Deprecated. The URL of the avatar for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + }; + /** + * Format: int32 + * @description The total number of files added, removed, or modified by this commit + * @example 1 + */ + fileCount: number; + /** + * Format: url + * @description The URL of this commit. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/commits/a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + url: string; + /** @description List of file changes. Max number of files is 10. Currently, only the first 5 files are shown (sorted by path) in the UI. This UI behavior may change without notice. */ + files?: { + /** + * @description The path of the file. Max length is 1024 characters. + * @example /home/user/src/atlassian-connect-jira-example/README.md + */ + path: string; + /** + * Format: url + * @description The URL of this file. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/src/a7727ee6350c33cdf90826dc21abaa26a5704370/README.md + */ + url: string; + /** + * @description The operation performed on this file + * @example MODIFIED + * @enum {string} + */ + changeType: "ADDED" | "COPIED" | "DELETED" | "MODIFIED" | "MOVED" | "UNKNOWN"; + /** + * Format: int32 + * @description Number of lines added to the file + * @example 0 + */ + linesAdded: number; + /** + * Format: int32 + * @description Number of lines removed from the file + * @example 1 + */ + linesRemoved: number; + }[]; + /** + * @description The author timestamp of this commit. Formatted as a UTC ISO 8601 date time format. + * @example 2016-10-31T23:27:25+00:00 + */ + authorTimestamp: string; + /** + * @description Shortened identifier for this commit, used for display. Max length is 255 characters. + * @example a7727ee + */ + displayId: string; + }; + /** + * @description The URL of the page for creating a pull request from this branch. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/pull-requests/new + */ + createPullRequestUrl?: string; + /** + * @description The URL of the branch. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/branch/master + */ + url: string; + }[]; + /** @description List of pull requests to update in this repository. Must not contain duplicate entity IDs. Maximum number of pull requests is 400 */ + pullRequests?: { + /** + * @description The ID of this entity. Will be used for cross entity linking. Must be unique by entity type within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters + * @example c6c7c750-cee2-48e2-b920-d7706dfd11f9 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** + * @description The status of the pull request. In the case of concurrent updates, priority is given in the order OPEN, MERGED, DECLINED, DRAFT, UNKNOWN + * @example OPEN + * @enum {string} + */ + status: "OPEN" | "MERGED" | "DECLINED" | "DRAFT" | "UNKNOWN"; + /** + * @description Title of the pull request. Max length is 1024 characters. + * @example Pull request 2, fixing all the issues caused by pull request #1 + */ + title: string; + /** + * Author + * @description Describes the author of a particular entity + */ + author: { + /** + * @description Deprecated. The name of this user in a format suitable for display. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + /** + * @description Deprecated. The username of the user. Used to associate the user with a Jira user if there are multiple users for a given email. Max length is 255 characters. + * @example jdoe + */ + username?: string; + /** + * @description Deprecated. The URL of the profile for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * @description Deprecated. The URL of the avatar for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + }; + /** + * Format: int32 + * @description The number of comments on the pull request + * @example 42 + */ + commentCount: number; + /** + * @description The name of the source branch of this PR. Max length is 255 characters. + * @example ISSUE-1-feature-branch + */ + sourceBranch: string; + /** + * Format: url + * @description The url of the source branch of this PR. This is used to match this PR against the branch. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/branch/ISSUE-1-feature-branch + */ + sourceBranchUrl?: string; + /** + * @description The most recent update to this PR. Formatted as a UTC ISO 8601 date time format. + * @example 2016-10-31T23:27:25+00:00 + */ + lastUpdate: string; + /** + * @description The name of destination branch of this PR. Max length is 255 characters. + * @example master + */ + destinationBranch?: string; + /** + * Format: url + * @description The url of the destination branch of this PR. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/src/master + */ + destinationBranchUrl?: string; + /** @description The list of reviewers of this pull request */ + reviewers?: { + /** + * @description Deprecated. The name of this reviewer. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The approval status of this reviewer, default is UNAPPROVED. + * @example APPROVED + * @enum {string} + */ + approvalStatus?: "APPROVED" | "NEEDSWORK" | "UNAPPROVED"; + /** + * Format: url + * @description Deprecated. The URL of the profile for this reviewer. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * Format: url + * @description Deprecated. The URL of the avatar for this reviewer. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + /** + * @description The email address of this reviewer. Max length is 254 characters. + * @example jane_doe@example.com + */ + email?: string; + /** + * @description The Atlassian Account ID (AAID) of this reviewer. Max length is 128 characters. + * @example 655363:e4ca5e2d-a901-40e3-877e-bf5d22c0f130 + */ + accountId?: string; + }[]; + /** + * Format: url + * @description The URL of this pull request. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/pull-requests/2 + */ + url: string; + /** + * @description Shortened identifier for this pull request, used for display. Max length is 255 characters. + * @example Pull request 2 + */ + displayId: string; + /** + * Format: int32 + * @description The number of tasks on the pull request + * @example 42 + */ + taskCount?: number; + }[]; + /** + * Format: url + * @description The URL of the avatar for this repository. Max length is 2000 characters. + * @example http://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/avatar/32 + */ + avatar?: string; + /** + * @description Description of the avatar for this repository. Max length is 1024 characters. + * @example Avatar description + */ + avatarDescription?: string; + /** + * @description The ID of this entity. Will be used for cross entity linking. Must be unique by entity type within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters. + * @example c6c7c750-cee2-48e2-b920-d7706dfd11f9 + */ + id: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + }[]; + /** @description Flag to prevent automatic issue transitions and smart commits being fired, default is false. */ + preventTransitions?: boolean; + /** + * @description Indicates the operation being performed by the provider system when sending this data. "NORMAL" - Data received during normal operation (e.g. a user pushing a branch). "BACKFILL" - Data received while backfilling existing data (e.g. indexing a newly connected account). Default is "NORMAL". Please note that "BACKFILL" operations have a much higher rate-limiting threshold but are also processed slower in comparison to "NORMAL" operations. + * @example NORMAL + * @enum {string} + */ + operationType?: "NORMAL" | "BACKFILL"; + /** @description Arbitrary properties to tag the submitted repositories with. These properties can be used for delete operations to e.g. clean up all development information associated with an account in the event that the account is removed from the provider system. Note that these properties will never be returned with repository or entity data. They are not intended for use as metadata to associate with a repository. Maximum length of each key or value is 255 characters. Maximum allowed number of properties key/value pairs is 5. Properties keys cannot start with '_' character. Properties keys cannot contain ':' character. */ + properties?: { + [key: string]: string; + }; + /** + * ProviderMetadata + * @description Information about the provider. This is useful for auditing, logging, debugging, and other internal uses. It is not considered private information. Hence, it may not contain personally identifiable information. + */ + providerMetadata?: { + /** + * @description An optional name of the source of the development information data. + * @example Bitbucket Server 6.7.2 + */ + product?: string; + }; + }; + }; + }; + responses: { + /** @description Submission accepted. Each submitted repository and entity that is of a valid format will be eventually available in Jira. */ + 202: { + content: { + "application/json": { + /** @description The IDs of devinfo entities that have been accepted for submission grouped by their repository IDs. Note that a devinfo entity that isn't updated due to it's updateSequenceId being out of order is not considered a failed submission. */ + acceptedDevinfoEntities?: { + [key: string]: { + /** @description Commits IDs */ + commits?: string[]; + /** @description Branch IDs */ + branches?: string[]; + /** @description Pull request IDs */ + pullRequests?: string[]; + }; + }; + /** @description IDs of devinfo entities that have not been accepted for submission and caused error descriptions, usually due to a problem with the request data. The entities (if present) will be grouped by their repository id and type. Entity IDs are listed with errors associated with that devinfo entity that have prevented it being submitted. */ + failedDevinfoEntities?: { + [key: string]: { + /** @description Repository errors */ + errorMessages?: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + /** @description Commits errors */ + commits?: { + /** @description Entity id */ + id: string; + /** @description Error message */ + errorMessages?: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }[]; + /** @description Branches errors */ + branches?: { + /** @description Entity id */ + id: string; + /** @description Error message */ + errorMessages?: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }[]; + /** @description Pull requests errors */ + pullRequests?: { + /** @description Entity id */ + id: string; + /** @description Error message */ + errorMessages?: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }[]; + }; + }; + /** @description Issue keys that are not known on this Jira instance (if any). These may be invalid keys (e.g. `UTF-8` is sometimes incorrectly identified as a Jira issue key), or they may be for projects that no longer exist. If a devinfo entity has been associated with issue keys other than those in this array it will still be stored against those valid keys. */ + unknownIssueKeys?: string[]; + }; + }; + }; + /** @description Request has incorrect format. It will fail in the following cases: If no repositories or development information entities were provided, or more than 5 properties were submitted, or there are one or more properties with leading underscore '_' symbol in their keys. */ + 400: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the jiraDevelopmentTool module, or the app does not define the 'WRITE' scope */ + 403: { + content: never; + }; + /** @description Data is too large. Submit fewer devinfo entities in each payload. */ + 413: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + headers: { + /** @description The number of remaining possible requests in current rate limit window. */ + "X-RateLimit-Remaining"?: number; + /** @description The date in ISO 8601 format when the rate limit values will be next reset. */ + "X-RateLimit-Reset"?: string; + /** @description The maximum possible requests in a window of one minute. */ + "X-RateLimit-Limit"?: number; + /** @description The number of seconds to wait before making a follow-up request. */ + "Retry-After"?: number; + }; + content: never; + }; + /** @description An unknown error has occurred. */ + 500: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + }; + }; + /** + * Get repository + * @description For the specified repository ID, retrieves the repository and the most recent 400 development information entities. The result will be what is currently stored, ignoring any pending updates or deletes. + */ + getRepository: { + parameters: { + header: { + /** @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. If the JWT token corresponds to a Connect app that does not define the jiraDevelopmentTool module it will be rejected with a 403. See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. */ + Authorization: string; + }; + path: { + /** @description The ID of repository to fetch */ + repositoryId: string; + }; + }; + responses: { + /** @description The repository data currently stored for the given ID. */ + 200: { + content: { + "application/json": { + /** + * @description The name of this repository. Max length is 255 characters. + * @example atlassian-connect-jira-example + */ + name: string; + /** + * @description Description of this repository. Max length is 1024 characters. + * @example The repository which stores code of the Atlassian Connect Add-on Devinfo application. + */ + description?: string; + /** + * @description The ID of the repository this repository was forked from, if it's a fork. Max length is 1024 characters. + * @example 56c7c750-cee2-48e2-b920-d7706dfd11f7 + */ + forkOf?: string; + /** + * Format: url + * @description The URL of this repository. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example + */ + url: string; + /** @description List of commits to update in this repository. Must not contain duplicate entity IDs. Maximum number of commits is 400 */ + commits?: { + /** + * @description The identifier or hash of the commit. Will be used for cross entity linking. Must be unique for all commits within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters + * @example a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** @description Deprecated. Use the id field instead. */ + hash?: string; + /** + * @description The set of flags for this commit + * @example [MERGE_COMMIT] + */ + flags?: "MERGE_COMMIT"[]; + /** + * @description The commit message. Max length is 1024 characters. If anything longer is supplied, it will be truncated down to 1024 characters. + * @example README.md edited online with Bitbucket + */ + message: string; + /** + * Author + * @description Describes the author of a particular entity + */ + author: { + /** + * @description Deprecated. The name of this user in a format suitable for display. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + /** + * @description Deprecated. The username of the user. Used to associate the user with a Jira user if there are multiple users for a given email. Max length is 255 characters. + * @example jdoe + */ + username?: string; + /** + * @description Deprecated. The URL of the profile for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * @description Deprecated. The URL of the avatar for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + }; + /** + * Format: int32 + * @description The total number of files added, removed, or modified by this commit + * @example 1 + */ + fileCount: number; + /** + * Format: url + * @description The URL of this commit. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/commits/a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + url: string; + /** @description List of file changes. Max number of files is 10. Currently, only the first 5 files are shown (sorted by path) in the UI. This UI behavior may change without notice. */ + files?: { + /** + * @description The path of the file. Max length is 1024 characters. + * @example /home/user/src/atlassian-connect-jira-example/README.md + */ + path: string; + /** + * Format: url + * @description The URL of this file. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/src/a7727ee6350c33cdf90826dc21abaa26a5704370/README.md + */ + url: string; + /** + * @description The operation performed on this file + * @example MODIFIED + * @enum {string} + */ + changeType: "ADDED" | "COPIED" | "DELETED" | "MODIFIED" | "MOVED" | "UNKNOWN"; + /** + * Format: int32 + * @description Number of lines added to the file + * @example 0 + */ + linesAdded: number; + /** + * Format: int32 + * @description Number of lines removed from the file + * @example 1 + */ + linesRemoved: number; + }[]; + /** + * @description The author timestamp of this commit. Formatted as a UTC ISO 8601 date time format. + * @example 2016-10-31T23:27:25+00:00 + */ + authorTimestamp: string; + /** + * @description Shortened identifier for this commit, used for display. Max length is 255 characters. + * @example a7727ee + */ + displayId: string; + }[]; + /** @description List of branches to update in this repository. Must not contain duplicate entity IDs. Maximum number of branches is 400. */ + branches?: { + /** + * @description The ID of this entity. Will be used for cross entity linking. Must be unique by entity type within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters. + * @example c6c7c750-cee2-48e2-b920-d7706dfd11f9 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** + * @description The name of the branch. Max length is 512 characters. + * @example master + */ + name: string; + /** + * Commit + * @description Represents a commit in the version control system. + */ + lastCommit: { + /** + * @description The identifier or hash of the commit. Will be used for cross entity linking. Must be unique for all commits within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters + * @example a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** @description Deprecated. Use the id field instead. */ + hash?: string; + /** + * @description The set of flags for this commit + * @example [MERGE_COMMIT] + */ + flags?: "MERGE_COMMIT"[]; + /** + * @description The commit message. Max length is 1024 characters. If anything longer is supplied, it will be truncated down to 1024 characters. + * @example README.md edited online with Bitbucket + */ + message: string; + /** + * Author + * @description Describes the author of a particular entity + */ + author: { + /** + * @description Deprecated. The name of this user in a format suitable for display. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + /** + * @description Deprecated. The username of the user. Used to associate the user with a Jira user if there are multiple users for a given email. Max length is 255 characters. + * @example jdoe + */ + username?: string; + /** + * @description Deprecated. The URL of the profile for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * @description Deprecated. The URL of the avatar for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + }; + /** + * Format: int32 + * @description The total number of files added, removed, or modified by this commit + * @example 1 + */ + fileCount: number; + /** + * Format: url + * @description The URL of this commit. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/commits/a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + url: string; + /** @description List of file changes. Max number of files is 10. Currently, only the first 5 files are shown (sorted by path) in the UI. This UI behavior may change without notice. */ + files?: { + /** + * @description The path of the file. Max length is 1024 characters. + * @example /home/user/src/atlassian-connect-jira-example/README.md + */ + path: string; + /** + * Format: url + * @description The URL of this file. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/src/a7727ee6350c33cdf90826dc21abaa26a5704370/README.md + */ + url: string; + /** + * @description The operation performed on this file + * @example MODIFIED + * @enum {string} + */ + changeType: "ADDED" | "COPIED" | "DELETED" | "MODIFIED" | "MOVED" | "UNKNOWN"; + /** + * Format: int32 + * @description Number of lines added to the file + * @example 0 + */ + linesAdded: number; + /** + * Format: int32 + * @description Number of lines removed from the file + * @example 1 + */ + linesRemoved: number; + }[]; + /** + * @description The author timestamp of this commit. Formatted as a UTC ISO 8601 date time format. + * @example 2016-10-31T23:27:25+00:00 + */ + authorTimestamp: string; + /** + * @description Shortened identifier for this commit, used for display. Max length is 255 characters. + * @example a7727ee + */ + displayId: string; + }; + /** + * @description The URL of the page for creating a pull request from this branch. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/pull-requests/new + */ + createPullRequestUrl?: string; + /** + * @description The URL of the branch. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/branch/master + */ + url: string; + }[]; + /** @description List of pull requests to update in this repository. Must not contain duplicate entity IDs. Maximum number of pull requests is 400 */ + pullRequests?: { + /** + * @description The ID of this entity. Will be used for cross entity linking. Must be unique by entity type within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters + * @example c6c7c750-cee2-48e2-b920-d7706dfd11f9 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** + * @description The status of the pull request. In the case of concurrent updates, priority is given in the order OPEN, MERGED, DECLINED, DRAFT, UNKNOWN + * @example OPEN + * @enum {string} + */ + status: "OPEN" | "MERGED" | "DECLINED" | "DRAFT" | "UNKNOWN"; + /** + * @description Title of the pull request. Max length is 1024 characters. + * @example Pull request 2, fixing all the issues caused by pull request #1 + */ + title: string; + /** + * Author + * @description Describes the author of a particular entity + */ + author: { + /** + * @description Deprecated. The name of this user in a format suitable for display. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + /** + * @description Deprecated. The username of the user. Used to associate the user with a Jira user if there are multiple users for a given email. Max length is 255 characters. + * @example jdoe + */ + username?: string; + /** + * @description Deprecated. The URL of the profile for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * @description Deprecated. The URL of the avatar for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + }; + /** + * Format: int32 + * @description The number of comments on the pull request + * @example 42 + */ + commentCount: number; + /** + * @description The name of the source branch of this PR. Max length is 255 characters. + * @example ISSUE-1-feature-branch + */ + sourceBranch: string; + /** + * Format: url + * @description The url of the source branch of this PR. This is used to match this PR against the branch. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/branch/ISSUE-1-feature-branch + */ + sourceBranchUrl?: string; + /** + * @description The most recent update to this PR. Formatted as a UTC ISO 8601 date time format. + * @example 2016-10-31T23:27:25+00:00 + */ + lastUpdate: string; + /** + * @description The name of destination branch of this PR. Max length is 255 characters. + * @example master + */ + destinationBranch?: string; + /** + * Format: url + * @description The url of the destination branch of this PR. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/src/master + */ + destinationBranchUrl?: string; + /** @description The list of reviewers of this pull request */ + reviewers?: { + /** + * @description Deprecated. The name of this reviewer. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The approval status of this reviewer, default is UNAPPROVED. + * @example APPROVED + * @enum {string} + */ + approvalStatus?: "APPROVED" | "NEEDSWORK" | "UNAPPROVED"; + /** + * Format: url + * @description Deprecated. The URL of the profile for this reviewer. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * Format: url + * @description Deprecated. The URL of the avatar for this reviewer. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + /** + * @description The email address of this reviewer. Max length is 254 characters. + * @example jane_doe@example.com + */ + email?: string; + /** + * @description The Atlassian Account ID (AAID) of this reviewer. Max length is 128 characters. + * @example 655363:e4ca5e2d-a901-40e3-877e-bf5d22c0f130 + */ + accountId?: string; + }[]; + /** + * Format: url + * @description The URL of this pull request. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/pull-requests/2 + */ + url: string; + /** + * @description Shortened identifier for this pull request, used for display. Max length is 255 characters. + * @example Pull request 2 + */ + displayId: string; + /** + * Format: int32 + * @description The number of tasks on the pull request + * @example 42 + */ + taskCount?: number; + }[]; + /** + * Format: url + * @description The URL of the avatar for this repository. Max length is 2000 characters. + * @example http://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/avatar/32 + */ + avatar?: string; + /** + * @description Description of the avatar for this repository. Max length is 1024 characters. + * @example Avatar description + */ + avatarDescription?: string; + /** + * @description The ID of this entity. Will be used for cross entity linking. Must be unique by entity type within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters. + * @example c6c7c750-cee2-48e2-b920-d7706dfd11f9 + */ + id: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the jiraDevelopmentTool module, or the app does not define the 'READ' scope */ + 403: { + content: never; + }; + /** @description No data found for the given repository ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description An unknown error has occurred. */ + 500: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + }; + }; + /** + * Delete repository + * @description Deletes the repository data stored by the given ID and all related development information entities. Deletion is performed asynchronously. + */ + deleteRepository: { + parameters: { + query?: { + /** @description An optional property to use to control deletion. Only stored data with an updateSequenceId less than or equal to that provided will be deleted. This can be used to help ensure submit/delete requests are applied correctly if they are issued close together. */ + _updateSequenceId?: number; + }; + header: { + /** @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. If the JWT token corresponds to a Connect app that does not define the jiraDevelopmentTool module it will be rejected with a 403. See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. */ + Authorization: string; + }; + path: { + /** @description The ID of repository to delete */ + repositoryId: string; + }; + }; + responses: { + /** @description Delete request has been accepted. Data will eventually be removed from Jira if it exists. */ + 202: { + content: never; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the jiraDevelopmentTool module, or the app does not define the 'DELETE' scope */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description An unknown error has occurred. */ + 500: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + }; + }; + /** + * Delete development information by properties + * @description Deletes development information entities which have all the provided properties. Entities will be deleted that match ALL of the properties (i.e. treated as an AND). For example if request is `DELETE bulk?accountId=123&projectId=ABC` entities which have properties `accountId=123` and `projectId=ABC` will be deleted. Special property `_updateSequenceId` can be used to delete all entities with updateSequenceId less or equal than the value specified. In addition to the optional `_updateSequenceId`, one or more query params must be supplied to specify properties to delete by. Deletion is performed asynchronously: specified entities will eventually be removed from Jira. + */ + deleteByProperties: { + parameters: { + query?: { + /** @description An optional property to use to control deletion. Only stored data with an updateSequenceId less than or equal to that provided will be deleted. This can be used to help ensure submit/delete requests are applied correctly if they are issued close together. */ + _updateSequenceId?: number; + }; + header: { + /** @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. If the JWT token corresponds to a Connect app that does not define the jiraDevelopmentTool module it will be rejected with a 403. See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format. It will fail in the following cases: If no query properties are specified. If `_updateSequenceId` is not a numeric value. If multiple values of the same property key are specified. Deleting data for many property values, for the same property key, requires multiple requests to this resource. */ + 400: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the jiraDevelopmentTool module, or the app does not define the 'DELETE' scope */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description An unknown error has occurred. */ + 500: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + }; + }; + /** + * Check if data exists for the supplied properties + * @description Checks if development information which have all the provided properties exists. For example, if request is `GET existsByProperties?accountId=123&projectId=ABC` then result will be positive only if there is at least one entity or repository with both properties `accountId=123` and `projectId=ABC`. Special property `_updateSequenceId` can be used to filter all entities with updateSequenceId less or equal than the value specified. In addition to the optional `_updateSequenceId`, one or more query params must be supplied to specify properties to search by. + */ + existsByProperties: { + parameters: { + query?: { + /** @description An optional property. Filters out entities and repositories which have updateSequenceId greater than specified. */ + _updateSequenceId?: number; + }; + header: { + /** @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. If the JWT token corresponds to a Connect app that does not define the jiraDevelopmentTool module it will be rejected with a 403. See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. */ + Authorization: string; + }; + }; + responses: { + /** @description Returns whether data exists for the specified properties. */ + 200: { + content: { + "application/json": { + /** @description Whether there is data matching the query */ + hasDataMatchingProperties?: boolean; + }; + }; + }; + /** @description Request has incorrect format. It will fail in the following cases: If no query properties are specified. If `_updateSequenceId` is not a numeric value. If multiple values of the same property key are specified. */ + 400: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the jiraDevelopmentTool module, or the app does not define the 'READ' scope */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description An unknown error has occurred. */ + 500: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + }; + }; + /** + * Delete development information entity + * @description Deletes particular development information entity. Deletion is performed asynchronously. + */ + deleteEntity: { + parameters: { + query?: { + /** @description An optional property to use to control deletion. Only stored data with an updateSequenceId less than or equal to that provided will be deleted. This can be used to help ensure submit/delete requests are applied correctly if they are issued close together. */ + _updateSequenceId?: number; + }; + header: { + /** @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. If the JWT token corresponds to a Connect app that does not define the jiraDevelopmentTool module it will be rejected with a 403. See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. */ + Authorization: string; + }; + path: { + repositoryId: string; + entityType: "commit" | "branch" | "pull_request"; + entityId: string; + }; + }; + responses: { + /** @description Delete request has been accepted. Data will eventually be removed from Jira if it exists. */ + 202: { + content: never; + }; + /** @description Wrong entity type specified */ + 400: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the jiraDevelopmentTool module, or the app does not define the 'DELETE' scope */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description An unknown error has occurred. */ + 500: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + }; + }; + /** + * Submit Feature Flag data + * @description Update / insert Feature Flag data. + * + * Feature Flags are identified by their ID, and existing Feature Flag data for the same ID will be replaced if it exists and the updateSequenceId of existing data is less than the incoming data. + * + * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are available within a short period of time, but may take some time during peak load and/or maintenance times. The getFeatureFlagById operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple Feature Flags being submitted in one request, each is validated individually prior to submission. Details of which Feature Flags failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + submitFeatureFlags: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + }; + /** @description Feature Flag data to submit. */ + requestBody: { + content: { + "application/json": { + /** + * Properties + * @description Properties assigned to Feature Flag data that can then be used for delete / query operations. + * + * Examples might be an account or user ID that can then be used to clean up data if an account is removed from the Provider system. + * + * Note that these properties will never be returned with Feature Flag data. They are not intended for use as metadata to associate with a Feature Flag. Internally they are stored as a hash so that personal information etc. is never stored within Jira. + * + * Properties are supplied as key/value pairs, a maximum of 5 properties can be supplied, and keys must not contain ':' or start with '_'. + * + * @example { + * "accountId": "account-234", + * "projectId": "project-123" + * } + */ + properties?: { + [key: string]: string; + }; + /** + * @description A list of Feature Flags to submit to Jira. + * + * Each Feature Flag may be associated with 1 or more Jira issue keys, and will be associated with any properties included in this request. + */ + flags: { + /** + * @description The FeatureFlagData schema version used for this flag data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * @description The identifier for the Feature Flag. Must be unique for a given Provider. + * + * @example 111-222-333 + */ + id: string; + /** + * @description The identifier that users would use to reference the Feature Flag in their source code etc. + * + * Will be made available via the UI for users to copy into their source code etc. + * + * @example my-awesome-feature + */ + key: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this Feature Flag in the case of out-of-order receipt of update requests. + * + * This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the Provider system, but other alternatives are valid (e.g. a Provider could store a counter against each Feature Flag and increment that on each update to Jira). + * + * Updates for a Feature Flag that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceId: number; + /** + * @description The human-readable name for the Feature Flag. Will be shown in the UI. + * + * If not provided, will use the ID for display. + * + * @example Enable awesome feature + */ + displayName?: string; + /** @description The Jira issue keys to associate the Feature Flag information with. */ + issueKeys: string[]; + /** + * FeatureFlagSummary + * @description Summary information for a single Feature Flag. + * + * Providers may elect to provide information from a specific environment, or they may choose to 'roll up' information from across multiple environments - whatever makes most sense in the Provider system. + * + * This is the summary information that will be presented to the user on e.g. the Jira issue screen. + */ + summary: { + /** + * Format: uri + * @description A URL users can use to link to a summary view of this flag, if appropriate. + * + * This could be any location that makes sense in the Provider system (e.g. if the summary information comes from a specific environment, it might make sense to link the user to the flag in that environment). + * + * @example https://example.com/project/feature-123/summary + */ + url?: string; + /** + * FeatureFlagStatus + * @description Status information about a single Feature Flag. + */ + status: { + /** + * @description Whether the Feature Flag is enabled in the given environment (or in summary). + * + * Enabled may imply a partial rollout, which can be described using the 'rollout' field. + */ + enabled: boolean; + /** + * @description The value served by this Feature Flag when it is disabled. This could be the actual value or an alias, as appropriate. + * + * This value may be presented to the user in the UI. + * + * @example Disabled + */ + defaultValue?: string; + /** + * FeatureFlagRollout + * @description Information about the rollout of a Feature Flag in an environment (or in summary). + * + * Only one of 'percentage', 'text', or 'rules' should be provided. They will be used in that order if multiple are present. + * + * This information may be presented to the user in the UI. + * + * @example { + * "percentage": 80 + * } + */ + rollout?: { + /** @description If the Feature Flag rollout is a simple percentage rollout */ + percentage?: number; + /** @description A text status to display that represents the rollout. This could be e.g. a named cohort. */ + text?: string; + /** @description A count of the number of rules active for this Feature Flag in an environment. */ + rules?: number; + }; + }; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of the state of the Feature Flag. + * + * Providers may choose to supply the last-updated timestamp from a specific environment, or the 'most recent' last-updated timestamp across all environments - whatever makes sense in the Provider system. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + }; + /** + * @description Detail information for this Feature Flag. + * + * This may be information for each environment the Feature Flag is defined in or a selection of environments made by the user, as appropriate. + */ + details: { + /** + * Format: uri + * @description A URL users can use to link to this Feature Flag, in this environment. + * + * @example https://example.com/project/feature-123/production + */ + url: string; + /** + * Format: date-time + * @description The last-updated timestamp for this Feature Flag, in this environment. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * EnvironmentDetails + * @description Details of a single environment. + * + * At the simplest this must be the name of the environment. + * + * Ideally there is also type information which may be used to group data from multiple Feature Flags and other entities for visualisation in the UI. + * + * @example { + * "name": "prod-us-west", + * "type": "production" + * } + */ + environment: { + /** @description The name of the environment. */ + name: string; + /** + * @description The 'type' or 'category' of environment this environment belongs to. + * @enum {string} + */ + type?: "development" | "testing" | "staging" | "production"; + }; + /** + * FeatureFlagStatus + * @description Status information about a single Feature Flag. + */ + status: { + /** + * @description Whether the Feature Flag is enabled in the given environment (or in summary). + * + * Enabled may imply a partial rollout, which can be described using the 'rollout' field. + */ + enabled: boolean; + /** + * @description The value served by this Feature Flag when it is disabled. This could be the actual value or an alias, as appropriate. + * + * This value may be presented to the user in the UI. + * + * @example Disabled + */ + defaultValue?: string; + /** + * FeatureFlagRollout + * @description Information about the rollout of a Feature Flag in an environment (or in summary). + * + * Only one of 'percentage', 'text', or 'rules' should be provided. They will be used in that order if multiple are present. + * + * This information may be presented to the user in the UI. + * + * @example { + * "percentage": 80 + * } + */ + rollout?: { + /** @description If the Feature Flag rollout is a simple percentage rollout */ + percentage?: number; + /** @description A text status to display that represents the rollout. This could be e.g. a named cohort. */ + text?: string; + /** @description A count of the number of rules active for this Feature Flag in an environment. */ + rules?: number; + }; + }; + }[]; + }[]; + /** + * ProviderMetadata + * @description Information about the provider. This is useful for auditing, logging, debugging, + * and other internal uses. It is not considered private information. Hence, it may not contain personally + * identifiable information. + */ + providerMetadata?: { + /** + * @description An optional name of the source of the feature flags. + * @example Atlassian Release Platform 2.1.0 + */ + product?: string; + }; + }; + }; + }; + responses: { + /** + * @description Submission accepted. Each submitted Feature Flag that is of a valid format will be eventually available in Jira. + * + * Details of which Feature Flags were submitted and which failed submission (due to data format problems etc.) are available in the response object. + */ + 202: { + content: { + "application/json": { + /** + * @description The IDs of Feature Flags that have been accepted for submission. + * + * A Feature Flag may be rejected if it was only associated with unknown issue keys. + * + * Note that a Feature Flag that isn't updated due to it's updateSequenceId being out of order is not considered a failed submission. + * + * @example [ + * "111-222-333", + * "444-555-666" + * ] + */ + acceptedFeatureFlags?: string[]; + /** + * @description Details of Feature Flags that have not been accepted for submission, usually due to a problem with the request data. + * + * The object (if present) will be keyed by Feature Flag ID and include any errors associated with that Feature Flag that have prevented it being submitted. + */ + failedFeatureFlags?: { + [key: string]: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + /** + * @description Issue keys that are not known on this Jira instance (if any). + * + * These may be invalid keys (e.g. `UTF-8` is sometimes incorrectly identified as a Jira issue key), or they may be for projects that no longer exist. + * + * If a Feature Flag has been associated with issue keys other than those in this array it will still be stored against those valid keys. + * If a Feature Flag was only associated with issue keys deemed to be invalid it won't be persisted. + */ + unknownIssueKeys?: string[]; + }; + }; + }; + /** + * @description Request has incorrect format. + * + * Note that in the case of an individual Feature Flag having an invalid format (rather than the request as a whole) the response for the request will be a 202 and details of the invalid Feature Flag will be contained in the response object. + */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the Feature Flags module, + * or the app does not define the 'WRITE' scope. + */ + 403: { + content: never; + }; + /** @description Data is too large. Submit fewer Feature Flags in each payload. */ + 413: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete Feature Flags by Property + * @description Bulk delete all Feature Flags that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. Optional param `_updateSequenceId` is no longer supported. + * If more than one Property is provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). + * See the documentation for the submitFeatureFlags operation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456 + * + * Deletion is performed asynchronously. The getFeatureFlagById operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteFeatureFlagsByProperty: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceId` to use to control deletion. + * + * Only stored data with an `updateSequenceId` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + * + * If not provided, all stored data that matches the request will be deleted. + */ + _updateSequenceId?: number; + }; + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format (e.g. missing at least one Property param). */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the Feature Flags module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get a Feature Flag by ID + * @description Retrieve the currently stored Feature Flag data for the given ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getFeatureFlagById: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + path: { + /** @description The ID of the Feature Flag to fetch. */ + featureFlagId: string; + }; + }; + responses: { + /** @description The Feature Flag data currently stored for the given ID. */ + 200: { + content: { + "application/json": { + /** + * @description The FeatureFlagData schema version used for this flag data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * @description The identifier for the Feature Flag. Must be unique for a given Provider. + * + * @example 111-222-333 + */ + id: string; + /** + * @description The identifier that users would use to reference the Feature Flag in their source code etc. + * + * Will be made available via the UI for users to copy into their source code etc. + * + * @example my-awesome-feature + */ + key: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this Feature Flag in the case of out-of-order receipt of update requests. + * + * This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the Provider system, but other alternatives are valid (e.g. a Provider could store a counter against each Feature Flag and increment that on each update to Jira). + * + * Updates for a Feature Flag that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceId: number; + /** + * @description The human-readable name for the Feature Flag. Will be shown in the UI. + * + * If not provided, will use the ID for display. + * + * @example Enable awesome feature + */ + displayName?: string; + /** @description The Jira issue keys to associate the Feature Flag information with. */ + issueKeys: string[]; + /** + * FeatureFlagSummary + * @description Summary information for a single Feature Flag. + * + * Providers may elect to provide information from a specific environment, or they may choose to 'roll up' information from across multiple environments - whatever makes most sense in the Provider system. + * + * This is the summary information that will be presented to the user on e.g. the Jira issue screen. + */ + summary: { + /** + * Format: uri + * @description A URL users can use to link to a summary view of this flag, if appropriate. + * + * This could be any location that makes sense in the Provider system (e.g. if the summary information comes from a specific environment, it might make sense to link the user to the flag in that environment). + * + * @example https://example.com/project/feature-123/summary + */ + url?: string; + /** + * FeatureFlagStatus + * @description Status information about a single Feature Flag. + */ + status: { + /** + * @description Whether the Feature Flag is enabled in the given environment (or in summary). + * + * Enabled may imply a partial rollout, which can be described using the 'rollout' field. + */ + enabled: boolean; + /** + * @description The value served by this Feature Flag when it is disabled. This could be the actual value or an alias, as appropriate. + * + * This value may be presented to the user in the UI. + * + * @example Disabled + */ + defaultValue?: string; + /** + * FeatureFlagRollout + * @description Information about the rollout of a Feature Flag in an environment (or in summary). + * + * Only one of 'percentage', 'text', or 'rules' should be provided. They will be used in that order if multiple are present. + * + * This information may be presented to the user in the UI. + * + * @example { + * "percentage": 80 + * } + */ + rollout?: { + /** @description If the Feature Flag rollout is a simple percentage rollout */ + percentage?: number; + /** @description A text status to display that represents the rollout. This could be e.g. a named cohort. */ + text?: string; + /** @description A count of the number of rules active for this Feature Flag in an environment. */ + rules?: number; + }; + }; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of the state of the Feature Flag. + * + * Providers may choose to supply the last-updated timestamp from a specific environment, or the 'most recent' last-updated timestamp across all environments - whatever makes sense in the Provider system. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + }; + /** + * @description Detail information for this Feature Flag. + * + * This may be information for each environment the Feature Flag is defined in or a selection of environments made by the user, as appropriate. + */ + details: { + /** + * Format: uri + * @description A URL users can use to link to this Feature Flag, in this environment. + * + * @example https://example.com/project/feature-123/production + */ + url: string; + /** + * Format: date-time + * @description The last-updated timestamp for this Feature Flag, in this environment. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * EnvironmentDetails + * @description Details of a single environment. + * + * At the simplest this must be the name of the environment. + * + * Ideally there is also type information which may be used to group data from multiple Feature Flags and other entities for visualisation in the UI. + * + * @example { + * "name": "prod-us-west", + * "type": "production" + * } + */ + environment: { + /** @description The name of the environment. */ + name: string; + /** + * @description The 'type' or 'category' of environment this environment belongs to. + * @enum {string} + */ + type?: "development" | "testing" | "staging" | "production"; + }; + /** + * FeatureFlagStatus + * @description Status information about a single Feature Flag. + */ + status: { + /** + * @description Whether the Feature Flag is enabled in the given environment (or in summary). + * + * Enabled may imply a partial rollout, which can be described using the 'rollout' field. + */ + enabled: boolean; + /** + * @description The value served by this Feature Flag when it is disabled. This could be the actual value or an alias, as appropriate. + * + * This value may be presented to the user in the UI. + * + * @example Disabled + */ + defaultValue?: string; + /** + * FeatureFlagRollout + * @description Information about the rollout of a Feature Flag in an environment (or in summary). + * + * Only one of 'percentage', 'text', or 'rules' should be provided. They will be used in that order if multiple are present. + * + * This information may be presented to the user in the UI. + * + * @example { + * "percentage": 80 + * } + */ + rollout?: { + /** @description If the Feature Flag rollout is a simple percentage rollout */ + percentage?: number; + /** @description A text status to display that represents the rollout. This could be e.g. a named cohort. */ + text?: string; + /** @description A count of the number of rules active for this Feature Flag in an environment. */ + rules?: number; + }; + }; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the Feature Flags module, + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No data found for the given Feature Flag ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete a Feature Flag by ID + * @description Delete the Feature Flag data currently stored for the given ID. + * + * Deletion is performed asynchronously. The getFeatureFlagById operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteFeatureFlagById: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceId` to use to control deletion. + * + * Only stored data with an `updateSequenceId` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + */ + _updateSequenceId?: number; + }; + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + path: { + /** @description The ID of the Feature Flag to delete. */ + featureFlagId: string; + }; + }; + responses: { + /** @description Delete has been accepted. Data will eventually be removed from Jira if it exists. */ + 202: { + content: never; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the Feature Flags module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Submit deployment data + * @description Update / insert deployment data. + * + * Deployments are identified by the combination of `pipelineId`, `environmentId` and `deploymentSequenceNumber`, and existing deployment data for the same deployment will be replaced if it exists and the `updateSequenceNumber` of existing data is less than the incoming data. + * + * Submissions are processed asynchronously. Submitted data will eventually be available in Jira. Most updates are available within a short period of time, but may take some time during peak load and/or maintenance times. The `getDeploymentByKey` operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple deployments being submitted in one request, each is validated individually prior to submission. Details of which deployments failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + submitDeployments: { + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + /** @description Deployment data to submit. */ + requestBody: { + content: { + "application/json": { + /** + * Properties + * @description Properties assigned to deployment data that can then be used for delete / query operations. + * + * Examples might be an account or user ID that can then be used to clean up data if an account is removed from the Provider system. + * + * Properties are supplied as key/value pairs, and a maximum of 5 properties can be supplied, keys cannot contain ':' or start with '_'. + * + * @example { + * "accountId": "account-234", + * "projectId": "project-123" + * } + */ + properties?: { + [key: string]: string; + }; + /** + * @description A list of deployments to submit to Jira. + * + * Each deployment may be associated with one or more Jira issue keys, and will be associated with any properties included in this request. + */ + deployments: { + /** + * Format: int64 + * @description This is the identifier for the deployment. It must be unique for the specified pipeline and environment. It must be a monotonically increasing number, as this is used to sequence the deployments. + * + * @example 100 + */ + deploymentSequenceNumber: number; + /** + * Format: int64 + * @description A number used to apply an order to the updates to the deployment, as identified by the deploymentSequenceNumber, in the case of out-of-order receipt of update requests. It must be a monotonically increasing number. For example, epoch time could be one way to generate the updateSequenceNumber. + * + * @example 1 + */ + updateSequenceNumber: number; + /** + * @deprecated + * @description Deprecated. The Jira issue keys to associate the Deployment information with. + * Should replace this field with the "associations" field to associate Deployment information with issueKeys or other types of associations. + */ + issueKeys?: string[]; + /** + * @description The entities to associate the Deployment information with. + * It must contain at least one of IssueIdOrKeysAssociation or ServiceIdOrKeysAssociation. + */ + associations?: OneOf<[ + { + /** + * @description Defines the asssociation type. + * + * @example issueIdOrKeys + * @enum {string} + */ + associationType: "issueKeys" | "issueIdOrKeys"; + /** + * @description The Jira issue keys to associate the Deployment information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }, + { + /** + * @description Defines the asssociation type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Deployment information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } + ]>[]; + /** + * @description The human-readable name for the deployment. Will be shown in the UI. + * + * @example Deployment number 16 of Data Depot + */ + displayName: string; + /** + * Format: uri + * @description A URL users can use to link to this deployment, in this environment. + * + * @example http://mydeployer.com/project1/1111-222-333/prod-east + */ + url: string; + /** + * @description A short description of the deployment + * + * @example The bits are being transferred + */ + description: string; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of the state of the deployment. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * @description An (optional) additional label that may be displayed with deployment information. Can be used to display version information etc. for the deployment. + * + * @example Release 2018-01-20_08-47-bc2421a + */ + label?: string; + /** + * @description The state of the deployment + * + * @example in_progress + * @enum {string} + */ + state: "unknown" | "pending" | "in_progress" | "cancelled" | "failed" | "rolled_back" | "successful"; + /** + * Pipeline + * @description This object models the Continuous Delivery (CD) Pipeline concept, an automated process (usually comprised of multiple stages) + * + * for getting software from version control right through to the production environment. + */ + pipeline: { + /** + * @description The identifier of this pipeline, must be unique for the provider. + * + * @example e9c906a7-451f-4fa6-ae1a-c389e2e2d87c + */ + id: string; + /** + * @description The name of the pipeline to present to the user. + * + * @example Data Depot Deployment + */ + displayName: string; + /** + * Format: uri + * @description A URL users can use to link to this deployment pipeline. + * + * @example http://mydeployer.com/project1 + */ + url: string; + }; + /** + * Environment + * @description The environment that the deployment is present in. + */ + environment: { + /** + * @description The identifier of this environment, must be unique for the provider so that it can be shared across pipelines. + * + * @example 8ec94d72-a4fc-4ac0-b31d-c5a595f373ba + */ + id: string; + /** + * @description The name of the environment to present to the user. + * + * @example US East + */ + displayName: string; + /** + * @description The type of the environment. + * + * @example production + * @enum {string} + */ + type: "unmapped" | "development" | "testing" | "staging" | "production"; + }; + /** + * Commands + * @description A list of commands to be actioned for this Deployment + */ + commands?: { + /** + * @description The command name. + * + * @example initiate_deployment_gating + */ + command?: string; + }[]; + /** + * @description The DeploymentData schema version used for this deployment data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * triggeredBy + * @description Describes the user who triggered the deployment + */ + triggeredBy?: { + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + }; + }[]; + /** + * ProviderMetadata + * @description Information about the provider. This is useful for auditing, logging, debugging, + * and other internal uses. It is not considered private information. Hence, it may not contain personally + * identifiable information. + */ + providerMetadata?: { + /** + * @description An optional name of the source of the deployments data. + * @example Bamboo 6.10.2 + */ + product?: string; + }; + }; + }; + }; + responses: { + /** + * @description Submission accepted. Each submitted deployment that is of a valid format will eventually be available in Jira. + * + * Details of which deployments were submitted and which failed submission (due to data format problems etc.) are available in the response object. + */ + 202: { + content: { + "application/json": { + /** + * @description The keys of deployments that have been accepted for submission. A deployment key is a composite key that consists of `pipelineId`, `environmentId` and `deploymentSequenceNumber`. + * + * A deployment may be rejected if it was only associated with unknown issue keys. + * + * Note that a deployment that isn't updated due to it's updateSequenceNumber being out of order is not considered a failed submission. + */ + acceptedDeployments?: { + /** + * @description The identifier of a pipeline, must be unique for the provider. + * + * @example e9c906a7-451f-4fa6-ae1a-c389e2e2d87c + */ + pipelineId: string; + /** + * @description The identifier of an environment, must be unique for the provider so that it can be shared across pipelines. + * + * @example 8ec94d72-a4fc-4ac0-b31d-c5a595f373ba + */ + environmentId: string; + /** + * Format: int64 + * @description This is the identifier for the deployment. It must be unique for the specified pipeline and environment. It must be a monotonically increasing number, as this is used to sequence the deployments. + * + * @example 100 + */ + deploymentSequenceNumber: number; + }[]; + /** + * @description Details of deployments that have not been accepted for submission, usually due to a problem with the request data. + * + * The object will contain the deployment key and any errors associated with that deployment that have prevented it being submitted. + */ + rejectedDeployments?: { + /** + * DeploymentKey + * @description Fields that uniquely reference a deployment. + */ + key: { + /** + * @description The identifier of a pipeline, must be unique for the provider. + * + * @example e9c906a7-451f-4fa6-ae1a-c389e2e2d87c + */ + pipelineId: string; + /** + * @description The identifier of an environment, must be unique for the provider so that it can be shared across pipelines. + * + * @example 8ec94d72-a4fc-4ac0-b31d-c5a595f373ba + */ + environmentId: string; + /** + * Format: int64 + * @description This is the identifier for the deployment. It must be unique for the specified pipeline and environment. It must be a monotonically increasing number, as this is used to sequence the deployments. + * + * @example 100 + */ + deploymentSequenceNumber: number; + }; + /** @description The error messages for the rejected deployment */ + errors: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }[]; + /** + * @description Issue keys that are not known on this Jira instance (if any). + * + * These may be invalid keys (e.g. `UTF-8` is sometimes incorrectly identified as a Jira issue key), or they may be for projects that no longer exist. + * + * If a deployment has been associated with issue keys other than those in this array it will still be stored against those valid keys. + * If a deployment was only associated with issue keys deemed to be invalid it won't be persisted. + */ + unknownIssueKeys?: string[]; + /** + * @description Associations (e.g. Issue Keys or Service IDs) that are not known on this Jira instance (if any). + * + * These may be invalid keys (e.g. `UTF-8` is sometimes incorrectly identified as a Jira issue key), or they may be for projects that no longer exist. + * + * If a deployment has been associated with any other association other than those in this array it will still be stored against those valid associations. + * If a deployment was only associated with the associations in this array, it is deemed to be invalid and it won't be persisted. + */ + unknownAssociations?: ({ + /** + * @description Defines the asssociation type. + * + * @example issueIdOrKeys + * @enum {string} + */ + associationType: "issueKeys" | "issueIdOrKeys"; + /** + * @description The Jira issue keys to associate the Deployment information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } | { + /** + * @description Defines the asssociation type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Deployment information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } | { + /** + * @description Defines the association type. Currently supported entities can be found in this field's value enums list. + * + * @enum {string} + */ + associationType: "commit"; + /** + * @description The entity keys that represent the entities to be associated. + * The number of values counted across all associationTypes (issueKeys, issueIdOrKeys, serviceIdOrKeys, supported ATIs and entity associations) must not exceed a limit of 500. + */ + values: { + /** + * @description The hash for the Commit. + * + * @example b00152456cf4 + */ + commitHash: string; + /** + * @description The ID of the Repository that the Commit belongs to. + * + * @example de7fbebffabe + */ + repositoryId: string; + }[]; + })[]; + }; + }; + }; + /** + * @description Request has incorrect format. + * + * Note that in the case of an individual deployment having an invalid format (rather than the request as a whole) the response for the request will be a 202 and details of the invalid deployment will be contained in the response object. + */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraDeploymentInfoProvider` module, + * or the app does not define the 'WRITE' scope. + */ + 403: { + content: never; + }; + /** @description Data is too large. Submit fewer deployments in each payload. */ + 413: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete deployments by Property + * @description Bulk delete all deployments that match the given request. + * + * One or more query params must be supplied to specify the Properties to delete by. Optional param `_updateSequenceNumber` is no longer supported. + * If more than one Property is provided, data will be deleted that matches ALL of the Properties (i.e. treated as AND). + * See the documentation for the `submitDeployments` operation for more details. + * + * Example operation: DELETE /bulkByProperties?accountId=account-123&createdBy=user-456 + * + * Deletion is performed asynchronously. The `getDeploymentByKey` operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteDeploymentsByProperty: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `updateSequenceNumber` to use to control deletion. + * + * Only stored data with an `updateSequenceNumber` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + * + * If not provided, all stored data that matches the request will be deleted. + */ + _updateSequenceNumber?: number; + }; + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format (e.g. missing at least one Property param). */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraDeploymentInfoProvider` module, + * or the app does not define the 'DELETE' scope for Connect apps. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get a deployment by key + * @description Retrieve the currently stored deployment data for the given `pipelineId`, `environmentId` and `deploymentSequenceNumber` combination. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getDeploymentByKey: { + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + path: { + /** @description The ID of the deployment's pipeline. */ + pipelineId: string; + /** @description The ID of the deployment's environment. */ + environmentId: string; + /** @description The deployment's deploymentSequenceNumber. */ + deploymentSequenceNumber: number; + }; + }; + responses: { + /** @description The deployment data currently stored for the given ID. */ + 200: { + content: { + "application/json": { + /** + * Format: int64 + * @description This is the identifier for the deployment. It must be unique for the specified pipeline and environment. It must be a monotonically increasing number, as this is used to sequence the deployments. + * + * @example 100 + */ + deploymentSequenceNumber: number; + /** + * Format: int64 + * @description A number used to apply an order to the updates to the deployment, as identified by the deploymentSequenceNumber, in the case of out-of-order receipt of update requests. It must be a monotonically increasing number. For example, epoch time could be one way to generate the updateSequenceNumber. + * + * @example 1 + */ + updateSequenceNumber: number; + /** + * @deprecated + * @description Deprecated. The Jira issue keys to associate the Deployment information with. + * Should replace this field with the "associations" field to associate Deployment information with issueKeys or other types of associations. + */ + issueKeys?: string[]; + /** + * @description The entities to associate the Deployment information with. + * It must contain at least one of IssueIdOrKeysAssociation or ServiceIdOrKeysAssociation. + */ + associations?: OneOf<[ + { + /** + * @description Defines the asssociation type. + * + * @example issueIdOrKeys + * @enum {string} + */ + associationType: "issueKeys" | "issueIdOrKeys"; + /** + * @description The Jira issue keys to associate the Deployment information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }, + { + /** + * @description Defines the asssociation type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Deployment information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } + ]>[]; + /** + * @description The human-readable name for the deployment. Will be shown in the UI. + * + * @example Deployment number 16 of Data Depot + */ + displayName: string; + /** + * Format: uri + * @description A URL users can use to link to this deployment, in this environment. + * + * @example http://mydeployer.com/project1/1111-222-333/prod-east + */ + url: string; + /** + * @description A short description of the deployment + * + * @example The bits are being transferred + */ + description: string; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of the state of the deployment. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * @description An (optional) additional label that may be displayed with deployment information. Can be used to display version information etc. for the deployment. + * + * @example Release 2018-01-20_08-47-bc2421a + */ + label?: string; + /** + * @description The state of the deployment + * + * @example in_progress + * @enum {string} + */ + state: "unknown" | "pending" | "in_progress" | "cancelled" | "failed" | "rolled_back" | "successful"; + /** + * Pipeline + * @description This object models the Continuous Delivery (CD) Pipeline concept, an automated process (usually comprised of multiple stages) + * + * for getting software from version control right through to the production environment. + */ + pipeline: { + /** + * @description The identifier of this pipeline, must be unique for the provider. + * + * @example e9c906a7-451f-4fa6-ae1a-c389e2e2d87c + */ + id: string; + /** + * @description The name of the pipeline to present to the user. + * + * @example Data Depot Deployment + */ + displayName: string; + /** + * Format: uri + * @description A URL users can use to link to this deployment pipeline. + * + * @example http://mydeployer.com/project1 + */ + url: string; + }; + /** + * Environment + * @description The environment that the deployment is present in. + */ + environment: { + /** + * @description The identifier of this environment, must be unique for the provider so that it can be shared across pipelines. + * + * @example 8ec94d72-a4fc-4ac0-b31d-c5a595f373ba + */ + id: string; + /** + * @description The name of the environment to present to the user. + * + * @example US East + */ + displayName: string; + /** + * @description The type of the environment. + * + * @example production + * @enum {string} + */ + type: "unmapped" | "development" | "testing" | "staging" | "production"; + }; + /** + * Commands + * @description A list of commands to be actioned for this Deployment + */ + commands?: { + /** + * @description The command name. + * + * @example initiate_deployment_gating + */ + command?: string; + }[]; + /** + * @description The DeploymentData schema version used for this deployment data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraDeploymentInfoProvider` module, + * + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No data found for the given deployment ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete a deployment by key + * @description Delete the currently stored deployment data for the given `pipelineId`, `environmentId` and `deploymentSequenceNumber` combination. + * + * Deletion is performed asynchronously. The `getDeploymentByKey` operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteDeploymentByKey: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceNumber` to use to control deletion. + * + * Only stored data with an `updateSequenceNumber` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + */ + _updateSequenceNumber?: number; + }; + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + path: { + /** @description The ID of the deployment's pipeline. */ + pipelineId: string; + /** @description The ID of the deployment's environment. */ + environmentId: string; + /** @description The deployment's deploymentSequenceNumber. */ + deploymentSequenceNumber: number; + }; + }; + responses: { + /** @description Delete has been accepted. Data will eventually be removed from Jira if it exists. */ + 202: { + content: never; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraDeploymentInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get deployment gating status by key + * @description Retrieve the Deployment gating status for the given `pipelineId + environmentId + deploymentSequenceNumber` combination. + * Only apps that define the `jiraDeploymentInfoProvider` module can access this resource. This resource requires the 'READ' scope. + */ + getDeploymentGatingStatusByKey: { + parameters: { + path: { + /** @description The ID of the Deployment's pipeline. */ + pipelineId: string; + /** @description The ID of the Deployment's environment. */ + environmentId: string; + /** @description The Deployment's deploymentSequenceNumber. */ + deploymentSequenceNumber: number; + }; + }; + responses: { + /** @description The current gating status for the given Deployment */ + 200: { + content: { + "application/json": { + /** + * Format: int64 + * @description This is the identifier for the Deployment. + * + * @example 100 + */ + deploymentSequenceNumber?: number; + /** + * @description The ID of the Deployment's pipeline. + * + * @example e9c906a7-451f-4fa6-ae1a-c389e2e2d87c + */ + pipelineId?: string; + /** + * @description The ID of the Deployment's environment. + * + * @example 8ec94d72-a4fc-4ac0-b31d-c5a595f373ba + */ + environmentId?: string; + /** + * Format: date-time + * @description Time the deployment gating status was updated. + * + * @example 2020-08-25T06:04:50.239Z + */ + updatedTimestamp?: string; + /** + * @description The gating status + * + * @example allowed + * @enum {string} + */ + gatingStatus?: "allowed" | "prevented" | "awaiting" | "invalid"; + details?: { + /** + * @description The type of the gating status details. + * + * @example issue + * @enum {string} + */ + type: "issue"; + /** + * IssueKey + * @description An issue key that references an issue in Jira. + * + * @example ABC-123 + */ + issueKey: string; + /** + * Format: uri + * @description A full HTTPS link to the Jira issue for the change request gating this Deployment. This field is provided if the details type is issue. + * + * @example https://your-domain.atlassian.net/servicedesk/customer/portal/1/ZAINA-123 + */ + issueLink: string; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the `jiraDeploymentInfoProvider` module, */ + 403: { + content: never; + }; + /** @description No data found for the given deployment ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Submit build data + * @description Update / insert builds data. + * + * Builds are identified by the combination of `pipelineId` and `buildNumber`, and existing build data for the same + * build will be replaced if it exists and the `updateSequenceNumber` of the existing data is less than the + * incoming data. + * + * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are + * available within a short period of time, but may take some time during peak load and/or maintenance times. + * The `getBuildByKey` operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple builds being submitted in one request, each is validated individually prior to + * submission. Details of which build failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + submitBuilds: { + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + /** @description Builds data to submit. */ + requestBody: { + content: { + "application/json": { + /** + * Properties + * @description Properties assigned to build data that can then be used for delete / query operations. + * + * Examples might be an account or user ID that can then be used to clean up data if an account is removed from + * the Provider system. + * + * Note that these properties will never be returned with build data. They are not intended for use as + * metadata to associate with a build. Internally they are stored as a hash so that personal information etc. + * is never stored within Jira. + * + * Properties are supplied as key/value pairs, a maximum of 5 properties can be supplied, and keys must not + * contain ':' or start with '_'. + * + * @example { + * "accountId": "account-234", + * "projectId": "project-123" + * } + */ + properties?: { + [key: string]: string; + }; + /** + * @description A list of builds to submit to Jira. + * + * Each build may be associated with one or more Jira issue keys, and will be associated with any properties + * included in this request. + */ + builds: { + /** + * @description The schema version used for this data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * @description An ID that relates a sequence of builds. Depending on your use case this might be a project ID, pipeline ID, + * plan key etc. - whatever logical unit you use to group a sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify a build you have provided. + * + * @example my-build-plan + */ + pipelineId: string; + /** + * Format: int64 + * @description Identifies a build within the sequence of builds identified by the build `pipelineId`. + * + * Used to identify the 'most recent' build in that sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify a build you have provided. + * + * @example 16 + */ + buildNumber: number; + /** + * Format: int64 + * @description A number used to apply an order to the updates to the build, as identified by `pipelineId` and `buildNumber`, + * in the case of out-of-order receipt of update requests. + * + * It must be a monotonically increasing number. For example, epoch time could be one way to generate the + * `updateSequenceNumber`. + * + * Updates for a build that is received with an `updateSqeuenceNumber` less than or equal to what is currently + * stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceNumber: number; + /** + * @description The human-readable name for the build. + * + * Will be shown in the UI. + * + * @example My Project build #16 + */ + displayName: string; + /** + * @description An optional description to attach to this build. + * + * This may be anything that makes sense in your system. + * + * @example My Project build #16: Failed + */ + description?: string; + /** @description A human-readable string that to provide information about the build. */ + label?: string; + /** + * Format: URL + * @description The URL to this build in your system. + */ + url: string; + /** + * BuildState + * @description The state of a build. + * + * * `pending` - The build is queued, or some manual action is required. + * * `in_progress` - The build is currently running. + * * `successful` - The build completed successfully. + * * `failed` - The build failed. + * * `cancelled` - The build has been cancelled or stopped. + * * `unknown` - The build is in an unknown state. + * + * @example failed + * @enum {string} + */ + state: "pending" | "in_progress" | "successful" | "failed" | "cancelled" | "unknown"; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of the state of the build. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * @description The Jira issue keys to associate the build information with. + * + * You are free to associate issue keys in any way you like. However, we recommend that you use the name + * of the branch the build was executed on, and extract issue keys from that name using a simple regex. This has + * the advantage that it provides an intuitive association of builds to issue keys. + */ + issueKeys: string[]; + /** + * TestInfo + * @description Information about tests that were executed during a build. + */ + testInfo?: { + /** + * Format: int64 + * @description The total number of tests considered during a build. + * + * @example 150 + */ + totalNumber: number; + /** + * Format: int64 + * @description The number of tests that passed during a build. + * + * @example 145 + */ + numberPassed: number; + /** + * Format: int64 + * @description The number of tests that failed during a build. + * + * @example 5 + */ + numberFailed: number; + /** + * Format: int64 + * @description The number of tests that were skipped during a build. + * + * @default 0 + * @example 0 + */ + numberSkipped?: number; + }; + /** @description Optional information that links a build to a commit, branch etc. */ + references?: { + /** + * BuildCommitReference + * @description Details about the commit the build was run against. + */ + commit?: { + /** + * @description The ID of the commit. E.g. for a Git repository this would be the SHA1 hash. + * + * @example 08cd9c26b2b8d7cf6e6af6b49da8895d065c259f + */ + id: string; + /** + * @description An identifier for the repository containing the commit. + * + * In most cases this should be the URL of the repository in the SCM provider. + * + * For cases where the build was executed against a local repository etc. this should be some identifier that is + * unique to that repository. + * + * @example https://bitbucket.org/atlassian/biij-vendor-api + */ + repositoryUri: string; + }; + /** + * BuildRefReference + * @description Details about the ref the build was run on. + */ + ref?: { + /** + * @description The name of the ref the build ran on + * + * @example feature/ISSUE-123-some-work + */ + name: string; + /** + * @description An identifer for the ref. + * + * In most cases this should be the URL of the tag/branch etc. in the SCM provider. + * + * For cases where the build was executed against a local repository etc. this should be something that uniquely + * identifies the ref. + * + * @example https://bitbucket.org/atlassian/biij-vendor-api/refs/feature/ISSUE-123-some-work + */ + uri: string; + }; + }[]; + }[]; + /** + * ProviderMetadata + * @description Information about the provider. This is useful for auditing, logging, debugging, + * and other internal uses. It is not considered private information. Hence, it may not contain personally + * identifiable information. + */ + providerMetadata?: { + /** + * @description An optional name of the source of the builds data. + * @example Bamboo 6.10.2 + */ + product?: string; + }; + }; + }; + }; + responses: { + /** + * @description Submission accepted. Each submitted build that is of a valid format will be eventually available in Jira. + * + * Details of which builds were submitted and which failed submission (due to data format problems etc.) + * are available in the response object. + */ + 202: { + content: { + "application/json": { + /** + * @description The keys of builds that have been accepted for submission. A build key is a composite key that consists of + * `pipelineId` and `buildNumber`. + * + * A build may be rejected if it was only associated with unknown issue keys, or if the submitted data for that + * build does not match the required schema. + * + * Note that a build that isn't updated due to it's `updateSequenceNumber` being out of order is not + * considered a failed submission. + */ + acceptedBuilds?: { + /** + * @description An ID that relates a sequence of builds. Depending on your system this might be a project ID, pipeline ID, + * plan key etc. - whatever logical unit you use to group a sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify the build. + * + * @example my-build-plan + */ + pipelineId: string; + /** + * Format: int64 + * @description Identifies a build within the sequence of builds identified by the build `pipelineId`. + * + * Used to identify the 'most recent' build in that sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify the build. + * + * @example 16 + */ + buildNumber: number; + }[]; + /** + * @description Details of builds that have not been accepted for submission. + * + * A build may be rejected if it was only associated with unknown issue keys, or if the submitted data for the + * build does not match the required schema. + */ + rejectedBuilds?: { + /** + * BuildKey + * @description Fields that uniquely reference a build. + */ + key: { + /** + * @description An ID that relates a sequence of builds. Depending on your system this might be a project ID, pipeline ID, + * plan key etc. - whatever logical unit you use to group a sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify the build. + * + * @example my-build-plan + */ + pipelineId: string; + /** + * Format: int64 + * @description Identifies a build within the sequence of builds identified by the build `pipelineId`. + * + * Used to identify the 'most recent' build in that sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify the build. + * + * @example 16 + */ + buildNumber: number; + }; + /** @description The error messages for the rejected build */ + errors: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }[]; + /** + * @description Issue keys that are not known on this Jira instance (if any). + * + * These may be invalid keys (e.g. `UTF-8` is sometimes incorrectly identified as a Jira issue key), or they + * may be for projects that no longer exist. + * + * If a build has been associated with issue keys other than those in this array it will still be stored against + * those valid keys. If a build was only associated with issue keys deemed to be invalid it won't be persisted. + */ + unknownIssueKeys?: string[]; + }; + }; + }; + /** + * @description Request has incorrect format. + * + * Note that in the case of an individual build having an invalid format (rather than the request as a whole) + * the response for the request will be a 202 and details of the invalid build will be contained in the + * response object. + */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraBuildInfoProvider` module, + * or the app does not define the 'WRITE' scope. + */ + 403: { + content: never; + }; + /** @description Data is too large. Submit fewer builds in each payload. */ + 413: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete builds by Property + * @description Bulk delete all builds data that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. + * Optional param `_updateSequenceNumber` is no longer supported. + * If more than one Property is provided, data will be deleted that matches ALL of the + * Properties (e.g. treated as an AND). + * + * See the documentation for the `submitBuilds` operation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&repoId=repo-345 + * + * Deletion is performed asynchronously. The `getBuildByKey` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteBuildsByProperty: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceNumber` to use to control deletion. + * + * Only stored data with an `updateSequenceNumber` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + * + * If not provided, all stored data that matches the request will be deleted. + */ + _updateSequenceNumber?: number; + }; + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format (e.g. missing at least one Property param). */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraBuildInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get a build by key + * @description Retrieve the currently stored build data for the given `pipelineId` and `buildNumber` combination. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getBuildByKey: { + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + path: { + /** @description The `pipelineId` of the build. */ + pipelineId: string; + /** @description The `buildNumber` of the build. */ + buildNumber: number; + }; + }; + responses: { + /** @description The build data currently stored for the given key. */ + 200: { + content: { + "application/json": { + /** + * @description The schema version used for this data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * @description An ID that relates a sequence of builds. Depending on your use case this might be a project ID, pipeline ID, + * plan key etc. - whatever logical unit you use to group a sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify a build you have provided. + * + * @example my-build-plan + */ + pipelineId: string; + /** + * Format: int64 + * @description Identifies a build within the sequence of builds identified by the build `pipelineId`. + * + * Used to identify the 'most recent' build in that sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify a build you have provided. + * + * @example 16 + */ + buildNumber: number; + /** + * Format: int64 + * @description A number used to apply an order to the updates to the build, as identified by `pipelineId` and `buildNumber`, + * in the case of out-of-order receipt of update requests. + * + * It must be a monotonically increasing number. For example, epoch time could be one way to generate the + * `updateSequenceNumber`. + * + * Updates for a build that is received with an `updateSqeuenceNumber` less than or equal to what is currently + * stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceNumber: number; + /** + * @description The human-readable name for the build. + * + * Will be shown in the UI. + * + * @example My Project build #16 + */ + displayName: string; + /** + * @description An optional description to attach to this build. + * + * This may be anything that makes sense in your system. + * + * @example My Project build #16: Failed + */ + description?: string; + /** @description A human-readable string that to provide information about the build. */ + label?: string; + /** + * Format: URL + * @description The URL to this build in your system. + */ + url: string; + /** + * BuildState + * @description The state of a build. + * + * * `pending` - The build is queued, or some manual action is required. + * * `in_progress` - The build is currently running. + * * `successful` - The build completed successfully. + * * `failed` - The build failed. + * * `cancelled` - The build has been cancelled or stopped. + * * `unknown` - The build is in an unknown state. + * + * @example failed + * @enum {string} + */ + state: "pending" | "in_progress" | "successful" | "failed" | "cancelled" | "unknown"; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of the state of the build. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * @description The Jira issue keys to associate the build information with. + * + * You are free to associate issue keys in any way you like. However, we recommend that you use the name + * of the branch the build was executed on, and extract issue keys from that name using a simple regex. This has + * the advantage that it provides an intuitive association of builds to issue keys. + */ + issueKeys: string[]; + /** + * TestInfo + * @description Information about tests that were executed during a build. + */ + testInfo?: { + /** + * Format: int64 + * @description The total number of tests considered during a build. + * + * @example 150 + */ + totalNumber: number; + /** + * Format: int64 + * @description The number of tests that passed during a build. + * + * @example 145 + */ + numberPassed: number; + /** + * Format: int64 + * @description The number of tests that failed during a build. + * + * @example 5 + */ + numberFailed: number; + /** + * Format: int64 + * @description The number of tests that were skipped during a build. + * + * @default 0 + * @example 0 + */ + numberSkipped?: number; + }; + /** @description Optional information that links a build to a commit, branch etc. */ + references?: { + /** + * BuildCommitReference + * @description Details about the commit the build was run against. + */ + commit?: { + /** + * @description The ID of the commit. E.g. for a Git repository this would be the SHA1 hash. + * + * @example 08cd9c26b2b8d7cf6e6af6b49da8895d065c259f + */ + id: string; + /** + * @description An identifier for the repository containing the commit. + * + * In most cases this should be the URL of the repository in the SCM provider. + * + * For cases where the build was executed against a local repository etc. this should be some identifier that is + * unique to that repository. + * + * @example https://bitbucket.org/atlassian/biij-vendor-api + */ + repositoryUri: string; + }; + /** + * BuildRefReference + * @description Details about the ref the build was run on. + */ + ref?: { + /** + * @description The name of the ref the build ran on + * + * @example feature/ISSUE-123-some-work + */ + name: string; + /** + * @description An identifer for the ref. + * + * In most cases this should be the URL of the tag/branch etc. in the SCM provider. + * + * For cases where the build was executed against a local repository etc. this should be something that uniquely + * identifies the ref. + * + * @example https://bitbucket.org/atlassian/biij-vendor-api/refs/feature/ISSUE-123-some-work + */ + uri: string; + }; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraBuildInfoProvider` module, + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No build data found for the given key. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete a build by key + * @description Delete the build data currently stored for the given `pipelineId` and `buildNumber` combination. + * + * Deletion is performed asynchronously. The `getBuildByKey` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteBuildByKey: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceNumber` to use to control deletion. + * + * Only stored data with an `updateSequenceNumber` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + */ + _updateSequenceNumber?: number; + }; + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + path: { + /** @description The `pipelineId` of the build to delete. */ + pipelineId: string; + /** @description The `buildNumber` of the build to delete. */ + buildNumber: number; + }; + }; + responses: { + /** @description Delete has been accepted. Data will eventually be removed from Jira if it exists. */ + 202: { + content: never; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraBuildInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Submit Remote Link data + * @description Update / insert Remote Link data. + * + * Remote Links are identified by their ID, existing Remote Link data for the same ID will be replaced if it + * exists and the updateSequenceId of existing data is less than the incoming data. + * + * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are + * available within a short period of time, but may take some time during peak load and/or maintenance times. + * The `getRemoteLinkById` operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple Remote Links being submitted in one request, each is validated individually prior to + * submission. Details of which Remote LInk failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module can access this resource. This resource + * requires the 'WRITE' scope for Connect apps. + */ + submitRemoteLinks: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + /** @description Remote Links data to submit. */ + requestBody: { + content: { + "application/json": { + /** + * Properties + * @description Properties assigned to Remote Link data that can then be used for delete / query operations. + * + * Examples might be an account or user ID that can then be used to clean up data if an account is removed from + * the Provider system. + * + * Properties are supplied as key/value pairs, a maximum of 5 properties can be supplied, and keys must not + * contain ':' or start with '_'. + * + * @example { + * "accountId": "account-234", + * "projectId": "project-123" + * } + */ + properties?: { + [key: string]: string; + }; + /** + * @description A list of Remote Links to submit to Jira. + * + * Each Remote Link may be associated with one or more Jira issue keys, and will be associated with any properties + * included in this request. + */ + remoteLinks: { + /** + * @description The schema version used for this data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * @description The identifier for the Remote Link. Must be unique for a given Provider. + * + * @example 111-222-333 + */ + id: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this Remote Link in the case of out-of-order receipt of + * update requests. + * + * It must be a monotonically increasing number. For example, epoch time could be one way to generate the + * `updateSequenceNumber`. + * + * Updates for a Remote Link that is received with an `updateSqeuenceNumber` less than or equal to what is currently + * stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceNumber: number; + /** + * @description The human-readable name for the Remote Link. + * + * Will be shown in the UI. + * + * @example Remote Link #42 + */ + displayName: string; + /** + * Format: uri + * @description The URL to this Remote Link in your system. + */ + url: string; + /** + * @description The type of the Remote Link. The current supported types are 'document', 'alert', 'test', + * 'security', 'logFile', 'prototype', 'coverage', 'bugReport' and 'other' + * + * @example security + * @enum {string} + */ + type: "document" | "alert" | "test" | "security" | "logFile" | "prototype" | "coverage" | "bugReport" | "other"; + /** + * @description An optional description to attach to this Remote Link. + * + * This may be anything that makes sense in your system. + * + * @example Remote Link #42 with more information in this description + */ + description?: string; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of when Remote Link was last updated. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** @description The entities to associate the Remote Link information with. */ + associations?: ({ + /** + * @description Defines the asssociation type. + * + * @example issueKeys + * @enum {string} + */ + associationType: "issueKeys"; + /** + * @description The Jira issue keys to associate the Remote Link information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } | { + /** + * @description Defines the asssociation type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Remote Link information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + })[]; + /** + * RemoteLinkStatus + * @description The status of a Remote Link. + */ + status?: { + /** + * @description Appearance is a fixed set of appearance types affecting the colour + * of the status lozenge in the UI. The colours they correspond to are + * equivalent to atlaskit's [Lozenge](https://atlaskit.atlassian.com/packages/core/lozenge) component. + * + * @example inprogress + * @enum {string} + */ + appearance: "default" | "inprogress" | "moved" | "new" | "removed" | "prototype" | "success"; + /** + * @description The human-readable description for the Remote Link status. + * + * Will be shown in the UI. + * + * @example ANOMALOUS + */ + label: string; + }; + /** + * @description Optional list of actionIds. They are associated with the actions the provider is able to provide when they + * registered. Indicates which actions this Remote Link has. + * + * If any actions have a templateUrl that requires string substitution, then `attributeMap` must be passed in. + * + * @example [ + * "action-111-222-333", + * "action-444-555-666" + * ] + */ + actionIds?: string[]; + /** + * @description Map of key/values (string to string mapping). This is used to build the urls for actions from the + * templateUrl the provider registered their available actions with. + */ + attributeMap?: { + [key: string]: string; + }; + }[]; + /** + * ProviderMetadata + * @description Information about the provider. This is useful for auditing, logging, debugging, and other internal uses. It is + * not considered private information. Hence, it may not contain personally identifiable information. + */ + providerMetadata?: { + /** + * @description An optional name of the source of the Remote Links data. + * @example Opsgenie 6.10.2 + */ + product?: string; + }; + }; + }; + }; + responses: { + /** + * @description Submission accepted. Each submitted Remote Link that is of a valid format will be eventually available in + * Jira. + * + * Details of which Remote Links were submitted and which failed submission (due to data format problems etc.) + * are available in the response object. + */ + 202: { + content: { + "application/json": { + /** + * @description The IDs of Remote Links that have been accepted for submission. + * + * A Remote Link may be rejected if it was only associated with unknown issue keys, unknown service IDs, or if + * the submitted data for that Remote Link does not match the required schema. + * + * Note that a Remote Link that isn't updated due to it's `updateSequenceNumber` being out of order is not + * considered a failed submission. + * + * @example [ + * "111-222-333", + * "444-555-666" + * ] + */ + acceptedRemoteLinks?: string[]; + /** + * @description Details of Remote Links that have not been accepted for submission, usually due to a problem with the request data. + * + * A Remote Link may be rejected if it was only associated with unknown issue keys, unknown service IDs, or + * if the submitted data for the Remote Link does not match the required schema. + * + * The object (if present) will be keyed by Remote Link ID and include any errors associated with that + * Remote Link that have prevented it being submitted. + */ + rejectedRemoteLinks?: { + [key: string]: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + /** @description Issue keys or services IDs or keys that are not known on this Jira instance (if any). */ + unknownAssociations?: ({ + /** + * @description Defines the asssociation type. + * + * @example issueKeys + * @enum {string} + */ + associationType: "issueKeys"; + /** + * @description The Jira issue keys to associate the Remote Link information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } | { + /** + * @description Defines the asssociation type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Remote Link information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + })[]; + }; + }; + }; + /** + * @description Request has incorrect format. + * + * Note that in the case of an individual Remote Link having an invalid format (rather than the request as a + * whole) the response for the request will be a 202 and details of the invalid Remote Link will be contained + * in the response object. + */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraRemoteLinkInfoProvider` module, + * or the app does not define the 'WRITE' scope. + */ + 403: { + content: never; + }; + /** @description Data is too large. Submit fewer Remote Links in each payload. */ + 413: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete Remote Links by Property + * @description Bulk delete all Remote Links data that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. + * Optional param `_updateSequenceNumber` is no longer supported. If more than one Property is provided, + * data will be deleted that matches ALL of the Properties (e.g. treated as an AND). + * + * See the documentation for the `submitRemoteLinks` operation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&repoId=repo-345 + * + * Deletion is performed asynchronously. The `getRemoteLinkById` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteRemoteLinksByProperty: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceNumber` to use to control deletion. + * + * Only stored data with an `updateSequenceNumber` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + * + * If not provided, all stored data that matches the request will be deleted. + */ + _updateSequenceNumber?: number; + /** + * @description Free-form query parameters to specify which properties to delete by. Properties refer to the arbitrary + * information the provider tagged Remote Links with previously. + * + * For example, if the provider previously tagged a remote link with accountId: + * "properties": { + * "accountId": "account-123" + * } + * + * And now they want to delete Remote Links in bulk by that specific accountId as follows: + * e.g. DELETE /bulkByProperties?accountId=account-123 + */ + params?: Record; + }; + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that + * corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format (e.g. missing at least one Property param). */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraRemoteLinkInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get a Remote Link by ID + * @description Retrieve the currently stored Remote Link data for the given ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getRemoteLinkById: { + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that + * corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + path: { + /** @description The ID of the Remote Link to fetch. */ + remoteLinkId: string; + }; + }; + responses: { + /** @description The Remote Link data currently stored for the given ID. */ + 200: { + content: { + "application/json": { + /** + * @description The schema version used for this data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * @description The identifier for the Remote Link. Must be unique for a given Provider. + * + * @example 111-222-333 + */ + id: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this Remote Link in the case of out-of-order receipt of + * update requests. + * + * It must be a monotonically increasing number. For example, epoch time could be one way to generate the + * `updateSequenceNumber`. + * + * Updates for a Remote Link that is received with an `updateSqeuenceNumber` less than or equal to what is currently + * stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceNumber: number; + /** + * @description The human-readable name for the Remote Link. + * + * Will be shown in the UI. + * + * @example Remote Link #42 + */ + displayName: string; + /** + * Format: uri + * @description The URL to this Remote Link in your system. + */ + url: string; + /** + * @description The type of the Remote Link. The current supported types are 'document', 'alert', 'test', + * 'security', 'logFile', 'prototype', 'coverage', 'bugReport' and 'other' + * + * @example security + * @enum {string} + */ + type: "document" | "alert" | "test" | "security" | "logFile" | "prototype" | "coverage" | "bugReport" | "other"; + /** + * @description An optional description to attach to this Remote Link. + * + * This may be anything that makes sense in your system. + * + * @example Remote Link #42 with more information in this description + */ + description?: string; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of when Remote Link was last updated. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** @description The entities to associate the Remote Link information with. */ + associations?: ({ + /** + * @description Defines the asssociation type. + * + * @example issueKeys + * @enum {string} + */ + associationType: "issueKeys"; + /** + * @description The Jira issue keys to associate the Remote Link information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } | { + /** + * @description Defines the asssociation type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Remote Link information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + })[]; + /** + * RemoteLinkStatus + * @description The status of a Remote Link. + */ + status?: { + /** + * @description Appearance is a fixed set of appearance types affecting the colour + * of the status lozenge in the UI. The colours they correspond to are + * equivalent to atlaskit's [Lozenge](https://atlaskit.atlassian.com/packages/core/lozenge) component. + * + * @example inprogress + * @enum {string} + */ + appearance: "default" | "inprogress" | "moved" | "new" | "removed" | "prototype" | "success"; + /** + * @description The human-readable description for the Remote Link status. + * + * Will be shown in the UI. + * + * @example ANOMALOUS + */ + label: string; + }; + /** + * @description Optional list of actionIds. They are associated with the actions the provider is able to provide when they + * registered. Indicates which actions this Remote Link has. + * + * If any actions have a templateUrl that requires string substitution, then `attributeMap` must be passed in. + * + * @example [ + * "action-111-222-333", + * "action-444-555-666" + * ] + */ + actionIds?: string[]; + /** + * @description Map of key/values (string to string mapping). This is used to build the urls for actions from the + * templateUrl the provider registered their available actions with. + */ + attributeMap?: { + [key: string]: string; + }; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraRemoteLinkInfoProvider` module, + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No Remote Link data found for the given ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete a Remote Link by ID + * @description Delete the Remote Link data currently stored for the given ID. + * + * Deletion is performed asynchronously. The `getRemoteLinkById` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteRemoteLinkById: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceNumber` to use to control deletion. + * + * Only stored data with an `updateSequenceNumber` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + */ + _updateSequenceNumber?: number; + }; + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that + * corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + path: { + /** @description The ID of the Remote Link to fetch. */ + remoteLinkId: string; + }; + }; + responses: { + /** @description Delete has been accepted. Data will eventually be removed from Jira if it exists. */ + 202: { + content: never; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraRemoteLinkInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Submit Security Workspaces to link + * @description Insert Security Workspace IDs to establish a relationship between them and the Jira site the app is installed on. If a relationship between the workspace ID and Jira already exists then the workspace ID will be ignored and Jira will process the rest of the entries. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + submitWorkspaces: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read [understanding jwt](https://developer.atlassian.com/blog/2015/01/understanding-jwt/) for more details. + */ + Authorization: string; + }; + }; + /** @description Security Workspace IDs to submit. */ + requestBody: { + content: { + "application/json": { + /** + * Security Workspace IDs + * @description The IDs of Security Workspaces to link to this Jira site. These must follow this regex pattern: `[a-zA-Z0-9\\-_.~@:{}=]+(\/[a-zA-Z0-9\\-_.~@:{}=]+)*` + * + * @example [ + * "111-222-333", + * "444-555-666" + * ] + */ + workspaceIds: string[]; + }; + }; + }; + responses: { + /** @description Submission accepted. Each submitted Security Workspace ID will be linked to Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format. */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'WRITE' scope. + */ + 403: { + content: never; + }; + /** @description Set of Ids is too large. Submit fewer Ids in each payload. */ + 413: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete linked Security Workspaces + * @description Bulk delete all linked Security Workspaces that match the given request. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + * + * e.g. DELETE /bulk?workspaceIds=111-222-333,444-555-666 + */ + deleteLinkedWorkspaces: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read [understanding jwt](https://developer.atlassian.com/blog/2015/01/understanding-jwt/) for more details. + */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Workspaces and related data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format. */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get linked Security Workspaces + * @description Retrieve all Security Workspaces linked with the Jira site. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getLinkedWorkspaces: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + responses: { + /** @description A list of all stored workspace IDs. */ + 200: { + content: { + "application/json": { + /** + * Security Workspace IDs + * @description The IDs of Security Workspaces that are linked to this Jira site. + * + * @example [ + * "111-222-333", + * "444-555-666" + * ] + */ + workspaceIds: string[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No data found for the given workspace ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get a linked Security Workspace by ID + * @description Retrieve a specific Security Workspace linked to the Jira site for the given workspace ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getLinkedWorkspaceById: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + path: { + /** @description The ID of the workspace to fetch. */ + workspaceId: string; + }; + }; + responses: { + /** @description The Security Workspace information stored for the given ID. */ + 200: { + content: { + "application/json": { + /** + * @description The Security Workspace ID + * + * @example 111-222-333 + */ + workspaceId: string; + /** + * Format: date-time + * @description Latest date and time that the Security Workspace was updated in Jira. + * + * @example 2020-01-17T09:30:00Z + */ + updatedAt: string; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No data found for the given workspace ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Submit Vulnerability data + * @description Update / Insert Vulnerability data. + * + * Vulnerabilities are identified by their ID, any existing Vulnerability data with the same ID will be replaced if it exists and the updateSequenceNumber of the existing data is less than the incoming data. + * + * Submissions are performed asynchronously. Most updates are available within a short period of time but may take some time during peak load and/or maintenance times. The GET vulnerability endpoint can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple Vulnerabilities being submitted in one request, each is validated individually prior to submission. Details of Vulnerabilities that failed submission (if any) are available in the response object. + * + * A maximum of 1000 vulnerabilities can be submitted in one request. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + submitVulnerabilities: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + /** @description Vulnerability data to submit. */ + requestBody: { + content: { + "application/json": { + /** + * @description Indicates the operation being performed by the provider system when sending this data. "NORMAL" - Data received during real-time, user-triggered actions (e.g. user closed or updated a vulnerability). "SCAN" - Data sent through some automated process (e.g. some periodically scheduled repository scan). "BACKFILL" - Data received while backfilling existing data (e.g. pushing historical vulnerabilities when re-connect a workspace). Default is "NORMAL". "NORMAL" traffic has higher priority but tighter rate limits, "SCAN" traffic has medium priority and looser limits, "BACKFILL" has lower priority and much looser limits + * + * @example SCAN + * @enum {string} + */ + operationType?: "NORMAL" | "SCAN" | "BACKFILL"; + /** + * Properties + * @description Properties assigned to vulnerability data that can then be used for delete / query operations. + * + * Examples might be an account or user ID that can then be used to clean up data if an account is removed from the Provider system. + * + * Properties are supplied as key/value pairs, and a maximum of 5 properties can be supplied, keys cannot contain ':' or start with '_'. + * + * @example { + * "accountId": "account-234", + * "projectId": "project-123" + * } + */ + properties?: { + [key: string]: string; + }; + vulnerabilities: { + /** + * @description The VulnerabilityData schema version used for this vulnerability data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion: "1.0"; + /** + * @description The identifier for the Vulnerability. Must be unique for a given Provider. + * + * @example 111-222-333 + */ + id: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this Vulnerability in the case of out-of-order receipt of update requests. + * + * This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the Provider system, but other alternatives are valid (e.g. a Provider could store a counter against each Vulnerability and increment that on each update to Jira). + * + * Updates for a Vulnerability that are received with an updateSequenceId lower than what is currently stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceNumber: number; + /** + * @description The identifier of the Container where this Vulnerability was found. Must be unique for a given Provider. This must follow this regex pattern: `[a-zA-Z0-9\\-_.~@:{}=]+(/[a-zA-Z0-9\\-_.~@:{}=]+)*` + * + * @example 111-222-333 + */ + containerId: string; + /** + * @description The human-readable name for the Vulnerability. Will be shown in the UI. + * + * If not provided, will use the ID for display. + * + * @example curl/libcurl3 - Buffer Override + */ + displayName: string; + /** + * @description A description of the issue in markdown format that will be shown in the UI and used when creating Jira Issues. HTML tags are not supported in the markdown format. For creating a new line `\n` can be used. Read more about the accepted markdown transformations [here](https://atlaskit.atlassian.com/packages/editor/editor-markdown-transformer). + * + * @example ## Overview + * + * + * Affected versions of this package are vulnerable to MeltLeak + */ + description: string; + /** + * Format: uri + * @description A URL users can use to link to a summary view of this vulnerability, if appropriate. + * + * This could be any location that makes sense in the Provider system (e.g. if the summary information comes from a specific project, it might make sense to link the user to the vulnerability in that project). + * + * @example https://example.com/project/CWE-123/summary + */ + url: string; + /** + * @description The type of Vulnerability detected. + * @example sca + * @enum {string} + */ + type: "sca" | "sast" | "dast" | "unknown"; + /** + * Format: date-time + * @description The timestamp to present to the user that shows when the Vulnerability was introduced. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + introducedDate: string; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user the last time the Vulnerability was updated. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * VulnerabilitySeverity + * @description Severity information for a single Vulnerability. + * + * This is the severity information that will be presented to the user on e.g. the Jira Security screen. + */ + severity: { + /** + * @description The severity level of the Vulnerability. + * @example critical + * @enum {string} + */ + level: "critical" | "high" | "medium" | "low" | "unknown"; + }; + /** @description The identifying information for the Vulnerability. */ + identifiers?: { + /** + * @description The display name of the Vulnerability identified. + * + * @example CWE-123 + */ + displayName: string; + /** + * Format: uri + * @description A URL users can use to link to the definition of the Vulnerability identified. + * + * @example https://cwe.mitre.org/data/definitions/123.html + */ + url: string; + }[]; + /** + * VulnerabilityStatus + * @description The current status of the Vulnerability. + * + * @example open + * @enum {string} + */ + status: "open" | "closed" | "ignored" | "unknown"; + /** + * VulnerabilityAdditionalInfo + * @description Extra information (optional). This data will be shown in the security feature under the vulnerability displayName. + */ + additionalInfo?: { + /** + * @description The content of the additionalInfo. + * + * @example More information on the vulnerability, as a string + */ + content: string; + /** + * Format: uri + * @description Optional URL linking to the information + * + * @example https://example.com/project/CWE-123/additionalInfo + */ + url?: string; + }; + /** @description The associations (e.g. Jira issue) to add in addition to the currently stored associations of the Security Vulnerability. */ + addAssociations?: { + /** + * @description Defines the association type. + * + * @example issueIdOrKeys + * @enum {string} + */ + associationType: "issueIdOrKeys"; + /** + * @description The Jira issue id or keys to associate the Security information with. + * + * The number of values counted across all associationTypes (issueIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }[]; + /** @description The associations (e.g. Jira issue) to remove from currently stored associations of the Security Vulnerability. */ + removeAssociations?: { + /** + * @description Defines the association type. + * + * @example issueIdOrKeys + * @enum {string} + */ + associationType: "issueIdOrKeys"; + /** + * @description The Jira issue id or keys to associate the Security information with. + * + * The number of values counted across all associationTypes (issueIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }[]; + /** + * Format: date-time + * @description An ISO-8601 Date-time string representing the last time the provider updated associations on this entity. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2023-11-02T23:27:25.000Z + */ + associationsLastUpdated?: string; + /** + * Format: int64 + * @description A sequence number to compare when writing entity associations to the database. + * + * This can be any monotonically increasing number. A highly recommended implementation is to use epoch millis. + * + * If it is not provided it will default to being equal to the corresponding entity's `updateSequenceNumber`. + * + * Associations are written following a LastWriteWins strategy, association that are received with an associationsUpdateSequenceNumber lower than what is currently stored will be ignored. + * + * @example 1523494301448 + */ + associationsUpdateSequenceNumber?: number; + }[]; + /** + * ProviderMetadata + * @description Information about the provider. This is useful for auditing, logging, debugging, + * and other internal uses. Information in this property is not considered private, so it should not contain personally identifiable information + */ + providerMetadata?: { + /** + * @description An optional name of the source of the vulnerabilities. + * @example Atlassian Security Platform 2.1.0 + */ + product?: string; + }; + }; + }; + }; + responses: { + /** + * @description Submission accepted. Each Vulnerability submitted in a valid format will eventually be available in Jira. + * + * Details of any Vulnerabilities that were submitted but failed submission (due to data format problems, etc.) are available in the response object. + */ + 202: { + content: { + "application/json": { + /** + * @description The IDs of Vulnerabilities that have been accepted for submission. + * + * A Vulnerability may be rejected if it was only associated with unknown project keys. + * + * Note that a Vulnerability that isn't updated due to it's updateSequenceNumber being out of order is not considered a failed submission. + * + * @example [ + * "111-222-333", + * "444-555-666" + * ] + */ + acceptedVulnerabilities?: string[]; + /** + * @description Details of Vulnerabilities that have not been accepted for submission, usually due to a problem with the request data. + * + * The object (if present) will be keyed by Vulnerability ID and include any errors associated with that Vulnerability that have prevented it being submitted. + */ + failedVulnerabilities?: { + [key: string]: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + /** + * @description Associations (e.g. Service IDs) that are not known on this Jira instance (if any). + * + * If a Vulnerability has been associated with any other association other than those in this array it will still be stored against those valid associations. + * If a Vulnerability was only associated with the associations in this array, it is deemed to be invalid and it won't be persisted. + */ + unknownAssociations?: { + /** + * @description Defines the association type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Security information with. + * + * The number of values counted across all associationTypes (serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }[]; + }; + }; + }; + /** + * @description Request has incorrect format. + * + * Note that in the case of an individual Vulnerability having an invalid format (rather than the request as a whole) the response for the request will be a 202 and details of the invalid Vulnerability will be contained in the response object. + */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'WRITE' scope. + */ + 403: { + content: never; + }; + /** @description Data is too large. Submit fewer Vulnerabilities in each payload. */ + 413: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + headers: { + /** @description The number of remaining possible requests in current rate limit window. */ + "X-RateLimit-Remaining"?: number; + /** @description The date in ISO 8601 format when the rate limit values will be next reset. */ + "X-RateLimit-Reset"?: string; + /** @description The maximum possible requests in a window of one minute. */ + "X-RateLimit-Limit"?: number; + /** @description The number of seconds to wait before making a follow-up request. */ + "Retry-After"?: number; + }; + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete Vulnerabilities by Property + * @description Bulk delete all Vulnerabilities that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. + * If more than one Property is provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). + * Read the POST bulk endpoint documentation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456 + * + * Deletion is performed asynchronously. The GET vulnerability endpoint can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteVulnerabilitiesByProperty: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format (e.g. missing at least one Property param). */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get a Vulnerability by ID + * @description Retrieve the currently stored Vulnerability data for the given ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getVulnerabilityById: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + path: { + /** @description The ID of the Vulnerability to fetch. */ + vulnerabilityId: string; + }; + }; + responses: { + /** @description The Vulnerability data currently stored for the given ID. */ + 200: { + content: { + "application/json": { + /** + * @description The VulnerabilityData schema version used for this vulnerability data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion: "1.0"; + /** + * @description The identifier for the Vulnerability. Must be unique for a given Provider. + * + * @example 111-222-333 + */ + id: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this Vulnerability in the case of out-of-order receipt of update requests. + * + * This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the Provider system, but other alternatives are valid (e.g. a Provider could store a counter against each Vulnerability and increment that on each update to Jira). + * + * Updates for a Vulnerability that are received with an updateSequenceId lower than what is currently stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceNumber: number; + /** + * @description The identifier of the Container where this Vulnerability was found. Must be unique for a given Provider. This must follow this regex pattern: `[a-zA-Z0-9\\-_.~@:{}=]+(/[a-zA-Z0-9\\-_.~@:{}=]+)*` + * + * @example 111-222-333 + */ + containerId: string; + /** + * @description The human-readable name for the Vulnerability. Will be shown in the UI. + * + * If not provided, will use the ID for display. + * + * @example curl/libcurl3 - Buffer Override + */ + displayName: string; + /** + * @description A description of the issue in markdown format that will be shown in the UI and used when creating Jira Issues. HTML tags are not supported in the markdown format. For creating a new line `\n` can be used. Read more about the accepted markdown transformations [here](https://atlaskit.atlassian.com/packages/editor/editor-markdown-transformer). + * + * @example ## Overview + * + * + * Affected versions of this package are vulnerable to MeltLeak + */ + description: string; + /** + * Format: uri + * @description A URL users can use to link to a summary view of this vulnerability, if appropriate. + * + * This could be any location that makes sense in the Provider system (e.g. if the summary information comes from a specific project, it might make sense to link the user to the vulnerability in that project). + * + * @example https://example.com/project/CWE-123/summary + */ + url: string; + /** + * @description The type of Vulnerability detected. + * @example sca + * @enum {string} + */ + type: "sca" | "sast" | "dast" | "unknown"; + /** + * Format: date-time + * @description The timestamp to present to the user that shows when the Vulnerability was introduced. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + introducedDate: string; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user the last time the Vulnerability was updated. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * VulnerabilitySeverity + * @description Severity information for a single Vulnerability. + * + * This is the severity information that will be presented to the user on e.g. the Jira Security screen. + */ + severity: { + /** + * @description The severity level of the Vulnerability. + * @example critical + * @enum {string} + */ + level: "critical" | "high" | "medium" | "low" | "unknown"; + }; + /** @description The identifying information for the Vulnerability. */ + identifiers?: { + /** + * @description The display name of the Vulnerability identified. + * + * @example CWE-123 + */ + displayName: string; + /** + * Format: uri + * @description A URL users can use to link to the definition of the Vulnerability identified. + * + * @example https://cwe.mitre.org/data/definitions/123.html + */ + url: string; + }[]; + /** + * VulnerabilityStatus + * @description The current status of the Vulnerability. + * + * @example open + * @enum {string} + */ + status: "open" | "closed" | "ignored" | "unknown"; + /** + * VulnerabilityAdditionalInfo + * @description Extra information (optional). This data will be shown in the security feature under the vulnerability displayName. + */ + additionalInfo?: { + /** + * @description The content of the additionalInfo. + * + * @example More information on the vulnerability, as a string + */ + content: string; + /** + * Format: uri + * @description Optional URL linking to the information + * + * @example https://example.com/project/CWE-123/additionalInfo + */ + url?: string; + }; + /** @description The entities to associate the Security Vulnerability information with. */ + associations?: { + /** + * @description Defines the association type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Security information with. + * + * The number of values counted across all associationTypes (serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No data found for the given Vulnerability ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete a Vulnerability by ID + * @description Delete the Vulnerability data currently stored for the given ID. + * + * Deletion is performed asynchronously. The GET vulnerability endpoint can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteVulnerabilityById: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + path: { + /** @description The ID of the Vulnerability to delete. */ + vulnerabilityId: string; + }; + }; + responses: { + /** @description Delete has been accepted. If the data exists, it will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; +} +export {}; diff --git a/lib/generated/openapi-software.js b/lib/generated/openapi-software.js new file mode 100644 index 0000000..8fb5a2c --- /dev/null +++ b/lib/generated/openapi-software.js @@ -0,0 +1,6 @@ +"use strict"; +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/lib/jira.d.ts b/lib/jira.d.ts index 529b2b8..ae06471 100644 --- a/lib/jira.d.ts +++ b/lib/jira.d.ts @@ -1,43 +1,47 @@ /// -import { AxiosInstance, AxiosRequestConfig } from 'axios'; +/// +import { AxiosInstance, AxiosRequestConfig } from "axios"; +import { Agent } from "https"; +import { components, operations as cloudOperations } from "./generated/openapi-cloud"; +import { operations } from "./generated/openapi-software"; interface MakeUrlParams { pathname?: string; - query?: Record; + query?: Record; intermediatePath?: string; encode?: boolean; } -interface MakeSprintUrlParams { - pathname?: string; - query?: Record; - intermediatePath?: string; -} -export interface JiraApiOptions { - protocol: 'http' | 'https'; +export type WithStrictSSL = { + strictSSL?: boolean; + ca?: string; + axios?: undefined; +}; +export type WithAxios = { + axios?: AxiosInstance; + strictSSL?: undefined; + ca?: undefined; +}; +export type AxiosOrStrict = WithStrictSSL | WithAxios; +export type JiraApiOptions = { + protocol: "http" | "https"; host: string; port?: number; - apiVersion?: 1 | 2; + apiVersion?: 1 | 2 | 3; base?: string; intermediatePath?: string; webHookVersion?: string; - greenhopperVersion?: string; baseOptions?: AxiosRequestConfig; - axios?: AxiosInstance; - strictSSL?: boolean; - oauth?: { - consumer_key: string; - access_token: string; - consumer_secret: string; - access_token_secret: string; - signature_method: string; - }; bearer?: string; timeout?: number; username?: string; password?: string; -} +} & AxiosOrStrict; +export type PaginationParams = { + startAt?: number; + maxResults?: number; + fields?: string[]; + expand?: string[]; +}; /** - * @name JiraApi - * @class * Wrapper for the JIRA Rest Api * https://docs.atlassian.com/jira/REST/6.4.8/ */ @@ -48,1108 +52,777 @@ export default class JiraApi { apiVersion: number; base: string; intermediatePath: string; - strictSSL: any; axios: AxiosInstance; + httpsAgent?: Agent; webhookVersion: string; greenhopperVersion: string; baseOptions: AxiosRequestConfig; /** + * Construct a new JiraApi * @constructor - * @function * @param {JiraApiOptions} options */ constructor(options: JiraApiOptions); /** - * @typedef JiraApiOptions - * @type {object} - * @property {string} [protocol=http] - What protocol to use to connect to - * jira? Ex: http|https - * @property {string} host - What host is this tool connecting to for the jira - * instance? Ex: jira.somehost.com - * @property {string} [port] - What port is this tool connecting to jira with? Only needed for - * none standard ports. Ex: 8080, 3000, etc - * @property {string} [username] - Specify a username for this tool to authenticate all - * requests with. - * @property {string} [password] - Specify a password for this tool to authenticate all - * requests with. Cloud users need to generate an [API token](https://confluence.atlassian.com/cloud/api-tokens-938839638.html) for this value. - * @property {string} [apiVersion=2] - What version of the jira rest api is the instance the - * tool is connecting to? - * @property {string} [base] - What other url parts exist, if any, before the rest/api/ - * section? - * @property {string} [intermediatePath] - If specified, overwrites the default rest/api/version - * section of the uri - * @property {boolean} [strictSSL=true] - Does this tool require each request to be - * authenticated? Defaults to true. - * @property {function} [request] - What method does this tool use to make its requests? - * Defaults to request from request-promise - * @property {number} [timeout] - Integer containing the number of milliseconds to wait for a - * server to send response headers (and start the response body) before aborting the request. Note - * that if the underlying TCP connection cannot be established, the OS-wide TCP connection timeout - * will overrule the timeout option ([the default in Linux can be anywhere from 20-120 * - * seconds](http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout)). - * @property {string} [webhookVersion=1.0] - What webhook version does this api wrapper need to - * hit? - * @property {string} [greenhopperVersion=1.0] - What webhook version does this api wrapper need - * to hit? - * @property {string} [ca] - Specify a CA certificate - * @property {OAuth} [oauth] - Specify an OAuth object for this tool to authenticate all requests - * using OAuth. - * @property {string} [bearer] - Specify an OAuth bearer token to authenticate all requests with. - */ - /** - * @typedef OAuth - * @type {object} - * @property {string} consumer_key - The consumer entered in Jira Preferences. - * @property {string} consumer_secret - The private RSA file. - * @property {string} access_token - The generated access token. - * @property {string} access_token_secret - The generated access toke secret. - * @property {string} signature_method [signature_method=RSA-SHA1] - OAuth signurate methode - * Possible values RSA-SHA1, HMAC-SHA1, PLAINTEXT. Jira Cloud supports only RSA-SHA1. - */ - /** - * @typedef {object} UriOptions - * @property {string} pathname - The url after the specific functions path - * @property {object} [query] - An object of all query parameters - * @property {string} [intermediatePath] - Overwrites with specified path - */ - /** - * @name makeRequestHeader - * @function * Creates a requestOptions object based on the default template for one - * @param {string} uri - * @param {object} [options] - an object containing fields and formatting how the + * @param url + * @param options an object containing fields and formatting how the */ - makeRequestHeader(url: any, options?: AxiosRequestConfig): AxiosRequestConfig; + makeRequestHeader(url: string, options?: AxiosRequestConfig): AxiosRequestConfig; /** - * @typedef makeRequestHeaderOptions - * @type {object} - * @property {string} [method] - HTTP Request Method. ie GET, POST, PUT, DELETE - */ - /** - * @name makeUri - * @function * Creates a URI object for a given pathname - * @param {object} [options] - an object containing path information + * @param [options] - an object containing path information */ - makeUri({ pathname, query, intermediatePath, encode, }: MakeUrlParams): string; + makeUri({ pathname, query, intermediatePath }: MakeUrlParams): string; /** - * @typedef makeUriOptions - * @type {object} - * @property {string} pathname - The url after the /rest/api/version - * @property {object} query - a query object - * @property {string} intermediatePath - If specified will overwrite the /rest/api/version section - */ - /** - * @name makeWebhookUri - * @function * Creates a URI object for a given pathName - * @param {object} [options] - An options object specifying uri information + * @param [options] - An options object specifying uri information */ - makeWebhookUri({ pathname, intermediatePath, }: { + makeWebhookUri({ pathname, }: { pathname?: string; - intermediatePath?: string; }): string; /** - * @typedef makeWebhookUriOptions - * @type {object} - * @property {string} pathname - The url after the /rest/webhooks - * @property {string} intermediatePath - If specified will overwrite the /rest/webhooks section - */ - /** - * @name makeSprintQueryUri - * @function - * Creates a URI object for a given pathName - * @param {object} [options] - The url after the /rest/ - */ - makeSprintQueryUri({ pathname, query, intermediatePath, }: MakeSprintUrlParams): string; - /** - * @typedef makeSprintQueryUriOptions - * @type {object} - * @property {string} pathname - The url after the /rest/api/version - * @property {object} query - a query object - * @property {string} intermediatePath - will overwrite the /rest/greenhopper/version section - */ - /** - * @typedef makeDevStatusUri - * @function * Creates a URI object for a given pathname - * @arg {pathname, query, intermediatePath} obj1 - * @param {string} pathname obj1.pathname - The url after the /rest/api/version - * @param {object} query obj1.query - a query object - * @param {string} intermediatePath obj1.intermediatePath - If specified will overwrite the * /rest/dev-status/latest/issue/detail section */ - makeDevStatusUri({ pathname, query, intermediatePath, }: { + makeDevStatusUri({ pathname, query, }: { pathname?: string; - query?: Record; - intermediatePath?: string; + query?: Record; }): string; /** - * @name makeAgile1Uri - * @function * Creates a URI object for a given pathname - * @param {UriOptions} object + * @param object */ - makeAgileUri(object: any): string; + makeAgileUri(object: MakeUrlParams): string; + doRequest(requestOptions: AxiosRequestConfig): Promise; + doRawRequest(requestOptions: AxiosRequestConfig): Promise>; /** - * @name doRequest - * @function - * Does a request based on the requestOptions object - * @param {object} requestOptions - fields on this object get posted as a request header for - * requests to jira - */ - doRequest(requestOptions: AxiosRequestConfig): Promise; - doPlainRequest(requestOptions: AxiosRequestConfig): Promise>; - /** - * @name findIssue - * @function * Find an issue in jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290709) - * @param {string} issueNumber - The issue number to search for including the project key - * @param {string} expand - The resource expansion to return additional fields in the response - * @param {string} fields - Comma separated list of field ids or keys to retrieve - * @param {string} properties - Comma separated list of properties to retrieve - * @param {boolean} fieldsByKeys - False by default, used to retrieve fields by key instead of id + * @param issueNumber - The issue number to search for including the project key + * @param expand - The resource expansion to return additional fields in the response + * @param fields - Comma separated list of field ids or keys to retrieve + * @param properties - Comma separated list of properties to retrieve + * @param fieldsByKeys - False by default, used to retrieve fields by key instead of id */ - findIssue(issueNumber: string, expand?: string, fields?: string, properties?: string, fieldsByKeys?: boolean): Promise; + findIssue(issueNumber: string, expand?: string, fields?: string, properties?: string, fieldsByKeys?: boolean): Promise; /** - * @name downloadUserAvatar - * @function * Download an avatar * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290709) - * @param {number} avatarId - The avatar to download + * @param ownerId + * @param avatarId - The avatar to download */ downloadUserAvatar(ownerId: string, avatarId: number): Promise<{ mimeType: string; content: Buffer; }>; /** - * @name downloadAvatar - * @function * Download an avatar * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290709) * @param avatarType - * @param {number} avatarId - The avatar to download + * @param avatarId - The avatar to download */ downloadAvatar(avatarType: string, avatarId: number): Promise<{ mimeType: string; content: Buffer; }>; /** - * @name downloadAttachment - * @function * Download an attachment * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id288524) - * @param {object} attachment - the attachment + * @param attachment - the attachment + */ + downloadAttachment(attachment: { + id: string; + filename: string; + }): Promise; + /** + * Remove the attachment + * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-attachment-id-delete) + * @param attachmentId - the attachment id */ - downloadAttachment(attachment: any): Promise; + deleteAttachment(attachmentId: string): Promise; /** - * @name getUnresolvedIssueCount - * @function * Get the unresolved issue count * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id288524) - * @param {string} version - the version of your product you want to find the unresolved + * @param version - the version of your product you want to find the unresolved * issues of. */ - getUnresolvedIssueCount(version: any): Promise; + getUnresolvedIssueCount(version: string): Promise; /** - * @name getProject - * @function * Get the Project by project key * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id289232) - * @param {string} project - key for the project + * @param project - key for the project */ - getProject(project: any): Promise; + getProject(project: string): Promise; /** - * @name createProject - * @function * Create a new Project - * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/project-createProject) - * @param {object} project - with specs - */ - createProject(project: any): Promise; - /** Find the Rapid View for a specified project - * @name findRapidView - * @function - * @param {string} projectName - name for the project - */ - findRapidView(projectName: any): Promise; - /** Get the most recent sprint for a given rapidViewId - * @name getLastSprintForRapidView - * @function - * @param {string} rapidViewId - the id for the rapid view - */ - getLastSprintForRapidView(rapidViewId: any): Promise; - /** Get the issues for a rapidView / sprint - * @name getSprintIssues - * @function - * @param {string} rapidViewId - the id for the rapid view - * @param {string} sprintId - the id for the sprint - */ - getSprintIssues(rapidViewId: any, sprintId: any): Promise; + * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/project-createproject: string) + * @param project - with specs + */ + createProject(project: string): Promise; + /** Get the issues for a board / sprint + * @param boardId + * @param sprintId - the id for the sprint + */ + getSprintIssues(boardId: string, sprintId: string): Promise; /** Get a list of Sprints belonging to a Rapid View - * @name listSprints - * @function - * @param {string} rapidViewId - the id for the rapid view + * @param boardId - the id for the rapid view + */ + listSprints(boardId: string): Promise; + /** Get details about a Sprint + * @param sprintId - the id for the sprint view */ - listSprints(rapidViewId: any): Promise; + getSprint(sprintId: string): Promise; /** Add an issue to the project's current sprint - * @name addIssueToSprint - * @function - * @param {string} issueId - the id of the existing issue - * @param {string} sprintId - the id of the sprint to add it to + * @param issueId - the id of the existing issue + * @param sprintId - the id of the sprint to add it to */ - addIssueToSprint(issueId: any, sprintId: any): Promise; + addIssueToSprint(issueId: string, sprintId: string): Promise; /** Create an issue link between two issues - * @name issueLink - * @function - * @param {object} link - a link object formatted how the Jira API specifies + * @param link - a link object formatted how the Jira API specifies */ - issueLink(link: any): Promise; + issueLink(link: components["schemas"]["RemoteIssueLinkRequest"]): Promise; /** List all issue link types jira knows about * [Jira Doc](https://docs.atlassian.com/software/jira/docs/api/REST/8.5.0/#api/2/issueLinkType-getIssueLinkTypes) - * @name listIssueLinkTypes - * @function */ - listIssueLinkTypes(): Promise; + listIssueLinkTypes(): Promise; /** Retrieves the remote links associated with the given issue. - * @name getRemoteLinks - * @function - * @param {string} issueNumber - the issue number to find remote links for. + * @param issueNumber - the issue number to find remote links for. */ - getRemoteLinks(issueNumber: any): Promise; + getRemoteLinks(issueNumber: string): Promise; /** - * @name createRemoteLink - * @function * Creates a remote link associated with the given issue. - * @param {string} issueNumber - The issue number to create the remotelink under - * @param {object} remoteLink - the remotelink object as specified by the Jira API + * @param issueNumber - The issue number to create the remotelink under + * @param remoteLink - the remotelink object as specified by the Jira API */ - createRemoteLink(issueNumber: any, remoteLink: any): Promise; + createRemoteLink(issueNumber: string, remoteLink: components["schemas"]["RemoteIssueLinkRequest"]): Promise; + /** + * Delete a remote link with given issueNumber and id + * @param issueNumber - The issue number to delete the remotelink under + * @param id the remotelink id + */ + deleteRemoteLink(issueNumber: string, id: string): Promise; /** Get Versions for a project * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id289653) - * @name getVersions - * @function - * @param {string} project - A project key to get versions for + * @param project - A project key to get versions for + * @param query - An object containing the query params */ - getVersions(project: any): Promise; + getVersions(project: string, query: Pick): Promise; /** Get details of single Version in project * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/version-getVersion) - * @name getVersion - * @function - * @param {string} version - The id of this version + * @param version - The id of this version */ - getVersion(version: any): Promise; + getVersion(version: string): Promise; /** Create a version * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id288232) - * @name createVersion - * @function - * @param {object} version - an object of the new version + * @param version - an object of the new version */ - createVersion(version: any): Promise; + createVersion(version: components["schemas"]["Version"]): Promise; /** Update a version * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#d2e510) - * @name updateVersion - * @function - * @param {object} version - an new object of the version to update + * @param version - a new object of the version to update */ - updateVersion(version: any): Promise; + updateVersion(version: components["schemas"]["Version"]): Promise; /** Delete a version * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/version-delete) - * @name deleteVersion - * @function - * @param {string} versionId - the ID of the version to delete - * @param {string} moveFixIssuesToId - when provided, existing fixVersions will be moved + * @param versionId - the ID of the version to delete + * @param moveFixIssuesToId - when provided, existing fixVersions will be moved * to this ID. Otherwise, the deleted version will be removed from all * issue fixVersions. - * @param {string} moveAffectedIssuesToId - when provided, existing affectedVersions will + * @param moveAffectedIssuesToId - when provided, existing affectedVersions will * be moved to this ID. Otherwise, the deleted version will be removed * from all issue affectedVersions. */ - deleteVersion(versionId: any, moveFixIssuesToId: any, moveAffectedIssuesToId: any): Promise; + deleteVersion(versionId: string, moveFixIssuesToId: string, moveAffectedIssuesToId: string): Promise; /** Move version * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/version-moveVersion) - * @name moveVersion - * @function - * @param {string} versionId - the ID of the version to delete - * @param {string} position - an object of the new position + * @param versionId - the ID of the version to delete + * @param position - an object of the new position */ - moveVersion(versionId: any, position: any): Promise; + moveVersion(versionId: string, position: components["schemas"]["VersionMoveBean"]): Promise; /** Pass a search query to Jira * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#d2e4424) - * @name searchJira - * @function - * @param {string} searchString - jira query string in JQL - * @param {object} optional - object containing any of the following properties - * @param {integer} [optional.startAt=0]: optional starting index number - * @param {integer} [optional.maxResults=50]: optional The maximum number of items to - * return per page. To manage page size, Jira may return fewer items per - * page where a large number of fields are requested. - * @param {array} [optional.fields]: optional array of string names of desired fields - * @param {array} [optional.expand]: optional array of string names of desired expand nodes - */ - searchJira(searchString: any, optional?: {}): Promise; + * @param searchString - jira query string in JQL + * @param optional - object containing any of the pagination properties + */ + searchJira(searchString: string, optional: PaginationParams): Promise; /** Create a Jira user * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/user-createUser) - * @name createUser - * @function - * @param {object} user - Properly Formatted User object + * @param user - Properly Formatted User object */ - createUser(user: any): Promise; + createUser(user: components["schemas"]["NewUserDetails"]): Promise; /** Search user on Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#d2e3756) - * @name searchUsers - * @function - * @param {SearchUserOptions} options - */ - searchUsers({ username, query, startAt, maxResults, includeActive, includeInactive, }: { - username: any; - query: any; - startAt: any; - maxResults: any; - includeActive: any; - includeInactive: any; - }): Promise; - /** - * @typedef SearchUserOptions - * @type {object} - * @property {string} username - (DEPRECATED) A query string used to search username, name or - * e-mail address - * @property {string} query - A query string that is matched against user attributes - * (displayName, and emailAddress) to find relevant users. The string can match the prefix of - * the attribute's value. For example, query=john matches a user with a displayName of John - * Smith and a user with an emailAddress of johnson@example.com. Required, unless accountId - * or property is specified. - * @property {integer} [startAt=0] - The index of the first user to return (0-based) - * @property {integer} [maxResults=50] - The maximum number of users to return - * @property {boolean} [includeActive=true] - If true, then active users are included - * in the results - * @property {boolean} [includeInactive=false] - If true, then inactive users - * are included in the results */ + searchUsers({ username, query, startAt, maxResults }: cloudOperations["findUsers"]["parameters"]["query"]): Promise; /** Get all users in group on Jira - * @name getUsersInGroup - * @function - * @param {string} groupname - A query string used to search users in group - * @param {integer} [startAt=0] - The index of the first user to return (0-based) - * @param {integer} [maxResults=50] - The maximum number of users to return (defaults to 50). - */ - getUsersInGroup(groupname: any, startAt?: number, maxResults?: number): Promise; + * @param groupname - A query string used to search users in group + * @param [startAt=0] - The index of the first user to return (0-based) + * @param [maxResults=50] - The maximum number of users to return (defaults to 50). + * @deprecated + */ + getUsersInGroup(groupname: string, startAt?: number, maxResults?: number): Promise; + /** Get all members of group on Jira + * @param groupname - A query string used to search users in group + * @param [startAt=0] - The index of the first user to return (0-based) + * @param [maxResults=50] - The maximum number of users to return (defaults to 50). + * @param [includeInactiveUsers=false] - Fetch inactive users too (defaults to false). + */ + getMembersOfGroup(groupname: string, startAt?: number, maxResults?: number, includeInactiveUsers?: boolean): Promise; /** Get issues related to a user * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id296043) - * @name getUsersIssues - * @function - * @param {string} username - username of user to search for - * @param {boolean} open - determines if only open issues should be returned + * @param username - username of user to search for + * @param open - determines if only open issues should be returned */ - getUsersIssues(username: any, open: any): Promise; + getUsersIssues(username: string, open: boolean): Promise; /** Returns a user. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-user-get) - * @name getUser - * @function - * @param {string} accountId - The accountId of user to search for - * @param {string} expand - The expand for additional info (groups,applicationRoles) + * @param accountId - The accountId of user to search for + * @param expand - The expand for additional info (groups,applicationRoles) */ - getUser(accountId: any, expand: any): Promise; + getUser(accountId: string, expand?: string[]): Promise; /** Returns a list of all (active and inactive) users. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-users-search-get) - * @name getUsers - * @function - * @param {integer} [startAt=0] - The index of the first user to return (0-based) - * @param {integer} [maxResults=50] - The maximum number of users to return (defaults to 50). + * @param [startAt=0] - The index of the first user to return (0-based) + * @param [maxResults=50] - The maximum number of users to return (defaults to 50). */ - getUsers(startAt?: number, maxResults?: number): Promise; + getUsers(startAt?: number, maxResults?: number): Promise; /** Add issue to Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290028) - * @name addNewIssue - * @function - * @param {object} issue - Properly Formatted Issue object + * @param issue - Properly Formatted Issue object */ - addNewIssue(issue: any): Promise; + addNewIssue(issue: components["schemas"]["IssueUpdateDetails"]): Promise; /** Add a user as a watcher on an issue - * @name addWatcher - * @function - * @param {string} issueKey - the key of the existing issue - * @param {string} username - the jira username to add as a watcher to the issue + * @param issueKey - the key of the existing issue + * @param username - the jira username to add as a watcher to the issue */ - addWatcher(issueKey: any, username: any): Promise; + addWatcher(issueKey: string, username: string): Promise; /** Change an assignee on an issue * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue-assign) - * @name assignee - * @function - * @param {string} issueKey - the key of the existing issue - * @param {string} assigneeName - the jira username to add as a new assignee to the issue + * @param issueKey - the key of the existing issue + * @param assigneeName - the jira username to add as a new assignee to the issue */ - updateAssignee(issueKey: any, assigneeName: any): Promise; + updateAssignee(issueKey: string, assigneeName: string): Promise; /** Change an assignee on an issue * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-assignee-put) - * @name updateAssigneeWithId - * @function - * @param {string} issueKey - the key of the existing issue - * @param {string} userId - the jira username to add as a new assignee to the issue + * @param issueKey - the key of the existing issue + * @param userId - the jira username to add as a new assignee to the issue */ - updateAssigneeWithId(issueKey: any, userId: any): Promise; + updateAssigneeWithId(issueKey: string, userId: string): Promise; /** Delete issue from Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290791) - * @name deleteIssue - * @function - * @param {string} issueId - the Id of the issue to delete + * @param issueId - the Id of the issue to delete */ - deleteIssue(issueId: any): Promise; + deleteIssue(issueId: string): Promise; /** Update issue in Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290878) - * @name updateIssue - * @function - * @param {string} issueId - the Id of the issue to update - * @param {object} issueUpdate - update Object as specified by the rest api - * @param {object} query - adds parameters to the query string + * @param issueId - the Id of the issue to update + * @param issueUpdate - update Object as specified by the rest api + * @param query - adds parameters to the query string */ - updateIssue(issueId: any, issueUpdate: any, query?: {}): Promise; + updateIssue(issueId: string, issueUpdate: components["schemas"]["IssueUpdateDetails"], query?: cloudOperations["editIssue"]["parameters"]["query"]): Promise; /** Get issue edit metadata * [Jira Doc](https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/issue-getEditIssueMeta) - * @name issueEditMeta - * @function - * @param {string} issueId - the Id of the issue to retrieve edit metadata for + * @param issueId - the Id of the issue to retrieve edit metadata for */ - issueEditMeta(issueId: any): Promise; + issueEditMeta(issueId: string): Promise; /** List Components * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name listComponents - * @function - * @param {string} project - key for the project + * @param project - key for the project */ - listComponents(project: any): Promise; + listComponents(project: string): Promise; /** Add component to Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290028) - * @name addNewComponent - * @function - * @param {object} component - Properly Formatted Component + * @param component - Properly Formatted Component */ - addNewComponent(component: any): Promise; + addNewComponent(component: components["schemas"]["ProjectComponent"]): Promise; /** Update Jira component - * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/component-updateComponent) - * @name updateComponent - * @function - * @param {string} componentId - the Id of the component to update - * @param {object} component - Properly Formatted Component + * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/component-updatecomponent: string) + * @param componentId - the Id of the component to update + * @param component - Properly Formatted Component */ - updateComponent(componentId: any, component: any): Promise; + updateComponent(componentId: string, component: components["schemas"]["ProjectComponent"]): Promise; /** Delete component from Jira * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-api-2-component-id-delete) - * @name deleteComponent - * @function - * @param {string} id - The ID of the component. - * @param {string} moveIssuesTo - The ID of the component to replace the deleted component. + * @param id - The ID of the component. + * @param moveIssuesTo - The ID of the component to replace the deleted component. * If this value is null no replacement is made. */ - deleteComponent(id: any, moveIssuesTo: any): Promise; + deleteComponent(id: string, moveIssuesTo: string): Promise; /** Get count of issues assigned to the component. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-component-id-relatedIssueCounts-get) - * @name relatedIssueCounts - * @function - * @param {string} id - Component Id. + * @param id - Component Id. */ - relatedIssueCounts(id: any): Promise; + relatedIssueCounts(id: string): Promise; /** Create custom Jira field * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field-createCustomField) - * @name createCustomField - * @function - * @param {object} field - Properly formatted Field object + * @param field - Properly formatted Field object */ - createCustomField(field: any): Promise; + createCustomField(field: components["schemas"]["CustomFieldDefinitionJsonBean"]): Promise; /** List all fields custom and not that jira knows about. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name listFields - * @function */ - listFields(): Promise; + listFields(): Promise; /** Add an option for a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-createOption) - * @name createFieldOption - * @function - * @param {string} fieldKey - the key of the select list field - * @param {object} option - properly formatted Option object + * @param fieldKey - the key of the select list field + * @param option - properly formatted Option object */ - createFieldOption(fieldKey: any, option: any): Promise; + createFieldOption(fieldKey: string, option: components["schemas"]["IssueFieldOptionCreateBean"]): Promise; /** Returns all options defined for a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-getAllOptions) - * @name listFieldOptions - * @function - * @param {string} fieldKey - the key of the select list field + * @param fieldKey - the key of the select list field */ - listFieldOptions(fieldKey: any): Promise; + listFieldOptions(fieldKey: string): Promise; /** Creates or updates an option for a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-putOption) - * @name upsertFieldOption - * @function - * @param {string} fieldKey - the key of the select list field - * @param {string} optionId - the id of the modified option - * @param {object} option - properly formatted Option object + * @param fieldKey - the key of the select list field + * @param optionId - the id of the modified option + * @param option - properly formatted Option object */ - upsertFieldOption(fieldKey: any, optionId: any, option: any): Promise; + upsertFieldOption(fieldKey: string, optionId: string, option: components["schemas"]["IssueFieldOption"]): Promise; /** Returns an option for a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-getOption) - * @name getFieldOption - * @function - * @param {string} fieldKey - the key of the select list field - * @param {string} optionId - the id of the option + * @param fieldKey - the key of the select list field + * @param optionId - the id of the option */ - getFieldOption(fieldKey: any, optionId: any): Promise; + getFieldOption(fieldKey: string, optionId: string): Promise; /** Deletes an option from a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-delete) - * @name deleteFieldOption - * @function - * @param {string} fieldKey - the key of the select list field - * @param {string} optionId - the id of the deleted option + * @param fieldKey - the key of the select list field + * @param optionId - the id of the deleted option */ - deleteFieldOption(fieldKey: any, optionId: any): Promise; + deleteFieldOption(fieldKey: string, optionId: string): Promise; /** - * @name getIssueProperty - * @function * Get Property of Issue by Issue and Property Id * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue/{issueIdOrKey}/properties-getProperty) - * @param {string} issueNumber - The issue number to search for including the project key - * @param {string} property - The property key to search for + * @param issueNumber - The issue number to search for including the project key + * @param property - The property key to search for */ - getIssueProperty(issueNumber: any, property: any): Promise; + getIssueProperty(issueNumber: string, property: string): Promise; /** - * @name getIssueChangelog - * @function * List all changes for an issue, sorted by date, starting from the latest * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue/{issueIdOrKey}/changelog) - * @param {string} issueNumber - The issue number to search for including the project key - * @param {integer} [startAt=0] - optional starting index number - * @param {integer} [maxResults=50] - optional ending index number + * @param issueNumber - The issue number to search for including the project key + * @param [startAt=0] - optional starting index number + * @param [maxResults=50] - optional ending index number */ - getIssueChangelog(issueNumber: any, startAt?: number, maxResults?: number): Promise; + getIssueChangelog(issueNumber: string, startAt?: number, maxResults?: number): Promise; /** - * @name getIssueWatchers - * @function * List all watchers for an issue * [Jira Doc](http://docs.atlassian.com/jira/REST/cloud/#api/2/issue-getIssueWatchers) - * @param {string} issueNumber - The issue number to search for including the project key + * @param issueNumber - The issue number to search for including the project key */ - getIssueWatchers(issueNumber: any): Promise; + getIssueWatchers(issueNumber: string): Promise; /** List all priorities jira knows about * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name listPriorities - * @function */ - listPriorities(): Promise; + listPriorities(): Promise; /** List Transitions for a specific issue that are available to the current user * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name listTransitions - * @function - * @param {string} issueId - get transitions available for the issue + * @param issueId - get transitions available for the issue */ - listTransitions(issueId: any): Promise; + listTransitions(issueId: string): Promise; /** Transition issue in Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name transitionsIssue - * @function - * @param {string} issueId - the Id of the issue to delete - * @param {object} issueTransition - transition object from the jira rest API + * @param issueId - the Id of the issue to delete + * @param issueTransition - transition object from the jira rest API */ - transitionIssue(issueId: any, issueTransition: any): Promise; + transitionIssue(issueId: string, issueTransition: components["schemas"]["IssueUpdateDetails"]): Promise; /** List all Viewable Projects * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id289193) - * @name listProjects - * @function */ - listProjects(): Promise; + listProjects(): Promise; /** Add a comment to an issue * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#id108798) - * @name addComment - * @function - * @param {string} issueId - Issue to add a comment to - * @param {string} comment - string containing comment - */ - addComment(issueId: any, comment: any): Promise; - /** Add a comment to an issue, supports full comment object - * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#id108798) - * @name addCommentAdvanced - * @function - * @param {string} issueId - Issue to add a comment to - * @param {object} comment - The object containing your comment data + * @param issueId - Issue to add a comment to + * @param comment - string containing comment */ - addCommentAdvanced(issueId: any, comment: any): Promise; + addComment(issueId: string, comment: components["schemas"]["Comment"]): Promise; /** Update comment for an issue * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue-updateComment) - * @name updateComment - * @function - * @param {string} issueId - Issue with the comment - * @param {string} commentId - Comment that is updated - * @param {string} comment - string containing new comment - * @param {object} [options={}] - extra options - */ - updateComment(issueId: any, commentId: any, comment: any, options?: {}): Promise; + * @param issueId - Issue with the comment + * @param commentId - Comment that is updated + * @param comment - string containing new comment + * @param [options={}] - extra options + */ + updateComment(issueId: string, commentId: string, comment: components["schemas"]["Comment"], options?: cloudOperations["updateComment"]["parameters"]["query"]): Promise; /** - * @name getComments - * @function * Get Comments by IssueId. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-comment-list-post) - * @param {string} issueId - this issue this comment is on + * @param issueId - this issue this comment is on */ - getComments(issueId: any): Promise; + getComments(issueId: string): Promise; /** - * @name getComment - * @function * Get Comment by Id. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-comment-list-post) - * @param {string} issueId - this issue this comment is on - * @param {number} commentId - the id of the comment + * @param issueId - this issue this comment is on + * @param commentId - the id of the comment */ - getComment(issueId: any, commentId: any): Promise; + getComment(issueId: string, commentId: string): Promise; /** - * @name deleteComment - * @function * Delete Comments by Id. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-comment-list-post) - * @param {string} issueId - this issue this comment is on - * @param {number} commentId - the id of the comment + * @param issueId - this issue this comment is on + * @param commentId - the id of the comment */ - deleteComment(issueId: any, commentId: any): Promise; + deleteComment(issueId: string, commentId: string): Promise; /** Add a worklog to a project * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id291617) - * @name addWorklog - * @function - * @param {string} issueId - Issue to add a worklog to - * @param {object} worklog - worklog object from the rest API - * @param {object} newEstimate - the new value for the remaining estimate field - * @param {object} [options={}] - extra options - */ - addWorklog(issueId: any, worklog: any, newEstimate?: any, options?: {}): Promise; + * @param issueId - Issue to add a worklog to + * @param worklog - worklog object from the rest API + * @param newEstimate - the new value for the remaining estimate field + * @param [options={}] - extra options + */ + addWorklog(issueId: string, worklog: components["schemas"]["Worklog"], newEstimate?: any, options?: cloudOperations["addWorklog"]["parameters"]["query"]): Promise; /** Get ids of worklogs modified since * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/worklog-getWorklogsForIds) - * @name updatedWorklogs - * @function - * @param {number} since - a date time in unix timestamp format since when updated worklogs + * @param since - a date time in unix timestamp format since when updated worklogs * will be returned. - * @param {string} expand - ptional comma separated list of parameters to expand: properties + * @param expand - ptional comma separated list of parameters to expand: properties * (provides worklog properties). */ - updatedWorklogs(since: any, expand: any): Promise; + updatedWorklogs(since: string, expand: string[]): Promise; /** Delete worklog from issue * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#d2e1673) - * @name deleteWorklog - * @function - * @param {string} issueId - the Id of the issue to delete - * @param {string} worklogId - the Id of the worklog in issue to delete + * @param issueId - the Id of the issue to delete + * @param worklogId - the Id of the worklog in issue to delete */ - deleteWorklog(issueId: any, worklogId: any): Promise; + deleteWorklog(issueId: string, worklogId: number): Promise; + /** Update worklog from issue + * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-worklogs/#api-rest-api-2-issue-issueidorkey-worklog-id-put) + * @param issueId - the Id of the issue to update + * @param worklogId - the Id of the worklog in issue to update + * @param body - value to set + */ + updateWorklog(issueId: string, worklogId: number, body: components["schemas"]["Worklog"], options?: cloudOperations["updateWorklog"]["parameters"]["query"]): Promise; /** Deletes an issue link. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issueLink-linkId-delete) - * @name deleteIssueLink - * @function - * @param {string} linkId - the Id of the issue link to delete + * @param linkId - the Id of the issue link to delete */ - deleteIssueLink(linkId: any): Promise; + deleteIssueLink(linkId: string): Promise; /** Returns worklog details for a list of worklog IDs. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-worklog-list-post) - * @name getWorklogs - * @function * @param {array} worklogsIDs - a list of worklog IDs. - * @param {string} expand - expand to include additional information about worklogs + * @param expand - expand to include additional information about worklogs * */ - getWorklogs(worklogsIDs: any, expand: any): Promise; + getWorklogs(worklogsIDs: number[], expand: string[]): Promise; /** Get worklogs list from a given issue * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-api-3-issue-issueIdOrKey-worklog-get) - * @name getIssueWorklogs - * @function - * @param {string} issueId - the Id of the issue to find worklogs for - * @param {integer} [startAt=0] - optional starting index number - * @param {integer} [maxResults=1000] - optional ending index number + * @param issueId - the Id of the issue to find worklogs for + * @param [startAt=0] - optional starting index number + * @param [maxResults=1000] - optional ending index number */ - getIssueWorklogs(issueId: any, startAt?: number, maxResults?: number): Promise; + getIssueWorklogs(issueId: string, startAt?: number, maxResults?: number): Promise; /** List all Issue Types jira knows about * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id295946) - * @name listIssueTypes - * @function */ - listIssueTypes(): Promise; + listIssueTypes(): Promise; /** Register a webhook * [Jira Doc](https://developer.atlassian.com/display/JIRADEV/JIRA+Webhooks+Overview) - * @name registerWebhook - * @function - * @param {object} webhook - properly formatted webhook + * @param webhook - properly formatted webhook */ - registerWebhook(webhook: any): Promise; + registerWebhook(webhook: components["schemas"]["WebhookRegistrationDetails"]): Promise; /** List all registered webhooks * [Jira Doc](https://developer.atlassian.com/display/JIRADEV/JIRA+Webhooks+Overview) - * @name listWebhooks - * @function */ - listWebhooks(): Promise; + listWebhooks(): Promise; /** Get a webhook by its ID * [Jira Doc](https://developer.atlassian.com/display/JIRADEV/JIRA+Webhooks+Overview) - * @name getWebhook - * @function - * @param {string} webhookID - id of webhook to get + * @param webhookID - id of webhook to get */ - getWebhook(webhookID: any): Promise; + getWebhook(webhookID: string): Promise; /** Delete a registered webhook * [Jira Doc](https://developer.atlassian.com/display/JIRADEV/JIRA+Webhooks+Overview) - * @name issueLink - * @function - * @param {string} webhookID - id of the webhook to delete + * @param webhookID - id of the webhook to delete */ - deleteWebhook(webhookID: any): Promise; + deleteWebhook(webhookID: string): Promise; /** Describe the currently authenticated user * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id2e865) - * @name getCurrentUser - * @function */ - getCurrentUser(): Promise; - /** Retrieve the backlog of a certain Rapid View - * @name getBacklogForRapidView - * @function - * @param {string} rapidViewId - rapid view id + getCurrentUser(): Promise; + /** Retrieve the backlog of a certain Board + * @param boardId - rapid view id */ - getBacklogForRapidView(rapidViewId: any): Promise; + getBacklogForBoard(boardId: string): Promise; /** Add attachment to a Issue * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/issue/{issueIdOrKey}/attachments-addAttachment) - * @name addAttachmentOnIssue - * @function - * @param {string} issueId - issue id - * @param {object} readStream - readStream object from fs + * @param issueId - issue id + * @param readStream - readStream object from fs */ - addAttachmentOnIssue(issueId: any, readStream: any): Promise; + addAttachmentOnIssue(issueId: string, readStream: Buffer): Promise; /** Notify people related to issue * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue-notify) - * @name issueNotify - * @function - * @param {string} issueId - issue id - * @param {object} notificationBody - properly formatted body + * @param issueId - issue id + * @param notificationBody - properly formatted body */ - issueNotify(issueId: any, notificationBody: any): Promise; + issueNotify(issueId: string, notificationBody: components["schemas"]["Notification"]): Promise; /** Get list of possible statuses * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/status-getStatuses) - * @name listStatus - * @function */ - listStatus(): Promise; + listStatus(): Promise; /** Get a Dev-Status summary by issue ID - * @name getDevStatusSummary - * @function - * @param {string} issueId - id of issue to get + * @param issueId - id of issue to get */ - getDevStatusSummary(issueId: any): Promise; + getDevStatusSummary(issueId: string): Promise; /** Get a Dev-Status detail by issue ID - * @name getDevStatusDetail - * @function - * @param {string} issueId - id of issue to get - * @param {string} applicationType - type of application (stash, bitbucket) - * @param {string} dataType - info to return (repository, pullrequest) + * @param issueId - id of issue to get + * @param applicationType - type of application (stash, bitbucket) + * @param dataType - info to return (repository, pullrequest) */ - getDevStatusDetail(issueId: any, applicationType: any, dataType: any): Promise; + getDevStatusDetail(issueId: string, applicationType: string, dataType: string): Promise; /** Get issue * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/issue-getIssue) - * @name getIssue - * @function - * @param {string} issueIdOrKey - Id of issue - * @param {string} [fields] - The list of fields to return for each issue. - * @param {string} [expand] - A comma-separated list of the parameters to expand. + * @param issueIdOrKey - Id of issue + * @param [fields] - The list of fields to return for each issue. + * @param [expand] - A comma-separated list of the parameters to expand. */ - getIssue(issueIdOrKey: any, fields: any, expand: any): Promise; + getIssue(issueIdOrKey: string, fields: string[], expand: string[]): Promise; /** Move issues to backlog * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/backlog-moveIssuesToBacklog) - * @name moveToBacklog - * @function * @param {array} issues - id or key of issues to get */ - moveToBacklog(issues: any): Promise; + moveToBacklog(issues: string[]): Promise; /** Get all boards * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getAllBoards) - * @name getAllBoards - * @function - * @param {number} [startAt=0] - The starting index of the returned boards. - * @param {number} [maxResults=50] - The maximum number of boards to return per page. - * @param {string} [type] - Filters results to boards of the specified type. - * @param {string} [name] - Filters results to boards that match the specified name. - * @param {string} [projectKeyOrId] - Filters results to boards that are relevant to a project. - */ - getAllBoards(startAt: number, maxResults: number, type: any, name: any, projectKeyOrId: any): Promise; + * @param [type] - Filters results to boards of the specified type. + * @param [name] - Filters results to boards that match the specified name. + * @param [projectKeyOrId] - Filters results to boards that are relevant to a project. + * @param [startAt=0] - The starting index of the returned boards. + * @param [maxResults=50] - The maximum number of boards to return per page. + */ + getAllBoards(type: string, name: string, projectKeyOrId: string, startAt?: number, maxResults?: number): Promise; /** Create Board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-createBoard) - * @name createBoard - * @function - * @param {object} boardBody - Board name, type and filter Id is required. - * @param {string} boardBody.type - Valid values: scrum, kanban - * @param {string} boardBody.name - Must be less than 255 characters. - * @param {string} boardBody.filterId - Id of a filter that the user has permissions to view. - */ - createBoard(boardBody: any): Promise; + * @param boardBody - Board name, type and filter Id is required. + * @param boardBody.type - Valid values: scrum, kanban + * @param boardBody.name - Must be less than 255 characters. + * @param boardBody.filterId - Id of a filter that the user has permissions to view. + */ + createBoard(boardBody: operations["createBoard"]["requestBody"]["content"]["application/json"]): Promise; /** Get Board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getBoard) - * @name getBoard - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ - getBoard(boardId: any): Promise; + getBoard(boardId: string): Promise; /** Delete Board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-deleteBoard) - * @name deleteBoard - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ - deleteBoard(boardId: any): Promise; + deleteBoard(boardId: string): Promise; /** Get issues for backlog * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getIssuesForBacklog) - * @name getIssuesForBacklog - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. */ - getIssuesForBacklog(boardId: any, startAt: number, maxResults: number, jql: any, validateQuery: boolean, fields: any): Promise; + getIssuesForBacklog(boardId: string, jql: string, fields: string[], startAt?: number, maxResults?: number, validateQuery?: boolean): Promise; /** Get Configuration * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getConfiguration) - * @name getConfiguration - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ - getConfiguration(boardId: any): Promise; + getConfiguration(boardId: string): Promise; /** Get issues for board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getIssuesForBoard) - * @name getIssuesForBoard - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. */ - getIssuesForBoard(boardId: any, startAt: number, maxResults: number, jql: any, validateQuery: boolean, fields: any): Promise; + getIssuesForBoard(boardId: string, jql?: string | undefined, fields?: any, startAt?: number, maxResults?: number, validateQuery?: boolean): Promise; /** Get issue estimation for board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/issue-getIssueEstimationForBoard) - * @name getIssueEstimationForBoard - * @function - * @param {string} issueIdOrKey - Id of issue - * @param {number} boardId - The id of the board required to determine which field + * @param issueIdOrKey - Id of issue + * @param boardId - The id of the board required to determine which field * is used for estimation. */ - getIssueEstimationForBoard(issueIdOrKey: any, boardId: any): Promise; + getIssueEstimationForBoard(issueIdOrKey: string, boardId: string): Promise; /** Get Epics * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/epic-getEpics) - * @name getEpics - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned epics. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of epics to return per page. Default: 50. - * @param {string} [done] - Filters results to epics that are either done or not done. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned epics. Base index: 0. + * @param [maxResults=50] - The maximum number of epics to return per page. Default: 50. + * @param [done] - Filters results to epics that are either done or not done. * Valid values: true, false. */ - getEpics(boardId: any, startAt: number, maxResults: number, done: any): Promise; + getEpics(boardId: string, startAt?: number, maxResults?: number, done?: any): Promise; /** Get board issues for epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/epic-getIssuesForEpic) * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/epic-getIssuesWithoutEpic) - * @name getBoardIssuesForEpic - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} epicId - Id of epic to retrieve, specify 'none' to get issues without an epic. - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * @param boardId - Id of board to retrieve + * @param epicId - Id of epic to retrieve, specify 'none' to get issues without an epic. + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. */ - getBoardIssuesForEpic(boardId: any, epicId: any, startAt: number, maxResults: number, jql: any, validateQuery: boolean, fields: any): Promise; + getBoardIssuesForEpic(boardId: string, epicId: string, startAt?: number, maxResults?: number, jql?: any, validateQuery?: boolean, fields?: any): Promise; /** Estimate issue for board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/issue-estimateIssueForBoard) - * @name estimateIssueForBoard - * @function - * @param {string} issueIdOrKey - Id of issue - * @param {number} boardId - The id of the board required to determine which field + * @param issueIdOrKey - Id of issue + * @param boardId - The id of the board required to determine which field * is used for estimation. - * @param {string} body - value to set + * @param data - value to set */ - estimateIssueForBoard(issueIdOrKey: any, boardId: any, data: any): Promise; + estimateIssueForBoard(issueIdOrKey: string, boardId: string, data: operations["estimateIssueForBoard"]["requestBody"]["content"]["application/json"]): Promise; /** Rank Issues * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/issue-rankIssues) - * @name rankIssues - * @function - * @param {string} body - value to set + * @param data - value to set */ - rankIssues(data: any): Promise; + rankIssues(data: operations["rankIssues"]["requestBody"]["content"]["application/json"]): Promise; /** Get Projects * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/project-getProjects) - * @name getProjects - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned projects. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of projects to return per page. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned projects. Base index: 0. + * @param [maxResults=50] - The maximum number of projects to return per page. * Default: 50. */ - getProjects(boardId: any, startAt?: number, maxResults?: number): Promise; + getProjects(boardId: string, startAt?: number, maxResults?: number): Promise; /** Get Projects Full * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/project-getProjectsFull) - * @name getProjectsFull - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ - getProjectsFull(boardId: any): Promise; + getProjectsFull(boardId: string): Promise; /** Get Board Properties Keys * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/properties-getPropertiesKeys) - * @name getBoardPropertiesKeys - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ - getBoardPropertiesKeys(boardId: any): Promise; + getBoardPropertiesKeys(boardId: string): Promise; /** Delete Board Property * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/properties-deleteProperty) - * @name deleteBoardProperty - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} propertyKey - Id of property to delete + * @param boardId - Id of board to retrieve + * @param propertyKey - Id of property to delete */ - deleteBoardProperty(boardId: any, propertyKey: any): Promise; + deleteBoardProperty(boardId: string, propertyKey: string): Promise; /** Set Board Property * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/properties-setProperty) - * @name setBoardProperty - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} propertyKey - Id of property to delete - * @param {string} body - value to set, for objects make sure to stringify first + * @param boardId - Id of board to retrieve + * @param propertyKey - Id of property to delete + * @param data - value to set, for objects make sure to stringify first */ - setBoardProperty(boardId: any, propertyKey: any, data: any): Promise; + setBoardProperty(boardId: string, propertyKey: string, data: string): Promise; /** Get Board Property * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/properties-getProperty) - * @name getBoardProperty - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} propertyKey - Id of property to retrieve + * @param boardId - Id of board to retrieve + * @param propertyKey - Id of property to retrieve */ - getBoardProperty(boardId: any, propertyKey: any): Promise; + getBoardProperty(boardId: string, propertyKey: string): Promise; /** Get All Sprints * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/sprint-getAllSprints) - * @name getAllSprints - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned sprints. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of sprints to return per page. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned sprints. Base index: 0. + * @param [maxResults=50] - The maximum number of sprints to return per page. * Default: 50. - * @param {string} [state] - Filters results to sprints in specified states. + * @param [state] - Filters results to sprints in specified states. * Valid values: future, active, closed. */ - getAllSprints(boardId: any, startAt: number, maxResults: number, state: any): Promise; + getAllSprints(boardId: string, startAt?: number, maxResults?: number, state?: string | undefined): Promise; /** Get Board issues for sprint - * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/sprint-getIssuesForSprint) - * @name getBoardIssuesForSprint - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} sprintId - Id of sprint to retrieve - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * [Jira Doc](https://developer.atlassian.com/cloud/jira/software/rest/api-group-board/#api-agile-1-0-board-boardid-sprint-sprintid-issue-get) + * @param boardId - Id of board to retrieve + * @param sprintId - Id of sprint to retrieve + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. + * @param [expand] - A comma-separated list of the parameters to expand. */ - getBoardIssuesForSprint(boardId: any, sprintId: any, startAt: number, maxResults: number, jql: any, validateQuery: boolean, fields: any): Promise; + getBoardIssuesForSprint(boardId: string, sprintId: string, startAt?: number, maxResults?: number, jql?: string | undefined, validateQuery?: boolean, fields?: string[] | undefined, expand?: string[] | undefined): Promise; /** Get All Versions * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/version-getAllVersions) - * @name getAllVersions - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned versions. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of versions to return per page. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned versions. Base index: 0. + * @param [maxResults=50] - The maximum number of versions to return per page. * Default: 50. - * @param {string} [released] - Filters results to versions that are either released or + * @param [released] - Filters results to versions that are either released or * unreleased.Valid values: true, false. */ - getAllVersions(boardId: any, startAt: number, maxResults: number, released: any): Promise; + getAllVersions(boardId: string, startAt?: number, maxResults?: number, released?: boolean | undefined): Promise; /** Get Filter * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/filter) - * @name getFilter - * @function - * @param {string} filterId - Id of filter to retrieve + * @param filterId - Id of filter to retrieve */ - getFilter(filterId: any): Promise; + getFilter(filterId: string): Promise; /** Get Epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-getEpic) - * @name getEpic - * @function - * @param {string} epicIdOrKey - Id of epic to retrieve + * @param epicIdOrKey - Id of epic to retrieve */ - getEpic(epicIdOrKey: any): Promise; + getEpic(epicIdOrKey: string): Promise; /** Partially update epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-partiallyUpdateEpic) - * @name partiallyUpdateEpic - * @function - * @param {string} epicIdOrKey - Id of epic to retrieve - * @param {string} body - value to set, for objects make sure to stringify first + * @param epicIdOrKey - Id of epic to retrieve + * @param data - data to set */ - partiallyUpdateEpic(epicIdOrKey: any, data: any): Promise; + partiallyUpdateEpic(epicIdOrKey: string, data: operations["partiallyUpdateEpic"]["requestBody"]["content"]["application/json"]): Promise; /** Get issues for epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-getIssuesForEpic) * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-getIssuesWithoutEpic) - * @name getIssuesForEpic - * @function - * @param {string} epicId - Id of epic to retrieve, specify 'none' to get issues without an epic. - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * @param epicId - Id of epic to retrieve, specify 'none' to get issues without an epic. + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. */ - getIssuesForEpic(epicId: any, startAt: number, maxResults: number, jql: any, validateQuery: boolean, fields: any): Promise; + getIssuesForEpic(epicId: string, startAt?: number, maxResults?: number, jql?: string | undefined, validateQuery?: boolean, fields?: string[] | undefined): Promise; /** Move Issues to Epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-moveIssuesToEpic) * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-removeIssuesFromEpic) - * @name moveIssuesToEpic - * @function - * @param {string} epicIdOrKey - Id of epic to move issue to, or 'none' to remove from epic + * @param epicIdOrKey - Id of epic to move issue to, or 'none' to remove from epic * @param {array} issues - array of issues to move */ - moveIssuesToEpic(epicIdOrKey: any, issues: any): Promise; + moveIssuesToEpic(epicIdOrKey: string, issues: string[]): Promise; /** Rank Epics * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-rankEpics) - * @name rankEpics - * @function - * @param {string} epicIdOrKey - Id of epic - * @param {string} body - value to set + * @param epicIdOrKey - Id of epic + * @param data - value to set */ - rankEpics(epicIdOrKey: any, data: any): Promise; + rankEpics(epicIdOrKey: string, data: operations["rankEpics"]["requestBody"]["content"]["application/json"]): Promise; /** - * @name getServerInfo - * @function * Get server info * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-api-2-serverInfo-get) */ - getServerInfo(): Promise; + getServerInfo(): Promise; /** - * @name getIssueCreateMetadata - * @param {object} optional - object containing any of the following properties + + * @param optional - object containing unknown of the following properties * @param {array} [optional.projectIds]: optional Array of project ids to return metadata for * @param {array} [optional.projectKeys]: optional Array of project keys to return metadata for * @param {array} [optional.issuetypeIds]: optional Array of issuetype ids to return metadata for * @param {array} [optional.issuetypeNames]: optional Array of issuetype names to return metadata * for - * @param {string} [optional.expand]: optional Include additional information about issue + * @param [optional.expand]: optional Include additional information about issue * metadata. Valid value is 'projects.issuetypes.fields' * Get metadata for creating an issue. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-createmeta-get) */ - getIssueCreateMetadata(optional?: {}): Promise; - getIssueCreateMetaProjectIssueTypes(projectIdOrKey: string | number, startAt: number, maxResults: number): Promise; - getIssueCreateMetaFields(projectIdOrKey: string | number, issueTypeId: string, startAt: number, maxResults: number): Promise; - getWorkflows(query?: {}): Promise; - getWorkflowScheme(projectKeyOrId: string, query?: {}): Promise; + getIssueCreateMetadata(optional?: {}): Promise; + getIssueCreateMetaProjectIssueTypes(projectIdOrKey: string | number, startAt: number, maxResults: number): Promise; + getIssueCreateMetaFields(projectIdOrKey: string | number, issueTypeId: string, startAt: number, maxResults: number): Promise; + getWorkflows(query?: {}): Promise; + getWorkflowScheme(projectKeyOrId: string, query?: {}): Promise; /** Generic Get Request * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/2/) - * @name genericGet - * @function - * @param {string} endpoint - Rest API endpoint + * @param endpoint - Rest API endpoint + */ + genericGet(endpoint: string): Promise; + /** Generic Get Request to the Agile API + * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/2/) + * @param endpoint - Rest API endpoint */ - genericGet(endpoint: any): Promise; + genericAgileGet(endpoint: string): Promise; } export {}; diff --git a/lib/jira.js b/lib/jira.js index 2fbb612..980125c 100644 --- a/lib/jira.js +++ b/lib/jira.js @@ -10,25 +10,6 @@ var __assign = (this && this.__assign) || function () { }; return __assign.apply(this, arguments); }; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { @@ -44,7 +25,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) { function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) try { + while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { @@ -68,365 +49,225 @@ var __generator = (this && this.__generator) || function (thisArg, body) { var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; -exports.__esModule = true; -var url = __importStar(require("url")); +Object.defineProperty(exports, "__esModule", { value: true }); var axios_1 = __importDefault(require("axios")); +var https_1 = require("https"); /** - * @name JiraApi - * @class * Wrapper for the JIRA Rest Api * https://docs.atlassian.com/jira/REST/6.4.8/ */ var JiraApi = /** @class */ (function () { /** + * Construct a new JiraApi * @constructor - * @function * @param {JiraApiOptions} options */ function JiraApi(options) { - this.protocol = options.protocol || 'http'; + this.protocol = options.protocol || "http"; this.host = options.host; this.port = options.port || null; this.apiVersion = options.apiVersion || 2; - this.base = options.base || ''; + this.base = options.base || ""; this.intermediatePath = options.intermediatePath; // This is so we can fake during unit tests - this.axios = options.axios || axios_1["default"].create(); - this.webhookVersion = options.webHookVersion || '1.0'; - this.greenhopperVersion = options.greenhopperVersion || '1.0'; + if ("axios" in options) { + this.axios = options.axios; + } + else if ("strictSSL" in options || "ca" in options) { + this.httpsAgent = new https_1.Agent({ rejectUnauthorized: !options.strictSSL, ca: options.ca }); + this.axios = axios_1.default.create({ + httpsAgent: this.httpsAgent, + }); + } + else { + this.axios = axios_1.default.create(); + } + this.webhookVersion = options.webHookVersion || "1.0"; this.baseOptions = __assign({}, options.baseOptions); if (!this.baseOptions.headers) this.baseOptions.headers = {}; if (options.bearer) { - this.baseOptions.headers['Authorization'] = 'Bearer ' + options.bearer; + this.baseOptions.headers.Authorization = "Bearer ".concat(options.bearer); } else if (options.username && options.password) { this.baseOptions.auth = { username: options.username, - password: options.password + password: options.password, }; } if (options.timeout) { this.baseOptions.timeout = options.timeout; } - this.baseOptions.headers['X-Atlassian-Token'] = 'no-check'; + this.baseOptions.headers["X-Atlassian-Token"] = "no-check"; } /** - * @typedef JiraApiOptions - * @type {object} - * @property {string} [protocol=http] - What protocol to use to connect to - * jira? Ex: http|https - * @property {string} host - What host is this tool connecting to for the jira - * instance? Ex: jira.somehost.com - * @property {string} [port] - What port is this tool connecting to jira with? Only needed for - * none standard ports. Ex: 8080, 3000, etc - * @property {string} [username] - Specify a username for this tool to authenticate all - * requests with. - * @property {string} [password] - Specify a password for this tool to authenticate all - * requests with. Cloud users need to generate an [API token](https://confluence.atlassian.com/cloud/api-tokens-938839638.html) for this value. - * @property {string} [apiVersion=2] - What version of the jira rest api is the instance the - * tool is connecting to? - * @property {string} [base] - What other url parts exist, if any, before the rest/api/ - * section? - * @property {string} [intermediatePath] - If specified, overwrites the default rest/api/version - * section of the uri - * @property {boolean} [strictSSL=true] - Does this tool require each request to be - * authenticated? Defaults to true. - * @property {function} [request] - What method does this tool use to make its requests? - * Defaults to request from request-promise - * @property {number} [timeout] - Integer containing the number of milliseconds to wait for a - * server to send response headers (and start the response body) before aborting the request. Note - * that if the underlying TCP connection cannot be established, the OS-wide TCP connection timeout - * will overrule the timeout option ([the default in Linux can be anywhere from 20-120 * - * seconds](http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout)). - * @property {string} [webhookVersion=1.0] - What webhook version does this api wrapper need to - * hit? - * @property {string} [greenhopperVersion=1.0] - What webhook version does this api wrapper need - * to hit? - * @property {string} [ca] - Specify a CA certificate - * @property {OAuth} [oauth] - Specify an OAuth object for this tool to authenticate all requests - * using OAuth. - * @property {string} [bearer] - Specify an OAuth bearer token to authenticate all requests with. - */ - /** - * @typedef OAuth - * @type {object} - * @property {string} consumer_key - The consumer entered in Jira Preferences. - * @property {string} consumer_secret - The private RSA file. - * @property {string} access_token - The generated access token. - * @property {string} access_token_secret - The generated access toke secret. - * @property {string} signature_method [signature_method=RSA-SHA1] - OAuth signurate methode - * Possible values RSA-SHA1, HMAC-SHA1, PLAINTEXT. Jira Cloud supports only RSA-SHA1. - */ - /** - * @typedef {object} UriOptions - * @property {string} pathname - The url after the specific functions path - * @property {object} [query] - An object of all query parameters - * @property {string} [intermediatePath] - Overwrites with specified path - */ - /** - * @name makeRequestHeader - * @function * Creates a requestOptions object based on the default template for one - * @param {string} uri - * @param {object} [options] - an object containing fields and formatting how the + * @param url + * @param options an object containing fields and formatting how the */ JiraApi.prototype.makeRequestHeader = function (url, options) { if (options === void 0) { options = {}; } - return __assign({ method: options.method || 'GET', url: url }, options); + return __assign({ method: options.method || "GET", url: url }, options); }; /** - * @typedef makeRequestHeaderOptions - * @type {object} - * @property {string} [method] - HTTP Request Method. ie GET, POST, PUT, DELETE - */ - /** - * @name makeUri - * @function * Creates a URI object for a given pathname - * @param {object} [options] - an object containing path information + * @param [options] - an object containing path information */ JiraApi.prototype.makeUri = function (_a) { - var pathname = _a.pathname, query = _a.query, intermediatePath = _a.intermediatePath, _b = _a.encode, encode = _b === void 0 ? false : _b; + var _b; + var pathname = _a.pathname, query = _a.query, intermediatePath = _a.intermediatePath; var intermediateToUse = this.intermediatePath || intermediatePath; - var tempPath = intermediateToUse || "/rest/api/" + this.apiVersion; - var uri = url.format({ - protocol: this.protocol, - hostname: this.host, - port: this.port, - pathname: "" + this.base + tempPath + pathname, - query: query - }); - return encode ? encodeURI(uri) : decodeURIComponent(uri); + var tempPath = intermediateToUse || "/rest/api/".concat(this.apiVersion); + var uri = new URL("http://localhost"); + uri.protocol = this.protocol; + uri.hostname = this.host; + uri.port = (_b = this.port) === null || _b === void 0 ? void 0 : _b.toString(); + uri.pathname = "".concat(this.base).concat(tempPath).concat(pathname); + for (var key in query) { + uri.searchParams.append(key, query[key].toString()); + } + return uri.toString(); }; /** - * @typedef makeUriOptions - * @type {object} - * @property {string} pathname - The url after the /rest/api/version - * @property {object} query - a query object - * @property {string} intermediatePath - If specified will overwrite the /rest/api/version section - */ - /** - * @name makeWebhookUri - * @function * Creates a URI object for a given pathName - * @param {object} [options] - An options object specifying uri information + * @param [options] - An options object specifying uri information */ JiraApi.prototype.makeWebhookUri = function (_a) { - var pathname = _a.pathname, intermediatePath = _a.intermediatePath; - var intermediateToUse = this.intermediatePath || intermediatePath; - var tempPath = intermediateToUse || "/rest/webhooks/" + this.webhookVersion; - var uri = url.format({ - protocol: this.protocol, - hostname: this.host, - port: this.port, - pathname: "" + this.base + tempPath + pathname - }); - return decodeURIComponent(uri); - }; - /** - * @typedef makeWebhookUriOptions - * @type {object} - * @property {string} pathname - The url after the /rest/webhooks - * @property {string} intermediatePath - If specified will overwrite the /rest/webhooks section - */ - /** - * @name makeSprintQueryUri - * @function - * Creates a URI object for a given pathName - * @param {object} [options] - The url after the /rest/ - */ - JiraApi.prototype.makeSprintQueryUri = function (_a) { - var pathname = _a.pathname, query = _a.query, intermediatePath = _a.intermediatePath; - var intermediateToUse = this.intermediatePath || intermediatePath; - var tempPath = intermediateToUse || "/rest/greenhopper/" + this.greenhopperVersion; - var uri = url.format({ - protocol: this.protocol, - hostname: this.host, - port: this.port, - pathname: "" + this.base + tempPath + pathname, - query: query + var pathname = _a.pathname; + return this.makeUri({ + pathname: pathname, + intermediatePath: "/rest/webhooks/".concat(this.webhookVersion), }); - return decodeURIComponent(uri); }; /** - * @typedef makeSprintQueryUriOptions - * @type {object} - * @property {string} pathname - The url after the /rest/api/version - * @property {object} query - a query object - * @property {string} intermediatePath - will overwrite the /rest/greenhopper/version section - */ - /** - * @typedef makeDevStatusUri - * @function * Creates a URI object for a given pathname - * @arg {pathname, query, intermediatePath} obj1 - * @param {string} pathname obj1.pathname - The url after the /rest/api/version - * @param {object} query obj1.query - a query object - * @param {string} intermediatePath obj1.intermediatePath - If specified will overwrite the * /rest/dev-status/latest/issue/detail section */ JiraApi.prototype.makeDevStatusUri = function (_a) { - var pathname = _a.pathname, query = _a.query, intermediatePath = _a.intermediatePath; - var intermediateToUse = this.intermediatePath || intermediatePath; - var tempPath = intermediateToUse || '/rest/dev-status/latest/issue'; - var uri = url.format({ - protocol: this.protocol, - hostname: this.host, - port: this.port, - pathname: "" + this.base + tempPath + pathname, - query: query + var pathname = _a.pathname, query = _a.query; + return this.makeUri({ + pathname: pathname, + query: query, + intermediatePath: "/rest/dev-status/latest/issue", }); - return decodeURIComponent(uri); }; /** - * @name makeAgile1Uri - * @function * Creates a URI object for a given pathname - * @param {UriOptions} object + * @param object */ JiraApi.prototype.makeAgileUri = function (object) { - var intermediateToUse = this.intermediatePath || object.intermediatePath; - var tempPath = intermediateToUse || '/rest/agile/1.0'; - var uri = url.format({ - protocol: this.protocol, - hostname: this.host, - port: this.port, - pathname: "" + this.base + tempPath + object.pathname, - query: object.query - }); - return decodeURIComponent(uri); + var _a; + return this.makeUri(__assign(__assign({}, object), { intermediatePath: (_a = object.intermediatePath) !== null && _a !== void 0 ? _a : "/rest/agile/1.0" })); }; - /** - * @name doRequest - * @function - * Does a request based on the requestOptions object - * @param {object} requestOptions - fields on this object get posted as a request header for - * requests to jira - */ JiraApi.prototype.doRequest = function (requestOptions) { return __awaiter(this, void 0, void 0, function () { - var response; return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.doPlainRequest(requestOptions)]; - case 1: - response = _a.sent(); - return [2 /*return*/, response.data]; - } + return [2 /*return*/, this.doRawRequest(requestOptions).then(function (response) { return response.data; })]; }); }); }; - JiraApi.prototype.doPlainRequest = function (requestOptions) { + JiraApi.prototype.doRawRequest = function (requestOptions) { return __awaiter(this, void 0, void 0, function () { var options; return __generator(this, function (_a) { options = __assign(__assign({}, this.baseOptions), requestOptions); - console.log('request', options); return [2 /*return*/, this.axios.request(options)]; }); }); }; /** - * @name findIssue - * @function * Find an issue in jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290709) - * @param {string} issueNumber - The issue number to search for including the project key - * @param {string} expand - The resource expansion to return additional fields in the response - * @param {string} fields - Comma separated list of field ids or keys to retrieve - * @param {string} properties - Comma separated list of properties to retrieve - * @param {boolean} fieldsByKeys - False by default, used to retrieve fields by key instead of id + * @param issueNumber - The issue number to search for including the project key + * @param expand - The resource expansion to return additional fields in the response + * @param fields - Comma separated list of field ids or keys to retrieve + * @param properties - Comma separated list of properties to retrieve + * @param fieldsByKeys - False by default, used to retrieve fields by key instead of id */ JiraApi.prototype.findIssue = function (issueNumber, expand, fields, properties, fieldsByKeys) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueNumber, + pathname: "/issue/".concat(issueNumber), query: { - expand: expand || '', - fields: fields || '*all', - properties: properties || '*all', - fieldsByKeys: fieldsByKeys || false - } + expand: expand || "", + fields: fields || "*all", + properties: properties || "*all", + fieldsByKeys: fieldsByKeys || false, + }, }))); }; /** - * @name downloadUserAvatar - * @function * Download an avatar * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290709) - * @param {number} avatarId - The avatar to download + * @param ownerId + * @param avatarId - The avatar to download */ JiraApi.prototype.downloadUserAvatar = function (ownerId, avatarId) { return __awaiter(this, void 0, void 0, function () { var response; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, this.doPlainRequest(this.makeRequestHeader(this.makeUri({ + case 0: return [4 /*yield*/, this.doRawRequest(this.makeRequestHeader(this.makeUri({ pathname: "/useravatar", - intermediatePath: '/secure', + intermediatePath: "/secure", query: { ownerId: ownerId, - avatarId: avatarId - } - }), { responseType: 'arraybuffer' }))]; + avatarId: avatarId, + }, + }), { responseType: "arraybuffer" }))]; case 1: response = _a.sent(); return [2 /*return*/, { - mimeType: response.headers['content-type'], - content: response.data + mimeType: response.headers["content-type"], + content: response.data, }]; } }); }); }; /** - * @name downloadAvatar - * @function * Download an avatar * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290709) * @param avatarType - * @param {number} avatarId - The avatar to download + * @param avatarId - The avatar to download */ JiraApi.prototype.downloadAvatar = function (avatarType, avatarId) { return __awaiter(this, void 0, void 0, function () { var response; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, this.doPlainRequest(this.makeRequestHeader(this.makeUri({ + case 0: return [4 /*yield*/, this.doRawRequest(this.makeRequestHeader(this.makeUri({ pathname: "/viewavatar", - intermediatePath: '/secure', + intermediatePath: "/secure", query: { avatarType: avatarType, - avatarId: avatarId - } - }), { responseType: 'arraybuffer' }))]; + avatarId: avatarId, + }, + }), { responseType: "arraybuffer" }))]; case 1: response = _a.sent(); return [2 /*return*/, { - mimeType: response.headers['content-type'], - content: response.data + mimeType: response.headers["content-type"], + content: response.data, }]; } }); }); }; /** - * @name downloadAttachment - * @function * Download an attachment * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id288524) - * @param {object} attachment - the attachment + * @param attachment - the attachment */ JiraApi.prototype.downloadAttachment = function (attachment) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, this.doPlainRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/attachment/" + attachment.id + "/" + attachment.filename, - intermediatePath: '/secure', - encode: true - }), { responseType: 'arraybuffer' }))]; + case 0: return [4 /*yield*/, this.doRawRequest(this.makeRequestHeader(this.makeUri({ + pathname: "/attachment/".concat(attachment.id, "/").concat(attachment.filename), + intermediatePath: "/secure", + encode: true, + }), { responseType: "arraybuffer" }))]; case 1: result = _a.sent(); return [2 /*return*/, result.data]; @@ -435,11 +276,19 @@ var JiraApi = /** @class */ (function () { }); }; /** - * @name getUnresolvedIssueCount - * @function + * Remove the attachment + * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-attachment-id-delete) + * @param attachmentId - the attachment id + */ + JiraApi.prototype.deleteAttachment = function (attachmentId) { + return this.doRequest(this.makeRequestHeader(this.makeUri({ + pathname: "/attachment/".concat(attachmentId), + }), { method: "DELETE" })); + }; + /** * Get the unresolved issue count * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id288524) - * @param {string} version - the version of your product you want to find the unresolved + * @param version - the version of your product you want to find the unresolved * issues of. */ JiraApi.prototype.getUnresolvedIssueCount = function (version) { @@ -449,1647 +298,1424 @@ var JiraApi = /** @class */ (function () { switch (_a.label) { case 0: requestHeaders = this.makeRequestHeader(this.makeUri({ - pathname: "/version/" + version + "/unresolvedIssueCount" + pathname: "/version/".concat(version, "/unresolvedIssueCount"), })); - return [4 /*yield*/, this.doRequest(requestHeaders)]; + return [4 /*yield*/, this.doRawRequest(requestHeaders)]; case 1: response = _a.sent(); - return [2 /*return*/, response.issuesUnresolvedCount]; + return [2 /*return*/, response.data.issuesUnresolvedCount]; } }); }); }; /** - * @name getProject - * @function * Get the Project by project key * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id289232) - * @param {string} project - key for the project + * @param project - key for the project */ JiraApi.prototype.getProject = function (project) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/project/" + project + pathname: "/project/".concat(project), }))); }; /** - * @name createProject - * @function * Create a new Project - * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/project-createProject) - * @param {object} project - with specs + * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/project-createproject: string) + * @param project - with specs */ JiraApi.prototype.createProject = function (project) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/project/' + pathname: "/project/", }), { - method: 'POST', - data: project + method: "POST", + data: project, })); }; - /** Find the Rapid View for a specified project - * @name findRapidView - * @function - * @param {string} projectName - name for the project + /** Get the issues for a board / sprint + * @param boardId + * @param sprintId - the id for the sprint */ - JiraApi.prototype.findRapidView = function (projectName) { - return __awaiter(this, void 0, void 0, function () { - var response, rapidViewResult; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.doRequest(this.makeRequestHeader(this.makeSprintQueryUri({ - pathname: '/rapidviews/list' - })))]; - case 1: - response = _a.sent(); - if (typeof projectName === 'undefined' || projectName === null) - return [2 /*return*/, response.data.views]; - rapidViewResult = response.data.views.find(function (x) { return x.name.toLowerCase() === projectName.toLowerCase(); }); - return [2 /*return*/, rapidViewResult]; - } - }); - }); - }; - /** Get the most recent sprint for a given rapidViewId - * @name getLastSprintForRapidView - * @function - * @param {string} rapidViewId - the id for the rapid view - */ - JiraApi.prototype.getLastSprintForRapidView = function (rapidViewId) { - return __awaiter(this, void 0, void 0, function () { - var response; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.doRequest(this.makeRequestHeader(this.makeSprintQueryUri({ - pathname: "/sprintquery/" + rapidViewId - })))]; - case 1: - response = _a.sent(); - return [2 /*return*/, response.data.sprints.pop()]; - } - }); - }); + JiraApi.prototype.getSprintIssues = function (boardId, sprintId) { + return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ + pathname: "board/".concat(boardId, "/sprint/").concat(sprintId, "/issue"), + }))); }; - /** Get the issues for a rapidView / sprint - * @name getSprintIssues - * @function - * @param {string} rapidViewId - the id for the rapid view - * @param {string} sprintId - the id for the sprint + /** Get a list of Sprints belonging to a Rapid View + * @param boardId - the id for the rapid view */ - JiraApi.prototype.getSprintIssues = function (rapidViewId, sprintId) { - return this.doRequest(this.makeRequestHeader(this.makeSprintQueryUri({ - pathname: '/rapid/charts/sprintreport', - query: { - rapidViewId: rapidViewId, - sprintId: sprintId - } + JiraApi.prototype.listSprints = function (boardId) { + return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ + pathname: "/board/".concat(boardId, "/sprint"), }))); }; - /** Get a list of Sprints belonging to a Rapid View - * @name listSprints - * @function - * @param {string} rapidViewId - the id for the rapid view + /** Get details about a Sprint + * @param sprintId - the id for the sprint view */ - JiraApi.prototype.listSprints = function (rapidViewId) { - return this.doRequest(this.makeRequestHeader(this.makeSprintQueryUri({ - pathname: "/sprintquery/" + rapidViewId + JiraApi.prototype.getSprint = function (sprintId) { + return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ + pathname: "/sprint/".concat(sprintId), }))); }; /** Add an issue to the project's current sprint - * @name addIssueToSprint - * @function - * @param {string} issueId - the id of the existing issue - * @param {string} sprintId - the id of the sprint to add it to + * @param issueId - the id of the existing issue + * @param sprintId - the id of the sprint to add it to */ JiraApi.prototype.addIssueToSprint = function (issueId, sprintId) { - return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/sprint/" + sprintId + "/issues/add" + return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ + pathname: "/sprint/".concat(sprintId, "/issue"), }), { - method: 'PUT', - maxRedirects: undefined, + method: "POST", data: { - issueKeys: [issueId] - } + issues: [issueId], + }, })); }; /** Create an issue link between two issues - * @name issueLink - * @function - * @param {object} link - a link object formatted how the Jira API specifies + * @param link - a link object formatted how the Jira API specifies */ JiraApi.prototype.issueLink = function (link) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/issueLink' + pathname: "/issueLink", }), { - method: 'POST', - data: link + method: "POST", + data: link, })); }; /** List all issue link types jira knows about * [Jira Doc](https://docs.atlassian.com/software/jira/docs/api/REST/8.5.0/#api/2/issueLinkType-getIssueLinkTypes) - * @name listIssueLinkTypes - * @function */ JiraApi.prototype.listIssueLinkTypes = function () { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/issueLinkType' + pathname: "/issueLinkType", }))); }; /** Retrieves the remote links associated with the given issue. - * @name getRemoteLinks - * @function - * @param {string} issueNumber - the issue number to find remote links for. + * @param issueNumber - the issue number to find remote links for. */ JiraApi.prototype.getRemoteLinks = function (issueNumber) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueNumber + "/remotelink" + pathname: "/issue/".concat(issueNumber, "/remotelink"), }))); }; /** - * @name createRemoteLink - * @function * Creates a remote link associated with the given issue. - * @param {string} issueNumber - The issue number to create the remotelink under - * @param {object} remoteLink - the remotelink object as specified by the Jira API + * @param issueNumber - The issue number to create the remotelink under + * @param remoteLink - the remotelink object as specified by the Jira API */ JiraApi.prototype.createRemoteLink = function (issueNumber, remoteLink) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueNumber + "/remotelink" + pathname: "/issue/".concat(issueNumber, "/remotelink"), + }), { + method: "POST", + data: remoteLink, + })); + }; + /** + * Delete a remote link with given issueNumber and id + * @param issueNumber - The issue number to delete the remotelink under + * @param id the remotelink id + */ + JiraApi.prototype.deleteRemoteLink = function (issueNumber, id) { + return this.doRequest(this.makeRequestHeader(this.makeUri({ + pathname: "/issue/".concat(issueNumber, "/remotelink/").concat(id), }), { - method: 'POST', - data: remoteLink + method: "DELETE", })); }; /** Get Versions for a project * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id289653) - * @name getVersions - * @function - * @param {string} project - A project key to get versions for + * @param project - A project key to get versions for + * @param query - An object containing the query params */ - JiraApi.prototype.getVersions = function (project) { + JiraApi.prototype.getVersions = function (project, query) { + var _a; return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/project/" + project + "/versions" + pathname: "/project/".concat(project, "/versions"), + query: { + expand: (_a = query.expand) === null || _a === void 0 ? void 0 : _a.join(","), + }, }))); }; /** Get details of single Version in project * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/version-getVersion) - * @name getVersion - * @function - * @param {string} version - The id of this version + * @param version - The id of this version */ JiraApi.prototype.getVersion = function (version) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/version/" + version + pathname: "/version/".concat(version), }))); }; /** Create a version * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id288232) - * @name createVersion - * @function - * @param {object} version - an object of the new version + * @param version - an object of the new version */ JiraApi.prototype.createVersion = function (version) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/version' + pathname: "/version", }), { - method: 'POST', - data: version + method: "POST", + data: version, })); }; /** Update a version * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#d2e510) - * @name updateVersion - * @function - * @param {object} version - an new object of the version to update + * @param version - a new object of the version to update */ JiraApi.prototype.updateVersion = function (version) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/version/" + version.id + pathname: "/version/".concat(version.id), }), { - method: 'PUT', - data: version + method: "PUT", + data: version, })); }; /** Delete a version * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/version-delete) - * @name deleteVersion - * @function - * @param {string} versionId - the ID of the version to delete - * @param {string} moveFixIssuesToId - when provided, existing fixVersions will be moved + * @param versionId - the ID of the version to delete + * @param moveFixIssuesToId - when provided, existing fixVersions will be moved * to this ID. Otherwise, the deleted version will be removed from all * issue fixVersions. - * @param {string} moveAffectedIssuesToId - when provided, existing affectedVersions will + * @param moveAffectedIssuesToId - when provided, existing affectedVersions will * be moved to this ID. Otherwise, the deleted version will be removed * from all issue affectedVersions. */ JiraApi.prototype.deleteVersion = function (versionId, moveFixIssuesToId, moveAffectedIssuesToId) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/version/" + versionId + pathname: "/version/".concat(versionId), }), { - method: 'DELETE', + method: "DELETE", data: { moveFixIssuesTo: moveFixIssuesToId, - moveAffectedIssuesTo: moveAffectedIssuesToId - } + moveAffectedIssuesTo: moveAffectedIssuesToId, + }, })); }; /** Move version * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/version-moveVersion) - * @name moveVersion - * @function - * @param {string} versionId - the ID of the version to delete - * @param {string} position - an object of the new position + * @param versionId - the ID of the version to delete + * @param position - an object of the new position */ JiraApi.prototype.moveVersion = function (versionId, position) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/version/" + versionId + "/move" + pathname: "/version/".concat(versionId, "/move"), }), { - method: 'POST', - data: position + method: "POST", + data: position, })); }; /** Pass a search query to Jira * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#d2e4424) - * @name searchJira - * @function - * @param {string} searchString - jira query string in JQL - * @param {object} optional - object containing any of the following properties - * @param {integer} [optional.startAt=0]: optional starting index number - * @param {integer} [optional.maxResults=50]: optional The maximum number of items to - * return per page. To manage page size, Jira may return fewer items per - * page where a large number of fields are requested. - * @param {array} [optional.fields]: optional array of string names of desired fields - * @param {array} [optional.expand]: optional array of string names of desired expand nodes + * @param searchString - jira query string in JQL + * @param optional - object containing any of the pagination properties */ JiraApi.prototype.searchJira = function (searchString, optional) { - if (optional === void 0) { optional = {}; } return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/search' + pathname: "/search", }), { - method: 'POST', - data: __assign({ jql: searchString }, optional) + method: "POST", + data: __assign({ jql: searchString }, optional), })); }; /** Create a Jira user * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/user-createUser) - * @name createUser - * @function - * @param {object} user - Properly Formatted User object + * @param user - Properly Formatted User object */ JiraApi.prototype.createUser = function (user) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/user' + pathname: "/user", }), { - method: 'POST', - data: user + method: "POST", + data: user, })); }; /** Search user on Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#d2e3756) - * @name searchUsers - * @function - * @param {SearchUserOptions} options */ JiraApi.prototype.searchUsers = function (_a) { - var username = _a.username, query = _a.query, startAt = _a.startAt, maxResults = _a.maxResults, includeActive = _a.includeActive, includeInactive = _a.includeInactive; + var username = _a.username, query = _a.query, startAt = _a.startAt, maxResults = _a.maxResults; return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/user/search', + pathname: "/user/search", query: { username: username, query: query, startAt: startAt || 0, maxResults: maxResults || 50, - includeActive: includeActive || true, - includeInactive: includeInactive || false - } + }, }))); }; - /** - * @typedef SearchUserOptions - * @type {object} - * @property {string} username - (DEPRECATED) A query string used to search username, name or - * e-mail address - * @property {string} query - A query string that is matched against user attributes - * (displayName, and emailAddress) to find relevant users. The string can match the prefix of - * the attribute's value. For example, query=john matches a user with a displayName of John - * Smith and a user with an emailAddress of johnson@example.com. Required, unless accountId - * or property is specified. - * @property {integer} [startAt=0] - The index of the first user to return (0-based) - * @property {integer} [maxResults=50] - The maximum number of users to return - * @property {boolean} [includeActive=true] - If true, then active users are included - * in the results - * @property {boolean} [includeInactive=false] - If true, then inactive users - * are included in the results - */ /** Get all users in group on Jira - * @name getUsersInGroup - * @function - * @param {string} groupname - A query string used to search users in group - * @param {integer} [startAt=0] - The index of the first user to return (0-based) - * @param {integer} [maxResults=50] - The maximum number of users to return (defaults to 50). + * @param groupname - A query string used to search users in group + * @param [startAt=0] - The index of the first user to return (0-based) + * @param [maxResults=50] - The maximum number of users to return (defaults to 50). + * @deprecated */ JiraApi.prototype.getUsersInGroup = function (groupname, startAt, maxResults) { if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 50; } return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/group', + pathname: "/group", query: { groupname: groupname, - expand: "users[" + startAt + ":" + maxResults + "]" - } + expand: "users[".concat(startAt, ":").concat(maxResults, "]"), + }, + }))); + }; + /** Get all members of group on Jira + * @param groupname - A query string used to search users in group + * @param [startAt=0] - The index of the first user to return (0-based) + * @param [maxResults=50] - The maximum number of users to return (defaults to 50). + * @param [includeInactiveUsers=false] - Fetch inactive users too (defaults to false). + */ + JiraApi.prototype.getMembersOfGroup = function (groupname, startAt, maxResults, includeInactiveUsers) { + if (startAt === void 0) { startAt = 0; } + if (maxResults === void 0) { maxResults = 50; } + if (includeInactiveUsers === void 0) { includeInactiveUsers = false; } + return this.doRequest(this.makeRequestHeader(this.makeUri({ + pathname: "/group/member", + query: { + groupname: groupname, + expand: "users[".concat(startAt, ":").concat(maxResults, "]"), + includeInactiveUsers: includeInactiveUsers, + }, }))); }; /** Get issues related to a user * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id296043) - * @name getUsersIssues - * @function - * @param {string} username - username of user to search for - * @param {boolean} open - determines if only open issues should be returned + * @param username - username of user to search for + * @param open - determines if only open issues should be returned */ JiraApi.prototype.getUsersIssues = function (username, open) { - var openJql = open ? " AND status in (Open, 'In Progress', Reopened)" : ''; - return this.searchJira("assignee = " + username.replace('@', '\\u0040') + openJql, {}); + var openJql = open ? " AND status in (Open, 'In Progress', Reopened)" : ""; + return this.searchJira("assignee = ".concat(username.replace("@", "\\u0040")).concat(openJql), {}); }; /** Returns a user. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-user-get) - * @name getUser - * @function - * @param {string} accountId - The accountId of user to search for - * @param {string} expand - The expand for additional info (groups,applicationRoles) + * @param accountId - The accountId of user to search for + * @param expand - The expand for additional info (groups,applicationRoles) */ JiraApi.prototype.getUser = function (accountId, expand) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/user', + pathname: "/user", query: { accountId: accountId, - expand: expand - } + expand: expand === null || expand === void 0 ? void 0 : expand.join(","), + }, }))); }; /** Returns a list of all (active and inactive) users. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-users-search-get) - * @name getUsers - * @function - * @param {integer} [startAt=0] - The index of the first user to return (0-based) - * @param {integer} [maxResults=50] - The maximum number of users to return (defaults to 50). + * @param [startAt=0] - The index of the first user to return (0-based) + * @param [maxResults=50] - The maximum number of users to return (defaults to 50). */ JiraApi.prototype.getUsers = function (startAt, maxResults) { if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 100; } return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/users', + pathname: "/users", query: { startAt: startAt, - maxResults: maxResults - } + maxResults: maxResults, + }, }))); }; /** Add issue to Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290028) - * @name addNewIssue - * @function - * @param {object} issue - Properly Formatted Issue object + * @param issue - Properly Formatted Issue object */ JiraApi.prototype.addNewIssue = function (issue) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/issue' + pathname: "/issue", }), { - method: 'POST', - data: issue + method: "POST", + data: issue, })); }; /** Add a user as a watcher on an issue - * @name addWatcher - * @function - * @param {string} issueKey - the key of the existing issue - * @param {string} username - the jira username to add as a watcher to the issue + * @param issueKey - the key of the existing issue + * @param username - the jira username to add as a watcher to the issue */ JiraApi.prototype.addWatcher = function (issueKey, username) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueKey + "/watchers" + pathname: "/issue/".concat(issueKey, "/watchers"), }), { - method: 'POST', - data: username + method: "POST", + data: username, })); }; /** Change an assignee on an issue * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue-assign) - * @name assignee - * @function - * @param {string} issueKey - the key of the existing issue - * @param {string} assigneeName - the jira username to add as a new assignee to the issue + * @param issueKey - the key of the existing issue + * @param assigneeName - the jira username to add as a new assignee to the issue */ JiraApi.prototype.updateAssignee = function (issueKey, assigneeName) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueKey + "/assignee" + pathname: "/issue/".concat(issueKey, "/assignee"), }), { - method: 'PUT', - data: { name: assigneeName } + method: "PUT", + data: { name: assigneeName }, })); }; /** Change an assignee on an issue * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-assignee-put) - * @name updateAssigneeWithId - * @function - * @param {string} issueKey - the key of the existing issue - * @param {string} userId - the jira username to add as a new assignee to the issue + * @param issueKey - the key of the existing issue + * @param userId - the jira username to add as a new assignee to the issue */ JiraApi.prototype.updateAssigneeWithId = function (issueKey, userId) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueKey + "/assignee" + pathname: "/issue/".concat(issueKey, "/assignee"), }), { - method: 'PUT', - data: { accountId: userId } + method: "PUT", + data: { accountId: userId }, })); }; /** Delete issue from Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290791) - * @name deleteIssue - * @function - * @param {string} issueId - the Id of the issue to delete + * @param issueId - the Id of the issue to delete */ JiraApi.prototype.deleteIssue = function (issueId) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + pathname: "/issue/".concat(issueId), }), { - method: 'DELETE' + method: "DELETE", })); }; /** Update issue in Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290878) - * @name updateIssue - * @function - * @param {string} issueId - the Id of the issue to update - * @param {object} issueUpdate - update Object as specified by the rest api - * @param {object} query - adds parameters to the query string + * @param issueId - the Id of the issue to update + * @param issueUpdate - update Object as specified by the rest api + * @param query - adds parameters to the query string */ JiraApi.prototype.updateIssue = function (issueId, issueUpdate, query) { - if (query === void 0) { query = {}; } return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId, - query: query + pathname: "/issue/".concat(issueId), }), { data: issueUpdate, - method: 'PUT' + method: "PUT", + params: query, })); }; /** Get issue edit metadata * [Jira Doc](https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/issue-getEditIssueMeta) - * @name issueEditMeta - * @function - * @param {string} issueId - the Id of the issue to retrieve edit metadata for + * @param issueId - the Id of the issue to retrieve edit metadata for */ JiraApi.prototype.issueEditMeta = function (issueId) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + "/editmeta" + pathname: "/issue/".concat(issueId, "/editmeta"), }), {})); }; /** List Components * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name listComponents - * @function - * @param {string} project - key for the project + * @param project - key for the project */ JiraApi.prototype.listComponents = function (project) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/project/" + project + "/components" + pathname: "/project/".concat(project, "/components"), }))); }; /** Add component to Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290028) - * @name addNewComponent - * @function - * @param {object} component - Properly Formatted Component + * @param component - Properly Formatted Component */ JiraApi.prototype.addNewComponent = function (component) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/component' + pathname: "/component", }), { - method: 'POST', - data: component + method: "POST", + data: component, })); }; /** Update Jira component - * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/component-updateComponent) - * @name updateComponent - * @function - * @param {string} componentId - the Id of the component to update - * @param {object} component - Properly Formatted Component + * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/component-updatecomponent: string) + * @param componentId - the Id of the component to update + * @param component - Properly Formatted Component */ JiraApi.prototype.updateComponent = function (componentId, component) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/component/" + componentId + pathname: "/component/".concat(componentId), }), { - method: 'PUT', - data: component + method: "PUT", + data: component, })); }; /** Delete component from Jira * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-api-2-component-id-delete) - * @name deleteComponent - * @function - * @param {string} id - The ID of the component. - * @param {string} moveIssuesTo - The ID of the component to replace the deleted component. + * @param id - The ID of the component. + * @param moveIssuesTo - The ID of the component to replace the deleted component. * If this value is null no replacement is made. */ JiraApi.prototype.deleteComponent = function (id, moveIssuesTo) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/component/" + id, - query: moveIssuesTo ? { moveIssuesTo: moveIssuesTo } : null + pathname: "/component/".concat(id), + query: moveIssuesTo ? { moveIssuesTo: moveIssuesTo } : null, }), { - method: 'DELETE' + method: "DELETE", })); }; /** Get count of issues assigned to the component. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-component-id-relatedIssueCounts-get) - * @name relatedIssueCounts - * @function - * @param {string} id - Component Id. + * @param id - Component Id. */ JiraApi.prototype.relatedIssueCounts = function (id) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/component/" + id + "/relatedIssueCounts" + pathname: "/component/".concat(id, "/relatedIssueCounts"), }))); }; /** Create custom Jira field * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field-createCustomField) - * @name createCustomField - * @function - * @param {object} field - Properly formatted Field object + * @param field - Properly formatted Field object */ JiraApi.prototype.createCustomField = function (field) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/field' + pathname: "/field", }), { - method: 'POST', - data: field + method: "POST", + data: field, })); }; /** List all fields custom and not that jira knows about. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name listFields - * @function */ JiraApi.prototype.listFields = function () { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/field' + pathname: "/field", }))); }; /** Add an option for a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-createOption) - * @name createFieldOption - * @function - * @param {string} fieldKey - the key of the select list field - * @param {object} option - properly formatted Option object + * @param fieldKey - the key of the select list field + * @param option - properly formatted Option object */ JiraApi.prototype.createFieldOption = function (fieldKey, option) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/field/" + fieldKey + "/option" + pathname: "/field/".concat(fieldKey, "/option"), }), { - method: 'POST', - data: option + method: "POST", + data: option, })); }; /** Returns all options defined for a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-getAllOptions) - * @name listFieldOptions - * @function - * @param {string} fieldKey - the key of the select list field + * @param fieldKey - the key of the select list field */ JiraApi.prototype.listFieldOptions = function (fieldKey) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/field/" + fieldKey + "/option" + pathname: "/field/".concat(fieldKey, "/option"), }))); }; /** Creates or updates an option for a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-putOption) - * @name upsertFieldOption - * @function - * @param {string} fieldKey - the key of the select list field - * @param {string} optionId - the id of the modified option - * @param {object} option - properly formatted Option object + * @param fieldKey - the key of the select list field + * @param optionId - the id of the modified option + * @param option - properly formatted Option object */ JiraApi.prototype.upsertFieldOption = function (fieldKey, optionId, option) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/field/" + fieldKey + "/option/" + optionId + pathname: "/field/".concat(fieldKey, "/option/").concat(optionId), }), { - method: 'PUT', - data: option + method: "PUT", + data: option, })); }; /** Returns an option for a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-getOption) - * @name getFieldOption - * @function - * @param {string} fieldKey - the key of the select list field - * @param {string} optionId - the id of the option + * @param fieldKey - the key of the select list field + * @param optionId - the id of the option */ JiraApi.prototype.getFieldOption = function (fieldKey, optionId) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/field/" + fieldKey + "/option/" + optionId + pathname: "/field/".concat(fieldKey, "/option/").concat(optionId), }))); }; /** Deletes an option from a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-delete) - * @name deleteFieldOption - * @function - * @param {string} fieldKey - the key of the select list field - * @param {string} optionId - the id of the deleted option + * @param fieldKey - the key of the select list field + * @param optionId - the id of the deleted option */ JiraApi.prototype.deleteFieldOption = function (fieldKey, optionId) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/field/" + fieldKey + "/option/" + optionId + pathname: "/field/".concat(fieldKey, "/option/").concat(optionId), }), { - method: 'DELETE' + method: "DELETE", })); }; /** - * @name getIssueProperty - * @function * Get Property of Issue by Issue and Property Id * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue/{issueIdOrKey}/properties-getProperty) - * @param {string} issueNumber - The issue number to search for including the project key - * @param {string} property - The property key to search for + * @param issueNumber - The issue number to search for including the project key + * @param property - The property key to search for */ JiraApi.prototype.getIssueProperty = function (issueNumber, property) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueNumber + "/properties/" + property + pathname: "/issue/".concat(issueNumber, "/properties/").concat(property), }))); }; /** - * @name getIssueChangelog - * @function * List all changes for an issue, sorted by date, starting from the latest * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue/{issueIdOrKey}/changelog) - * @param {string} issueNumber - The issue number to search for including the project key - * @param {integer} [startAt=0] - optional starting index number - * @param {integer} [maxResults=50] - optional ending index number + * @param issueNumber - The issue number to search for including the project key + * @param [startAt=0] - optional starting index number + * @param [maxResults=50] - optional ending index number */ JiraApi.prototype.getIssueChangelog = function (issueNumber, startAt, maxResults) { if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 50; } return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueNumber + "/changelog", + pathname: "/issue/".concat(issueNumber, "/changelog"), query: { startAt: startAt, - maxResults: maxResults - } + maxResults: maxResults, + }, }))); }; /** - * @name getIssueWatchers - * @function * List all watchers for an issue * [Jira Doc](http://docs.atlassian.com/jira/REST/cloud/#api/2/issue-getIssueWatchers) - * @param {string} issueNumber - The issue number to search for including the project key + * @param issueNumber - The issue number to search for including the project key */ JiraApi.prototype.getIssueWatchers = function (issueNumber) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueNumber + "/watchers" + pathname: "/issue/".concat(issueNumber, "/watchers"), }))); }; /** List all priorities jira knows about * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name listPriorities - * @function */ JiraApi.prototype.listPriorities = function () { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/priority' + pathname: "/priority", }))); }; /** List Transitions for a specific issue that are available to the current user * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name listTransitions - * @function - * @param {string} issueId - get transitions available for the issue + * @param issueId - get transitions available for the issue */ JiraApi.prototype.listTransitions = function (issueId) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + "/transitions", + pathname: "/issue/".concat(issueId, "/transitions"), query: { - expand: 'transitions.fields' - } + expand: "transitions.fields", + }, }))); }; /** Transition issue in Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name transitionsIssue - * @function - * @param {string} issueId - the Id of the issue to delete - * @param {object} issueTransition - transition object from the jira rest API + * @param issueId - the Id of the issue to delete + * @param issueTransition - transition object from the jira rest API */ JiraApi.prototype.transitionIssue = function (issueId, issueTransition) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + "/transitions" + pathname: "/issue/".concat(issueId, "/transitions"), }), { data: issueTransition, - method: 'POST' + method: "POST", })); }; /** List all Viewable Projects * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id289193) - * @name listProjects - * @function */ JiraApi.prototype.listProjects = function () { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/project' + pathname: "/project", }))); }; /** Add a comment to an issue * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#id108798) - * @name addComment - * @function - * @param {string} issueId - Issue to add a comment to - * @param {string} comment - string containing comment + * @param issueId - Issue to add a comment to + * @param comment - string containing comment */ JiraApi.prototype.addComment = function (issueId, comment) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + "/comment" - }), { - data: comment, - method: 'POST' - })); - }; - /** Add a comment to an issue, supports full comment object - * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#id108798) - * @name addCommentAdvanced - * @function - * @param {string} issueId - Issue to add a comment to - * @param {object} comment - The object containing your comment data - */ - JiraApi.prototype.addCommentAdvanced = function (issueId, comment) { - return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + "/comment" + pathname: "/issue/".concat(issueId, "/comment"), }), { data: comment, - method: 'POST' + method: "POST", })); }; /** Update comment for an issue * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue-updateComment) - * @name updateComment - * @function - * @param {string} issueId - Issue with the comment - * @param {string} commentId - Comment that is updated - * @param {string} comment - string containing new comment - * @param {object} [options={}] - extra options + * @param issueId - Issue with the comment + * @param commentId - Comment that is updated + * @param comment - string containing new comment + * @param [options={}] - extra options */ JiraApi.prototype.updateComment = function (issueId, commentId, comment, options) { if (options === void 0) { options = {}; } return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + "/comment/" + commentId + pathname: "/issue/".concat(issueId, "/comment/").concat(commentId), }), { - data: __assign({ data: comment }, options), - method: 'PUT' + data: { + data: comment, + }, + params: __assign({}, options), + method: "PUT", })); }; /** - * @name getComments - * @function * Get Comments by IssueId. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-comment-list-post) - * @param {string} issueId - this issue this comment is on + * @param issueId - this issue this comment is on */ JiraApi.prototype.getComments = function (issueId) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + "/comment" + pathname: "/issue/".concat(issueId, "/comment"), }))); }; /** - * @name getComment - * @function * Get Comment by Id. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-comment-list-post) - * @param {string} issueId - this issue this comment is on - * @param {number} commentId - the id of the comment + * @param issueId - this issue this comment is on + * @param commentId - the id of the comment */ JiraApi.prototype.getComment = function (issueId, commentId) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + "/comment/" + commentId + pathname: "/issue/".concat(issueId, "/comment/").concat(commentId), }))); }; /** - * @name deleteComment - * @function * Delete Comments by Id. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-comment-list-post) - * @param {string} issueId - this issue this comment is on - * @param {number} commentId - the id of the comment + * @param issueId - this issue this comment is on + * @param commentId - the id of the comment */ JiraApi.prototype.deleteComment = function (issueId, commentId) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + "/comment/" + commentId + pathname: "/issue/".concat(issueId, "/comment/").concat(commentId), }), { - method: 'DELETE' + method: "DELETE", })); }; /** Add a worklog to a project * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id291617) - * @name addWorklog - * @function - * @param {string} issueId - Issue to add a worklog to - * @param {object} worklog - worklog object from the rest API - * @param {object} newEstimate - the new value for the remaining estimate field - * @param {object} [options={}] - extra options + * @param issueId - Issue to add a worklog to + * @param worklog - worklog object from the rest API + * @param newEstimate - the new value for the remaining estimate field + * @param [options={}] - extra options */ JiraApi.prototype.addWorklog = function (issueId, worklog, newEstimate, options) { if (newEstimate === void 0) { newEstimate = null; } if (options === void 0) { options = {}; } - var query = __assign(__assign({ adjustEstimate: newEstimate ? 'new' : 'auto' }, (newEstimate ? { newEstimate: newEstimate } : {})), options); - var config = { - url: this.makeUri({ - pathname: "/issue/" + issueId + "/worklog", - query: query - }), + return this.doRequest(this.makeRequestHeader(this.makeUri({ + pathname: "/issue/".concat(issueId, "/worklog"), + }), { data: worklog, - method: 'POST', + params: __assign(__assign({ adjustEstimate: newEstimate ? "new" : "auto" }, (newEstimate ? { newEstimate: newEstimate } : {})), options), + method: "POST", headers: { - 'Content-Type': 'application/json' - } - }; - return this.doRequest(config); + "Content-Type": "application/json", + }, + })); }; /** Get ids of worklogs modified since * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/worklog-getWorklogsForIds) - * @name updatedWorklogs - * @function - * @param {number} since - a date time in unix timestamp format since when updated worklogs + * @param since - a date time in unix timestamp format since when updated worklogs * will be returned. - * @param {string} expand - ptional comma separated list of parameters to expand: properties + * @param expand - ptional comma separated list of parameters to expand: properties * (provides worklog properties). */ JiraApi.prototype.updatedWorklogs = function (since, expand) { var config = { - url: this.makeUri({ - pathname: '/worklog/updated', - query: { since: since, expand: expand } - }), - method: 'GET', + method: "GET", headers: { - 'Content-Type': 'application/json' - } + "Content-Type": "application/json", + }, }; - return this.doRequest(config); + return this.doRequest(this.makeRequestHeader(this.makeUri({ + pathname: "/worklog/updated", + query: { since: since, expand: expand === null || expand === void 0 ? void 0 : expand.join(",") }, + }), config)); }; /** Delete worklog from issue * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#d2e1673) - * @name deleteWorklog - * @function - * @param {string} issueId - the Id of the issue to delete - * @param {string} worklogId - the Id of the worklog in issue to delete + * @param issueId - the Id of the issue to delete + * @param worklogId - the Id of the worklog in issue to delete */ JiraApi.prototype.deleteWorklog = function (issueId, worklogId) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + "/worklog/" + worklogId + pathname: "/issue/".concat(issueId, "/worklog/").concat(worklogId), }), { - method: 'DELETE' + method: "DELETE", + })); + }; + /** Update worklog from issue + * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-worklogs/#api-rest-api-2-issue-issueidorkey-worklog-id-put) + * @param issueId - the Id of the issue to update + * @param worklogId - the Id of the worklog in issue to update + * @param body - value to set + */ + JiraApi.prototype.updateWorklog = function (issueId, worklogId, body, options) { + if (options === void 0) { options = {}; } + return this.doRequest(this.makeRequestHeader(this.makeUri({ + pathname: "/issue/".concat(issueId, "/worklog/").concat(worklogId), + }), { + method: "PUT", + data: body, + params: options, })); }; /** Deletes an issue link. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issueLink-linkId-delete) - * @name deleteIssueLink - * @function - * @param {string} linkId - the Id of the issue link to delete + * @param linkId - the Id of the issue link to delete */ JiraApi.prototype.deleteIssueLink = function (linkId) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issueLink/" + linkId + pathname: "/issueLink/".concat(linkId), }), { - method: 'DELETE' + method: "DELETE", })); }; /** Returns worklog details for a list of worklog IDs. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-worklog-list-post) - * @name getWorklogs - * @function * @param {array} worklogsIDs - a list of worklog IDs. - * @param {string} expand - expand to include additional information about worklogs + * @param expand - expand to include additional information about worklogs * */ JiraApi.prototype.getWorklogs = function (worklogsIDs, expand) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/worklog/list', + pathname: "/worklog/list", query: { - expand: expand - } + expand: expand === null || expand === void 0 ? void 0 : expand.join(","), + }, }), { - method: 'POST', + method: "POST", data: { - ids: worklogsIDs - } + ids: worklogsIDs, + }, })); }; /** Get worklogs list from a given issue * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-api-3-issue-issueIdOrKey-worklog-get) - * @name getIssueWorklogs - * @function - * @param {string} issueId - the Id of the issue to find worklogs for - * @param {integer} [startAt=0] - optional starting index number - * @param {integer} [maxResults=1000] - optional ending index number + * @param issueId - the Id of the issue to find worklogs for + * @param [startAt=0] - optional starting index number + * @param [maxResults=1000] - optional ending index number */ JiraApi.prototype.getIssueWorklogs = function (issueId, startAt, maxResults) { if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 1000; } return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + "/worklog", + pathname: "/issue/".concat(issueId, "/worklog"), query: { startAt: startAt, - maxResults: maxResults - } + maxResults: maxResults, + }, }))); }; /** List all Issue Types jira knows about * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id295946) - * @name listIssueTypes - * @function */ JiraApi.prototype.listIssueTypes = function () { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/issuetype' + pathname: "/issuetype", }))); }; /** Register a webhook * [Jira Doc](https://developer.atlassian.com/display/JIRADEV/JIRA+Webhooks+Overview) - * @name registerWebhook - * @function - * @param {object} webhook - properly formatted webhook + * @param webhook - properly formatted webhook */ JiraApi.prototype.registerWebhook = function (webhook) { return this.doRequest(this.makeRequestHeader(this.makeWebhookUri({ - pathname: '/webhook' + pathname: "/webhook", }), { - method: 'POST', - data: webhook + method: "POST", + data: webhook, })); }; /** List all registered webhooks * [Jira Doc](https://developer.atlassian.com/display/JIRADEV/JIRA+Webhooks+Overview) - * @name listWebhooks - * @function */ JiraApi.prototype.listWebhooks = function () { return this.doRequest(this.makeRequestHeader(this.makeWebhookUri({ - pathname: '/webhook' + pathname: "/webhook", }))); }; /** Get a webhook by its ID * [Jira Doc](https://developer.atlassian.com/display/JIRADEV/JIRA+Webhooks+Overview) - * @name getWebhook - * @function - * @param {string} webhookID - id of webhook to get + * @param webhookID - id of webhook to get */ JiraApi.prototype.getWebhook = function (webhookID) { return this.doRequest(this.makeRequestHeader(this.makeWebhookUri({ - pathname: "/webhook/" + webhookID + pathname: "/webhook/".concat(webhookID), }))); }; /** Delete a registered webhook * [Jira Doc](https://developer.atlassian.com/display/JIRADEV/JIRA+Webhooks+Overview) - * @name issueLink - * @function - * @param {string} webhookID - id of the webhook to delete + * @param webhookID - id of the webhook to delete */ JiraApi.prototype.deleteWebhook = function (webhookID) { return this.doRequest(this.makeRequestHeader(this.makeWebhookUri({ - pathname: "/webhook/" + webhookID + pathname: "/webhook/".concat(webhookID), }), { - method: 'DELETE' + method: "DELETE", })); }; /** Describe the currently authenticated user * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id2e865) - * @name getCurrentUser - * @function */ JiraApi.prototype.getCurrentUser = function () { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/myself' + pathname: "/myself", }))); }; - /** Retrieve the backlog of a certain Rapid View - * @name getBacklogForRapidView - * @function - * @param {string} rapidViewId - rapid view id + /** Retrieve the backlog of a certain Board + * @param boardId - rapid view id */ - JiraApi.prototype.getBacklogForRapidView = function (rapidViewId) { + JiraApi.prototype.getBacklogForBoard = function (boardId) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/xboard/plan/backlog/data', - query: { - rapidViewId: rapidViewId - } + pathname: "board/".concat(boardId, "/backlog"), }))); }; /** Add attachment to a Issue * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/issue/{issueIdOrKey}/attachments-addAttachment) - * @name addAttachmentOnIssue - * @function - * @param {string} issueId - issue id - * @param {object} readStream - readStream object from fs + * @param issueId - issue id + * @param readStream - readStream object from fs */ JiraApi.prototype.addAttachmentOnIssue = function (issueId, readStream) { + var formData = new FormData(); + formData.append("file", new Blob([readStream], { type: "application/octet-stream" })); return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + "/attachments" + pathname: "/issue/".concat(issueId, "/attachments"), }), { - method: 'POST', + method: "POST", headers: { - 'X-Atlassian-Token': 'nocheck' + "X-Atlassian-Token": "nocheck", }, - data: new FormData().append('file', readStream) + data: formData, })); }; /** Notify people related to issue * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue-notify) - * @name issueNotify - * @function - * @param {string} issueId - issue id - * @param {object} notificationBody - properly formatted body + * @param issueId - issue id + * @param notificationBody - properly formatted body */ JiraApi.prototype.issueNotify = function (issueId, notificationBody) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/issue/" + issueId + "/notify" + pathname: "/issue/".concat(issueId, "/notify"), }), { - method: 'POST', - data: notificationBody + method: "POST", + data: notificationBody, })); }; /** Get list of possible statuses * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/status-getStatuses) - * @name listStatus - * @function */ JiraApi.prototype.listStatus = function () { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/status' + pathname: "/status", }))); }; /** Get a Dev-Status summary by issue ID - * @name getDevStatusSummary - * @function - * @param {string} issueId - id of issue to get + * @param issueId - id of issue to get */ JiraApi.prototype.getDevStatusSummary = function (issueId) { return this.doRequest(this.makeRequestHeader(this.makeDevStatusUri({ - pathname: '/summary', + pathname: "/summary", query: { - issueId: issueId - } + issueId: issueId, + }, }))); }; /** Get a Dev-Status detail by issue ID - * @name getDevStatusDetail - * @function - * @param {string} issueId - id of issue to get - * @param {string} applicationType - type of application (stash, bitbucket) - * @param {string} dataType - info to return (repository, pullrequest) + * @param issueId - id of issue to get + * @param applicationType - type of application (stash, bitbucket) + * @param dataType - info to return (repository, pullrequest) */ JiraApi.prototype.getDevStatusDetail = function (issueId, applicationType, dataType) { return this.doRequest(this.makeRequestHeader(this.makeDevStatusUri({ - pathname: '/detail', + pathname: "/detail", query: { issueId: issueId, applicationType: applicationType, - dataType: dataType - } + dataType: dataType, + }, }))); }; /** Get issue * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/issue-getIssue) - * @name getIssue - * @function - * @param {string} issueIdOrKey - Id of issue - * @param {string} [fields] - The list of fields to return for each issue. - * @param {string} [expand] - A comma-separated list of the parameters to expand. + * @param issueIdOrKey - Id of issue + * @param [fields] - The list of fields to return for each issue. + * @param [expand] - A comma-separated list of the parameters to expand. */ JiraApi.prototype.getIssue = function (issueIdOrKey, fields, expand) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/issue/" + issueIdOrKey, + pathname: "/issue/".concat(issueIdOrKey), query: { - fields: fields, - expand: expand - } + fields: fields === null || fields === void 0 ? void 0 : fields.join(","), + expand: expand === null || expand === void 0 ? void 0 : expand.join(","), + }, }))); }; /** Move issues to backlog * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/backlog-moveIssuesToBacklog) - * @name moveToBacklog - * @function * @param {array} issues - id or key of issues to get */ JiraApi.prototype.moveToBacklog = function (issues) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: '/backlog/issue' + pathname: "/backlog/issue", }), { - method: 'POST', + method: "POST", data: { - issues: issues - } + issues: issues, + }, })); }; /** Get all boards * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getAllBoards) - * @name getAllBoards - * @function - * @param {number} [startAt=0] - The starting index of the returned boards. - * @param {number} [maxResults=50] - The maximum number of boards to return per page. - * @param {string} [type] - Filters results to boards of the specified type. - * @param {string} [name] - Filters results to boards that match the specified name. - * @param {string} [projectKeyOrId] - Filters results to boards that are relevant to a project. - */ - JiraApi.prototype.getAllBoards = function (startAt, maxResults, type, name, projectKeyOrId) { + * @param [type] - Filters results to boards of the specified type. + * @param [name] - Filters results to boards that match the specified name. + * @param [projectKeyOrId] - Filters results to boards that are relevant to a project. + * @param [startAt=0] - The starting index of the returned boards. + * @param [maxResults=50] - The maximum number of boards to return per page. + */ + JiraApi.prototype.getAllBoards = function (type, name, projectKeyOrId, startAt, maxResults) { if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 50; } return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: '/board', - query: __assign({ startAt: startAt, - maxResults: maxResults, - type: type, - name: name }, (projectKeyOrId && { projectKeyOrId: projectKeyOrId })) + pathname: "/board", + query: __assign({ startAt: startAt, maxResults: maxResults, type: type, name: name }, (projectKeyOrId && { projectKeyOrId: projectKeyOrId })), }))); }; /** Create Board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-createBoard) - * @name createBoard - * @function - * @param {object} boardBody - Board name, type and filter Id is required. - * @param {string} boardBody.type - Valid values: scrum, kanban - * @param {string} boardBody.name - Must be less than 255 characters. - * @param {string} boardBody.filterId - Id of a filter that the user has permissions to view. + * @param boardBody - Board name, type and filter Id is required. + * @param boardBody.type - Valid values: scrum, kanban + * @param boardBody.name - Must be less than 255 characters. + * @param boardBody.filterId - Id of a filter that the user has permissions to view. */ JiraApi.prototype.createBoard = function (boardBody) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: '/board' + pathname: "/board", }), { - method: 'POST', - data: boardBody + method: "POST", + data: boardBody, })); }; /** Get Board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getBoard) - * @name getBoard - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ JiraApi.prototype.getBoard = function (boardId) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + pathname: "/board/".concat(boardId), }))); }; /** Delete Board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-deleteBoard) - * @name deleteBoard - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ JiraApi.prototype.deleteBoard = function (boardId) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + pathname: "/board/".concat(boardId), }), { - method: 'DELETE' + method: "DELETE", })); }; /** Get issues for backlog * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getIssuesForBacklog) - * @name getIssuesForBacklog - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. */ - JiraApi.prototype.getIssuesForBacklog = function (boardId, startAt, maxResults, jql, validateQuery, fields) { + JiraApi.prototype.getIssuesForBacklog = function (boardId, jql, fields, startAt, maxResults, validateQuery) { if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 50; } if (validateQuery === void 0) { validateQuery = true; } return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/backlog", + pathname: "/board/".concat(boardId, "/backlog"), query: { startAt: startAt, maxResults: maxResults, jql: jql, validateQuery: validateQuery, - fields: fields - } + fields: fields.join(","), + }, }))); }; /** Get Configuration * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getConfiguration) - * @name getConfiguration - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ JiraApi.prototype.getConfiguration = function (boardId) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/configuration" + pathname: "/board/".concat(boardId, "/configuration"), }))); }; /** Get issues for board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getIssuesForBoard) - * @name getIssuesForBoard - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. */ - JiraApi.prototype.getIssuesForBoard = function (boardId, startAt, maxResults, jql, validateQuery, fields) { + JiraApi.prototype.getIssuesForBoard = function (boardId, jql, fields, startAt, maxResults, validateQuery) { + if (jql === void 0) { jql = undefined; } + if (fields === void 0) { fields = undefined; } if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 50; } if (validateQuery === void 0) { validateQuery = true; } return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/issue", + pathname: "/board/".concat(boardId, "/issue"), query: { startAt: startAt, maxResults: maxResults, jql: jql, validateQuery: validateQuery, - fields: fields - } + fields: fields, + }, }))); }; /** Get issue estimation for board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/issue-getIssueEstimationForBoard) - * @name getIssueEstimationForBoard - * @function - * @param {string} issueIdOrKey - Id of issue - * @param {number} boardId - The id of the board required to determine which field + * @param issueIdOrKey - Id of issue + * @param boardId - The id of the board required to determine which field * is used for estimation. */ JiraApi.prototype.getIssueEstimationForBoard = function (issueIdOrKey, boardId) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/issue/" + issueIdOrKey + "/estimation", + pathname: "/issue/".concat(issueIdOrKey, "/estimation"), query: { - boardId: boardId - } + boardId: boardId, + }, }))); }; /** Get Epics * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/epic-getEpics) - * @name getEpics - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned epics. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of epics to return per page. Default: 50. - * @param {string} [done] - Filters results to epics that are either done or not done. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned epics. Base index: 0. + * @param [maxResults=50] - The maximum number of epics to return per page. Default: 50. + * @param [done] - Filters results to epics that are either done or not done. * Valid values: true, false. */ JiraApi.prototype.getEpics = function (boardId, startAt, maxResults, done) { if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 50; } + if (done === void 0) { done = undefined; } return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/epic", + pathname: "/board/".concat(boardId, "/epic"), query: { startAt: startAt, maxResults: maxResults, - done: done - } + done: done, + }, }))); }; /** Get board issues for epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/epic-getIssuesForEpic) * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/epic-getIssuesWithoutEpic) - * @name getBoardIssuesForEpic - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} epicId - Id of epic to retrieve, specify 'none' to get issues without an epic. - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * @param boardId - Id of board to retrieve + * @param epicId - Id of epic to retrieve, specify 'none' to get issues without an epic. + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. */ JiraApi.prototype.getBoardIssuesForEpic = function (boardId, epicId, startAt, maxResults, jql, validateQuery, fields) { if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 50; } + if (jql === void 0) { jql = undefined; } if (validateQuery === void 0) { validateQuery = true; } + if (fields === void 0) { fields = undefined; } return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/epic/" + epicId + "/issue", + pathname: "/board/".concat(boardId, "/epic/").concat(epicId, "/issue"), query: { startAt: startAt, maxResults: maxResults, jql: jql, validateQuery: validateQuery, - fields: fields - } + fields: fields, + }, }))); }; /** Estimate issue for board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/issue-estimateIssueForBoard) - * @name estimateIssueForBoard - * @function - * @param {string} issueIdOrKey - Id of issue - * @param {number} boardId - The id of the board required to determine which field + * @param issueIdOrKey - Id of issue + * @param boardId - The id of the board required to determine which field * is used for estimation. - * @param {string} body - value to set + * @param data - value to set */ JiraApi.prototype.estimateIssueForBoard = function (issueIdOrKey, boardId, data) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/issue/" + issueIdOrKey + "/estimation", + pathname: "/issue/".concat(issueIdOrKey, "/estimation"), query: { - boardId: boardId - } + boardId: boardId, + }, }), { - method: 'PUT', - data: data + method: "PUT", + data: data, })); }; /** Rank Issues * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/issue-rankIssues) - * @name rankIssues - * @function - * @param {string} body - value to set + * @param data - value to set */ JiraApi.prototype.rankIssues = function (data) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: '/issue/rank' + pathname: "/issue/rank", }), { - method: 'PUT', - data: data + method: "PUT", + data: data, })); }; /** Get Projects * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/project-getProjects) - * @name getProjects - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned projects. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of projects to return per page. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned projects. Base index: 0. + * @param [maxResults=50] - The maximum number of projects to return per page. * Default: 50. */ JiraApi.prototype.getProjects = function (boardId, startAt, maxResults) { if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 50; } return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/project", + pathname: "/board/".concat(boardId, "/project"), query: { startAt: startAt, - maxResults: maxResults - } + maxResults: maxResults, + }, }))); }; /** Get Projects Full * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/project-getProjectsFull) - * @name getProjectsFull - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ JiraApi.prototype.getProjectsFull = function (boardId) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/project/full" + pathname: "/board/".concat(boardId, "/project/full"), }))); }; /** Get Board Properties Keys * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/properties-getPropertiesKeys) - * @name getBoardPropertiesKeys - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ JiraApi.prototype.getBoardPropertiesKeys = function (boardId) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/properties" + pathname: "/board/".concat(boardId, "/properties"), }))); }; /** Delete Board Property * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/properties-deleteProperty) - * @name deleteBoardProperty - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} propertyKey - Id of property to delete + * @param boardId - Id of board to retrieve + * @param propertyKey - Id of property to delete */ JiraApi.prototype.deleteBoardProperty = function (boardId, propertyKey) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/properties/" + propertyKey + pathname: "/board/".concat(boardId, "/properties/").concat(propertyKey), }), { - method: 'DELETE' + method: "DELETE", })); }; /** Set Board Property * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/properties-setProperty) - * @name setBoardProperty - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} propertyKey - Id of property to delete - * @param {string} body - value to set, for objects make sure to stringify first + * @param boardId - Id of board to retrieve + * @param propertyKey - Id of property to delete + * @param data - value to set, for objects make sure to stringify first */ JiraApi.prototype.setBoardProperty = function (boardId, propertyKey, data) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/properties/" + propertyKey + pathname: "/board/".concat(boardId, "/properties/").concat(propertyKey), }), { - method: 'PUT', - data: data + method: "PUT", + data: data, })); }; /** Get Board Property * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/properties-getProperty) - * @name getBoardProperty - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} propertyKey - Id of property to retrieve + * @param boardId - Id of board to retrieve + * @param propertyKey - Id of property to retrieve */ JiraApi.prototype.getBoardProperty = function (boardId, propertyKey) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/properties/" + propertyKey + pathname: "/board/".concat(boardId, "/properties/").concat(propertyKey), }))); }; /** Get All Sprints * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/sprint-getAllSprints) - * @name getAllSprints - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned sprints. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of sprints to return per page. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned sprints. Base index: 0. + * @param [maxResults=50] - The maximum number of sprints to return per page. * Default: 50. - * @param {string} [state] - Filters results to sprints in specified states. + * @param [state] - Filters results to sprints in specified states. * Valid values: future, active, closed. */ JiraApi.prototype.getAllSprints = function (boardId, startAt, maxResults, state) { if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 50; } + if (state === void 0) { state = undefined; } return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/sprint", + pathname: "/board/".concat(boardId, "/sprint"), query: { startAt: startAt, maxResults: maxResults, - state: state - } + state: state, + }, }))); }; /** Get Board issues for sprint - * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/sprint-getIssuesForSprint) - * @name getBoardIssuesForSprint - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} sprintId - Id of sprint to retrieve - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * [Jira Doc](https://developer.atlassian.com/cloud/jira/software/rest/api-group-board/#api-agile-1-0-board-boardid-sprint-sprintid-issue-get) + * @param boardId - Id of board to retrieve + * @param sprintId - Id of sprint to retrieve + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. + * @param [expand] - A comma-separated list of the parameters to expand. */ - JiraApi.prototype.getBoardIssuesForSprint = function (boardId, sprintId, startAt, maxResults, jql, validateQuery, fields) { + JiraApi.prototype.getBoardIssuesForSprint = function (boardId, sprintId, startAt, maxResults, jql, validateQuery, fields, expand) { if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 50; } + if (jql === void 0) { jql = undefined; } if (validateQuery === void 0) { validateQuery = true; } + if (fields === void 0) { fields = undefined; } + if (expand === void 0) { expand = undefined; } return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/sprint/" + sprintId + "/issue", + pathname: "/board/".concat(boardId, "/sprint/").concat(sprintId, "/issue"), query: { startAt: startAt, maxResults: maxResults, jql: jql, validateQuery: validateQuery, - fields: fields - } + fields: fields === null || fields === void 0 ? void 0 : fields.join(","), + expand: expand === null || expand === void 0 ? void 0 : expand.join(","), + }, }))); }; /** Get All Versions * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/version-getAllVersions) - * @name getAllVersions - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned versions. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of versions to return per page. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned versions. Base index: 0. + * @param [maxResults=50] - The maximum number of versions to return per page. * Default: 50. - * @param {string} [released] - Filters results to versions that are either released or + * @param [released] - Filters results to versions that are either released or * unreleased.Valid values: true, false. */ JiraApi.prototype.getAllVersions = function (boardId, startAt, maxResults, released) { if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 50; } + if (released === void 0) { released = undefined; } return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/board/" + boardId + "/version", + pathname: "/board/".concat(boardId, "/version"), query: { startAt: startAt, maxResults: maxResults, - released: released - } + released: released, + }, }))); }; /** Get Filter * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/filter) - * @name getFilter - * @function - * @param {string} filterId - Id of filter to retrieve + * @param filterId - Id of filter to retrieve */ JiraApi.prototype.getFilter = function (filterId) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/filter/" + filterId + pathname: "/filter/".concat(filterId), }))); }; /** Get Epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-getEpic) - * @name getEpic - * @function - * @param {string} epicIdOrKey - Id of epic to retrieve + * @param epicIdOrKey - Id of epic to retrieve */ JiraApi.prototype.getEpic = function (epicIdOrKey) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/epic/" + epicIdOrKey + pathname: "/epic/".concat(epicIdOrKey), }))); }; /** Partially update epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-partiallyUpdateEpic) - * @name partiallyUpdateEpic - * @function - * @param {string} epicIdOrKey - Id of epic to retrieve - * @param {string} body - value to set, for objects make sure to stringify first + * @param epicIdOrKey - Id of epic to retrieve + * @param data - data to set */ JiraApi.prototype.partiallyUpdateEpic = function (epicIdOrKey, data) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/epic/" + epicIdOrKey + pathname: "/epic/".concat(epicIdOrKey), }), { - method: 'POST', - data: data + method: "POST", + data: data, })); }; /** Get issues for epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-getIssuesForEpic) * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-getIssuesWithoutEpic) - * @name getIssuesForEpic - * @function - * @param {string} epicId - Id of epic to retrieve, specify 'none' to get issues without an epic. - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * @param epicId - Id of epic to retrieve, specify 'none' to get issues without an epic. + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. */ JiraApi.prototype.getIssuesForEpic = function (epicId, startAt, maxResults, jql, validateQuery, fields) { if (startAt === void 0) { startAt = 0; } if (maxResults === void 0) { maxResults = 50; } + if (jql === void 0) { jql = undefined; } if (validateQuery === void 0) { validateQuery = true; } + if (fields === void 0) { fields = undefined; } return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/epic/" + epicId + "/issue", + pathname: "/epic/".concat(epicId, "/issue"), query: { startAt: startAt, maxResults: maxResults, jql: jql, validateQuery: validateQuery, - fields: fields - } + fields: fields === null || fields === void 0 ? void 0 : fields.join(","), + }, }))); }; /** Move Issues to Epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-moveIssuesToEpic) * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-removeIssuesFromEpic) - * @name moveIssuesToEpic - * @function - * @param {string} epicIdOrKey - Id of epic to move issue to, or 'none' to remove from epic + * @param epicIdOrKey - Id of epic to move issue to, or 'none' to remove from epic * @param {array} issues - array of issues to move */ JiraApi.prototype.moveIssuesToEpic = function (epicIdOrKey, issues) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/epic/" + epicIdOrKey + "/issue" + pathname: "/epic/".concat(epicIdOrKey, "/issue"), }), { - method: 'POST', + method: "POST", data: { - issues: issues - } + issues: issues, + }, })); }; /** Rank Epics * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-rankEpics) - * @name rankEpics - * @function - * @param {string} epicIdOrKey - Id of epic - * @param {string} body - value to set + * @param epicIdOrKey - Id of epic + * @param data - value to set */ JiraApi.prototype.rankEpics = function (epicIdOrKey, data) { return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: "/epic/" + epicIdOrKey + "/rank" + pathname: "/epic/".concat(epicIdOrKey, "/rank"), }), { - method: 'PUT', - data: data + method: "PUT", + data: data, })); }; /** - * @name getServerInfo - * @function * Get server info * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-api-2-serverInfo-get) */ JiraApi.prototype.getServerInfo = function () { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/serverInfo' + pathname: "/serverInfo", }))); }; /** - * @name getIssueCreateMetadata - * @param {object} optional - object containing any of the following properties + + * @param optional - object containing unknown of the following properties * @param {array} [optional.projectIds]: optional Array of project ids to return metadata for * @param {array} [optional.projectKeys]: optional Array of project keys to return metadata for * @param {array} [optional.issuetypeIds]: optional Array of issuetype ids to return metadata for * @param {array} [optional.issuetypeNames]: optional Array of issuetype names to return metadata * for - * @param {string} [optional.expand]: optional Include additional information about issue + * @param [optional.expand]: optional Include additional information about issue * metadata. Valid value is 'projects.issuetypes.fields' * Get metadata for creating an issue. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-createmeta-get) @@ -2097,57 +1723,64 @@ var JiraApi = /** @class */ (function () { JiraApi.prototype.getIssueCreateMetadata = function (optional) { if (optional === void 0) { optional = {}; } return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/issue/createmeta', - query: optional + pathname: "/issue/createmeta", + query: optional, }))); }; JiraApi.prototype.getIssueCreateMetaProjectIssueTypes = function (projectIdOrKey, startAt, maxResults) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/issue/createmeta/' + projectIdOrKey + '/issuetypes', + pathname: "/issue/createmeta/".concat(projectIdOrKey, "/issuetypes"), query: { startAt: startAt, - maxResults: maxResults - } + maxResults: maxResults, + }, }))); }; JiraApi.prototype.getIssueCreateMetaFields = function (projectIdOrKey, issueTypeId, startAt, maxResults) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/issue/createmeta/' + projectIdOrKey + '/issuetypes/' + issueTypeId, + pathname: "/issue/createmeta/".concat(projectIdOrKey, "/issuetypes/").concat(issueTypeId), query: { startAt: startAt, - maxResults: maxResults - } + maxResults: maxResults, + }, }))); }; JiraApi.prototype.getWorkflows = function (query) { if (query === void 0) { query = {}; } return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/workflow', - query: query + pathname: "/workflow", + query: query, }), { - method: 'GET' + method: "GET", })); }; JiraApi.prototype.getWorkflowScheme = function (projectKeyOrId, query) { if (query === void 0) { query = {}; } return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/project/" + projectKeyOrId + "/workflowscheme", - query: query + pathname: "/project/".concat(projectKeyOrId, "/workflowscheme"), + query: query, }), { - method: 'GET' + method: "GET", })); }; /** Generic Get Request * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/2/) - * @name genericGet - * @function - * @param {string} endpoint - Rest API endpoint + * @param endpoint - Rest API endpoint */ JiraApi.prototype.genericGet = function (endpoint) { return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: "/" + endpoint + pathname: "/".concat(endpoint), + }))); + }; + /** Generic Get Request to the Agile API + * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/2/) + * @param endpoint - Rest API endpoint + */ + JiraApi.prototype.genericAgileGet = function (endpoint) { + return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ + pathname: "/".concat(endpoint), }))); }; return JiraApi; }()); -exports["default"] = JiraApi; +exports.default = JiraApi; diff --git a/lib/jira.test.d.ts b/lib/jira.test.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/lib/jira.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/jira.test.js b/lib/jira.test.js new file mode 100644 index 0000000..20de444 --- /dev/null +++ b/lib/jira.test.js @@ -0,0 +1,322 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var vitest_1 = require("vitest"); +var jira_1 = __importDefault(require("./jira")); +var axios_1 = __importDefault(require("axios")); +var axios_mock_adapter_1 = __importDefault(require("axios-mock-adapter")); +function createTestInstance(actualOptions) { + var _a, _b, _c, _d; + if (actualOptions === void 0) { actualOptions = {}; } + var finalOptions = { + protocol: actualOptions.protocol || "http", + host: actualOptions.host || "jira.somehost.com", + port: "port" in actualOptions ? actualOptions.port : 8080, + username: (_a = actualOptions.username) !== null && _a !== void 0 ? _a : "someusername", + password: (_b = actualOptions.password) !== null && _b !== void 0 ? _b : "somepassword", + apiVersion: actualOptions.apiVersion || 2, + timeout: actualOptions.timeout || undefined, + base: actualOptions.base || "", + intermediatePath: actualOptions.intermediatePath, + bearer: actualOptions.bearer || null, + }; + if ("axios" in actualOptions) { + finalOptions.axios = actualOptions.axios; + } + else { + finalOptions.strictSSL = (_c = finalOptions.strictSSL) !== null && _c !== void 0 ? _c : true; + finalOptions.ca = (_d = finalOptions.ca) !== null && _d !== void 0 ? _d : undefined; + } + var jira = new jira_1.default(finalOptions); + var mockAdapter = new axios_mock_adapter_1.default(jira.axios); + return { + jira: jira, + mockAdapter: mockAdapter, + }; +} +(0, vitest_1.describe)("Jira API Tests", function () { + (0, vitest_1.describe)("Constructor Tests", function () { + (0, vitest_1.it)("Constructor functions properly", function () { + var jira = createTestInstance().jira; + (0, vitest_1.expect)(jira.protocol).to.eql("http"); + (0, vitest_1.expect)(jira.host).to.eql("jira.somehost.com"); + (0, vitest_1.expect)(jira.port).to.eql(8080); + (0, vitest_1.expect)(jira.baseOptions.auth.username).to.eql("someusername"); + (0, vitest_1.expect)(jira.baseOptions.auth.password).to.eql("somepassword"); + (0, vitest_1.expect)(jira.apiVersion).to.eql(2); + }); + (0, vitest_1.it)("Constructor with no auth credentials", function () { + var jira = createTestInstance({ + username: "", + password: "", + }).jira; + (0, vitest_1.expect)(jira.baseOptions.auth).to.be.undefined; + }); + (0, vitest_1.it)("Constructor with bearer credentials", function () { + var jira = createTestInstance({ + bearer: "testBearer", + }).jira; + (0, vitest_1.expect)(jira.baseOptions.headers.Authorization).to.eql("Bearer testBearer"); + }); + (0, vitest_1.it)("Constructor with timeout", function () { + var jira = createTestInstance({ + timeout: 2, + }).jira; + (0, vitest_1.expect)(jira.baseOptions.timeout).to.equal(2); + }); + (0, vitest_1.it)("Constructor with with ssl checking disabled", function () { + var jira = createTestInstance({ + strictSSL: false, + }).jira; + (0, vitest_1.expect)(jira.httpsAgent).toBeDefined(); + }); + (0, vitest_1.it)("should allow the user to pass in a certificate authority", function () { + var jira = createTestInstance({ + ca: "fakestring", + }).jira; + (0, vitest_1.expect)(jira.httpsAgent).toBeDefined(); + }); + (0, vitest_1.it)("should allow the user to pass in an axios instance", function () { + var jira = createTestInstance({ + axios: axios_1.default.create(), + }).jira; + (0, vitest_1.expect)(jira.httpsAgent).toBeUndefined(); + }); + }); + (0, vitest_1.describe)("makeRequestHeader Tests", function () { + (0, vitest_1.it)("makeRequestHeader functions properly in the average case", function () { + var jira = createTestInstance().jira; + (0, vitest_1.expect)(jira.makeRequestHeader(jira.makeUri({ + pathname: "/somePathName", + }))).to.eql({ + method: "GET", + url: "http://jira.somehost.com:8080/rest/api/2/somePathName", + }); + }); + (0, vitest_1.it)("makeRequestHeader functions properly with a different method", function () { + var jira = createTestInstance().jira; + (0, vitest_1.expect)(jira.makeRequestHeader(jira.makeUri({ + pathname: "/somePathName", + }), { method: "POST" })).toEqual({ + method: "POST", + url: "http://jira.somehost.com:8080/rest/api/2/somePathName", + }); + }); + }); + (0, vitest_1.describe)("makeUri", function () { + (0, vitest_1.it)("builds url with pathname and default host, protocol, port, and base api", function () { + var jira = createTestInstance().jira; + (0, vitest_1.expect)(jira.makeUri({ pathname: "/somePathName" })).to.eql("http://jira.somehost.com:8080/rest/api/2/somePathName"); + }); + (0, vitest_1.it)("builds url with intermediatePath", function () { + var jira = createTestInstance().jira; + (0, vitest_1.expect)(jira.makeUri({ pathname: "/somePathName", intermediatePath: "intermediatePath" })).to.eql("http://jira.somehost.com:8080/intermediatePath/somePathName"); + }); + (0, vitest_1.it)("builds url with globally specified intermediatePath", function () { + var jira = createTestInstance({ + intermediatePath: "intermediatePath", + }).jira; + (0, vitest_1.expect)(jira.makeUri({ pathname: "/somePathName" })).to.eql("http://jira.somehost.com:8080/intermediatePath/somePathName"); + }); + (0, vitest_1.it)("builds url with query string parameters", function () { + var jira = createTestInstance().jira; + var url = jira.makeUri({ + pathname: "/path", + query: { + fields: "field1,field2", + expand: "three", + }, + }); + (0, vitest_1.expect)(url).toBe("http://jira.somehost.com:8080/rest/api/2/path?fields=field1%2Cfield2&expand=three"); + }); + (0, vitest_1.it)("makeWebhookUri functions properly in the average case", function () { + var jira = createTestInstance().jira; + (0, vitest_1.expect)(jira.makeWebhookUri({ + pathname: "/somePathName", + })).to.eql("http://jira.somehost.com:8080/rest/webhooks/1.0/somePathName"); + }); + (0, vitest_1.it)("makeUri functions properly no port http", function () { + var jira = createTestInstance({ + port: undefined, + }).jira; + (0, vitest_1.expect)(jira.makeUri({ + pathname: "/somePathName", + })).to.eql("http://jira.somehost.com/rest/api/2/somePathName"); + }); + (0, vitest_1.it)("makeUri functions properly no port https", function () { + var jira = createTestInstance({ + protocol: "https", + port: undefined, + }).jira; + (0, vitest_1.expect)(jira.makeUri({ + pathname: "/somePathName", + })).to.eql("https://jira.somehost.com/rest/api/2/somePathName"); + }); + }); + (0, vitest_1.describe)("doRequest Tests", function () { + (0, vitest_1.it)("doRequest functions properly in the default case", function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, jira, mockAdapter, response; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _a = createTestInstance(), jira = _a.jira, mockAdapter = _a.mockAdapter; + mockAdapter.onGet("http://jira.somehost.com:8080/rest/api/2/somePathName").reply(200, "Successful response!"); + mockAdapter.onGet().reply(200, "Nope"); + return [4 /*yield*/, jira.doRequest({ + url: jira.makeUri({ pathname: "/somePathName" }), + })]; + case 1: + response = _b.sent(); + (0, vitest_1.expect)(response).toEqual("Successful response!"); + return [2 /*return*/]; + } + }); + }); }); + (0, vitest_1.it)("doRequest authenticates properly when specified", function () { return __awaiter(void 0, void 0, void 0, function () { + var username, password, _a, jira, mockAdapter, result; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + username = "someusername"; + password = "somepassword"; + _a = createTestInstance({ + username: username, + password: password, + }), jira = _a.jira, mockAdapter = _a.mockAdapter; + mockAdapter + .onGet("http://jira.somehost.com:8080/rest/api/2/somePathName", { + headers: { + Authorization: "Basic c29tZXVzZXJuYW1lOnNvbWVwYXNzd29yZA==", + }, + }) + .reply(200, "Successful response!"); + return [4 /*yield*/, jira.doRequest({ + url: jira.makeUri({ pathname: "/somePathName" }), + })]; + case 1: + result = _b.sent(); + (0, vitest_1.expect)(result).toBe("Successful response!"); + return [2 /*return*/]; + } + }); + }); }); + (0, vitest_1.it)("doRequest times out with specified option", function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, jira, mockAdapter, result, e_1; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _a = createTestInstance({ + timeout: 1, + }), jira = _a.jira, mockAdapter = _a.mockAdapter; + mockAdapter.onGet().timeout(); + _b.label = 1; + case 1: + _b.trys.push([1, 3, , 4]); + return [4 /*yield*/, jira.doRequest({})]; + case 2: + result = _b.sent(); + return [3 /*break*/, 4]; + case 3: + e_1 = _b.sent(); + (0, vitest_1.expect)(e_1.message).toBe("timeout of 1ms exceeded"); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); }); + (0, vitest_1.it)("doRequest throws an error properly", function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, jira, mockAdapter; + return __generator(this, function (_b) { + _a = createTestInstance(), jira = _a.jira, mockAdapter = _a.mockAdapter; + (0, vitest_1.expect)(jira.doRequest({})).rejects.toThrowError("Request failed with status code 404"); + return [2 /*return*/]; + }); + }); }); + (0, vitest_1.it)("doRequest throws a list of errors properly", function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, jira, mockAdapter, error_1; + var _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + _a = createTestInstance(), jira = _a.jira, mockAdapter = _a.mockAdapter; + mockAdapter.onGet().reply(400, { errorMessages: ["some error to throw"] }); + _c.label = 1; + case 1: + _c.trys.push([1, 3, , 4]); + return [4 /*yield*/, jira.doRequest({})]; + case 2: + _c.sent(); + return [3 /*break*/, 4]; + case 3: + error_1 = _c.sent(); + (0, vitest_1.expect)(axios_1.default.isAxiosError(error_1)).toBe(true); + (0, vitest_1.expect)((_b = error_1.response) === null || _b === void 0 ? void 0 : _b.status).toBe(400); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); }); + (0, vitest_1.it)("doRequest does not throw an error on empty response", function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, jira, mockAdapter, response; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _a = createTestInstance(), jira = _a.jira, mockAdapter = _a.mockAdapter; + mockAdapter.onGet().reply(200, undefined); + return [4 /*yield*/, jira.doRequest({})]; + case 1: + response = _b.sent(); + (0, vitest_1.expect)(response).to.be.undefined; + return [2 /*return*/]; + } + }); + }); }); + (0, vitest_1.it)("doRequest throws an error when request failed", function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, jira, mockAdapter; + return __generator(this, function (_b) { + _a = createTestInstance(), jira = _a.jira, mockAdapter = _a.mockAdapter; + mockAdapter.onGet().reply(404, "This is an error message"); + (0, vitest_1.expect)(jira.doRequest({})).rejects.toThrowError("Request failed with status code 404"); + return [2 /*return*/]; + }); + }); }); + }); +}); diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index a27f256..0000000 --- a/package-lock.json +++ /dev/null @@ -1,13714 +0,0 @@ -{ - "name": "jira-client", - "version": "8.2.2", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "jira-client", - "version": "8.2.2", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.6.0", - "postman-request": "^2.88.1-postman.30" - }, - "devDependencies": { - "@babel/cli": "^7.6.0", - "@babel/core": "^7.6.0", - "@babel/eslint-parser": "7.16.3", - "@babel/plugin-transform-runtime": "^7.6.0", - "@babel/preset-env": "^7.6.0", - "@babel/register": "^7.6.0", - "@types/request-promise": "^4.1.46", - "babel-eslint": "^10.0.3", - "babel-plugin-add-module-exports": "^1.0.0", - "chai": "^4.2.0", - "chai-as-promised": "^7.1.1", - "esdoc": "^1.1.0", - "esdoc-ecmascript-proposal-plugin": "^1.0.0", - "esdoc-standard-plugin": "^1.0.0", - "eslint": "^8.2.0", - "eslint-config-airbnb": "^19.0.0", - "eslint-plugin-import": "^2.18.2", - "eslint-plugin-mocha": "^9.0.0", - "mocha": "^9.1.3", - "release-script": "^1.0.1", - "rewire": "^6.0.0", - "typescript": "^5" - } - }, - "node_modules/@babel/cli": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", - "integrity": "sha512-WLrM42vKX/4atIoQB+eb0ovUof53UUvecb4qGjU2PDDWRiZr50ZpiV8NpcLo7iSxeGYrRG0Mqembsa+UrTAV6Q==", - "dev": true, - "dependencies": { - "commander": "^4.0.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.0.0", - "make-dir": "^2.1.0", - "slash": "^2.0.0", - "source-map": "^0.5.0" - }, - "bin": { - "babel": "bin/babel.js", - "babel-external-helpers": "bin/babel-external-helpers.js" - }, - "engines": { - "node": ">=6.9.0" - }, - "optionalDependencies": { - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", - "chokidar": "^3.4.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", - "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helpers": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/eslint-parser": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.3.tgz", - "integrity": "sha512-iB4ElZT0jAt7PKVaeVulOECdGe6UnmA/O0P9jlF5g5GBOwDVbna8AXhHRu4s27xQf6OkveyA8iTDv1jHdDejgQ==", - "dev": true, - "dependencies": { - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.11.0", - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", - "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", - "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", - "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", - "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", - "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "regexpu-core": "^4.7.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", - "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", - "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", - "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", - "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", - "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-wrap-function": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", - "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", - "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", - "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", - "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.3", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", - "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", - "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", - "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", - "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.16.4", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", - "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", - "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", - "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", - "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", - "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", - "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", - "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", - "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", - "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", - "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", - "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", - "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", - "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", - "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", - "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", - "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", - "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", - "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", - "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", - "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", - "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", - "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", - "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", - "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", - "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", - "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", - "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", - "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", - "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", - "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.16.0", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", - "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.15.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", - "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", - "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", - "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", - "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", - "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", - "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", - "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", - "dev": true, - "dependencies": { - "regenerator-transform": "^0.14.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", - "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.4.tgz", - "integrity": "sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.4.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", - "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", - "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", - "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", - "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", - "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", - "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", - "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", - "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-async-generator-functions": "^7.16.4", - "@babel/plugin-proposal-class-properties": "^7.16.0", - "@babel/plugin-proposal-class-static-block": "^7.16.0", - "@babel/plugin-proposal-dynamic-import": "^7.16.0", - "@babel/plugin-proposal-export-namespace-from": "^7.16.0", - "@babel/plugin-proposal-json-strings": "^7.16.0", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", - "@babel/plugin-proposal-numeric-separator": "^7.16.0", - "@babel/plugin-proposal-object-rest-spread": "^7.16.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-private-methods": "^7.16.0", - "@babel/plugin-proposal-private-property-in-object": "^7.16.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.0", - "@babel/plugin-transform-async-to-generator": "^7.16.0", - "@babel/plugin-transform-block-scoped-functions": "^7.16.0", - "@babel/plugin-transform-block-scoping": "^7.16.0", - "@babel/plugin-transform-classes": "^7.16.0", - "@babel/plugin-transform-computed-properties": "^7.16.0", - "@babel/plugin-transform-destructuring": "^7.16.0", - "@babel/plugin-transform-dotall-regex": "^7.16.0", - "@babel/plugin-transform-duplicate-keys": "^7.16.0", - "@babel/plugin-transform-exponentiation-operator": "^7.16.0", - "@babel/plugin-transform-for-of": "^7.16.0", - "@babel/plugin-transform-function-name": "^7.16.0", - "@babel/plugin-transform-literals": "^7.16.0", - "@babel/plugin-transform-member-expression-literals": "^7.16.0", - "@babel/plugin-transform-modules-amd": "^7.16.0", - "@babel/plugin-transform-modules-commonjs": "^7.16.0", - "@babel/plugin-transform-modules-systemjs": "^7.16.0", - "@babel/plugin-transform-modules-umd": "^7.16.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", - "@babel/plugin-transform-new-target": "^7.16.0", - "@babel/plugin-transform-object-super": "^7.16.0", - "@babel/plugin-transform-parameters": "^7.16.3", - "@babel/plugin-transform-property-literals": "^7.16.0", - "@babel/plugin-transform-regenerator": "^7.16.0", - "@babel/plugin-transform-reserved-words": "^7.16.0", - "@babel/plugin-transform-shorthand-properties": "^7.16.0", - "@babel/plugin-transform-spread": "^7.16.0", - "@babel/plugin-transform-sticky-regex": "^7.16.0", - "@babel/plugin-transform-template-literals": "^7.16.0", - "@babel/plugin-transform-typeof-symbol": "^7.16.0", - "@babel/plugin-transform-unicode-escapes": "^7.16.0", - "@babel/plugin-transform-unicode-regex": "^7.16.0", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.0", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.4.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.19.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/register": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.0.tgz", - "integrity": "sha512-lzl4yfs0zVXnooeLE0AAfYaT7F3SPA8yB2Bj4W1BiZwLbMS3MZH35ZvCWSRHvneUugwuM+Wsnrj7h0F7UmU3NQ==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "find-cache-dir": "^2.0.0", - "make-dir": "^2.1.0", - "pirates": "^4.0.0", - "source-map-support": "^0.5.16" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.3.tgz", - "integrity": "sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ==", - "dev": true, - "peer": true, - "dependencies": { - "core-js-pure": "^3.19.0", - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", - "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.3", - "@babel/types": "^7.16.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", - "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.0.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", - "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", - "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", - "dev": true, - "optional": true - }, - "node_modules/@postman/form-data": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", - "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@postman/tunnel-agent": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.3.tgz", - "integrity": "sha512-k57fzmAZ2PJGxfOA4SGR05ejorHbVAa/84Hxh/2nAztjNXc4ZjOm9NUIk6/Z6LCrBvJZqjRZbN8e/nROVUPVdg==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@types/bluebird": { - "version": "3.5.42", - "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.42.tgz", - "integrity": "sha512-Jhy+MWRlro6UjVi578V/4ZGNfeCOcNCp0YaFNIUGFKlImowqwb1O/22wDVk3FDGMLqxdpOV3qQHD5fPEH4hK6A==", - "dev": true - }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true - }, - "node_modules/@types/node": { - "version": "16.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz", - "integrity": "sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A==", - "dev": true - }, - "node_modules/@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "dev": true, - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/request-promise": { - "version": "4.1.51", - "resolved": "https://registry.npmjs.org/@types/request-promise/-/request-promise-4.1.51.tgz", - "integrity": "sha512-qVcP9Fuzh9oaAh8oPxiSoWMFGnWKkJDknnij66vi09Yiy62bsSDqtd+fG5kIM9wLLgZsRP3Y6acqj9O/v2ZtRw==", - "dev": true, - "dependencies": { - "@types/bluebird": "*", - "@types/request": "*" - } - }, - "node_modules/@types/request/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "node_modules/abab": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", - "dev": true, - "optional": true - }, - "node_modules/acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", - "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", - "dev": true, - "optional": true, - "dependencies": { - "acorn": "^2.1.0" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", - "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", - "dev": true, - "optional": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", - "dev": true, - "peer": true - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "node_modules/axe-core": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz", - "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true, - "peer": true - }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "eslint": ">= 4.12.1" - } - }, - "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "dependencies": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "node_modules/babel-generator/node_modules/jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0" - } - }, - "node_modules/babel-plugin-add-module-exports": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", - "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==", - "dev": true - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", - "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.0", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", - "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", - "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-traverse/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bluebird": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", - "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brotli": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.2.tgz", - "integrity": "sha1-UlqcrU/LqWR119OI9q7LE+7VL0Y=", - "dependencies": { - "base64-js": "^1.1.2" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001282", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", - "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "node_modules/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", - "dev": true, - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 5" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/cheerio": { - "version": "1.0.0-rc.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", - "dev": true, - "dependencies": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-logger": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/color-logger/-/color-logger-0.0.6.tgz", - "integrity": "sha1-5WJF7ymCJlcRDHy3WpzXhstp7Rs=", - "dev": true - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", - "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true - }, - "node_modules/core-js-compat": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", - "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", - "dev": true, - "dependencies": { - "browserslist": "^4.17.6", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/core-js-pure": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.1.tgz", - "integrity": "sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ==", - "dev": true, - "hasInstallScript": true, - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "dependencies": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "node_modules/css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "optional": true - }, - "node_modules/cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "dev": true, - "optional": true, - "dependencies": { - "cssom": "0.3.x" - } - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", - "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==", - "dev": true, - "peer": true - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "dependencies": { - "repeating": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dev": true, - "dependencies": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.3.904", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", - "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "peer": true - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "node_modules/es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "optional": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "optional": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "optional": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "optional": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "optional": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/esdoc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/esdoc/-/esdoc-1.1.0.tgz", - "integrity": "sha512-vsUcp52XJkOWg9m1vDYplGZN2iDzvmjDL5M/Mp8qkoDG3p2s0yIQCIjKR5wfPBaM3eV14a6zhQNYiNTCVzPnxA==", - "dev": true, - "dependencies": { - "babel-generator": "6.26.1", - "babel-traverse": "6.26.0", - "babylon": "6.18.0", - "cheerio": "1.0.0-rc.2", - "color-logger": "0.0.6", - "escape-html": "1.0.3", - "fs-extra": "5.0.0", - "ice-cap": "0.0.4", - "marked": "0.3.19", - "minimist": "1.2.0", - "taffydb": "2.7.3" - }, - "bin": { - "esdoc": "out/src/ESDocCLI.js" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc-accessor-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-accessor-plugin/-/esdoc-accessor-plugin-1.0.0.tgz", - "integrity": "sha1-eRukhy5sQDUVznSbE0jW8Ck62es=", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc-brand-plugin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esdoc-brand-plugin/-/esdoc-brand-plugin-1.0.1.tgz", - "integrity": "sha512-Yv9j3M7qk5PSLmSeD6MbPsfIsEf8K43EdH8qZpE/GZwnJCRVmDPrZJ1cLDj/fPu6P35YqgcEaJK4E2NL/CKA7g==", - "dev": true, - "dependencies": { - "cheerio": "0.22.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc-brand-plugin/node_modules/cheerio": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", - "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", - "dev": true, - "dependencies": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/esdoc-coverage-plugin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/esdoc-coverage-plugin/-/esdoc-coverage-plugin-1.1.0.tgz", - "integrity": "sha1-OGmGnNf4eJH5cmJXh2laKZrs5Fw=", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc-ecmascript-proposal-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-ecmascript-proposal-plugin/-/esdoc-ecmascript-proposal-plugin-1.0.0.tgz", - "integrity": "sha1-OQ3FZWuoooMOOdujVw15E43y/9k=", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc-external-ecmascript-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-external-ecmascript-plugin/-/esdoc-external-ecmascript-plugin-1.0.0.tgz", - "integrity": "sha1-ePVl1KDFGFrGMVJhTc4f4ahmiNs=", - "dev": true, - "dependencies": { - "fs-extra": "1.0.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc-external-ecmascript-plugin/node_modules/fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" - } - }, - "node_modules/esdoc-external-ecmascript-plugin/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/esdoc-integrate-manual-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-integrate-manual-plugin/-/esdoc-integrate-manual-plugin-1.0.0.tgz", - "integrity": "sha1-GFSmqhwIEDXXyMUeO91PtlqkcRw=", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc-integrate-test-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-integrate-test-plugin/-/esdoc-integrate-test-plugin-1.0.0.tgz", - "integrity": "sha1-4tDQAJD38MNeXS8sAzMnp55T5Ak=", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc-lint-plugin": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/esdoc-lint-plugin/-/esdoc-lint-plugin-1.0.2.tgz", - "integrity": "sha512-24AYqD2WbZI9We02I7/6dzAa7yUliRTFUaJCZAcYJMQicJT5gUrNFVaI8XmWEN/mhF3szIn1uZBNWeLul4CmNw==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc-publish-html-plugin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/esdoc-publish-html-plugin/-/esdoc-publish-html-plugin-1.1.2.tgz", - "integrity": "sha512-hG1fZmTcEp3P/Hv/qKiMdG1qSp8MjnVZMMkxL5P5ry7I2sX0HQ4P9lt2lms+90Lt0r340HHhSuVx107UL7dphg==", - "dev": true, - "dependencies": { - "babel-generator": "6.11.4", - "cheerio": "0.22.0", - "escape-html": "1.0.3", - "fs-extra": "1.0.0", - "ice-cap": "0.0.4", - "marked": "0.3.19", - "taffydb": "2.7.2" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc-publish-html-plugin/node_modules/babel-generator": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.11.4.tgz", - "integrity": "sha1-FPaTOrsgxiZm0n47e59bncBxKpo=", - "dev": true, - "dependencies": { - "babel-messages": "^6.8.0", - "babel-runtime": "^6.9.0", - "babel-types": "^6.10.2", - "detect-indent": "^3.0.1", - "lodash": "^4.2.0", - "source-map": "^0.5.0" - } - }, - "node_modules/esdoc-publish-html-plugin/node_modules/cheerio": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", - "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", - "dev": true, - "dependencies": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/esdoc-publish-html-plugin/node_modules/detect-indent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", - "integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=", - "dev": true, - "dependencies": { - "get-stdin": "^4.0.1", - "minimist": "^1.1.0", - "repeating": "^1.1.0" - }, - "bin": { - "detect-indent": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esdoc-publish-html-plugin/node_modules/fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" - } - }, - "node_modules/esdoc-publish-html-plugin/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/esdoc-publish-html-plugin/node_modules/repeating": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", - "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", - "dev": true, - "dependencies": { - "is-finite": "^1.0.0" - }, - "bin": { - "repeating": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esdoc-publish-html-plugin/node_modules/taffydb": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.2.tgz", - "integrity": "sha1-e/gQalwaSCUbPjvAoOFzJIn9Dcg=", - "dev": true - }, - "node_modules/esdoc-standard-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-standard-plugin/-/esdoc-standard-plugin-1.0.0.tgz", - "integrity": "sha1-ZhIBysfvhokkkCRG/awVJyU8XU0=", - "dev": true, - "dependencies": { - "esdoc-accessor-plugin": "^1.0.0", - "esdoc-brand-plugin": "^1.0.0", - "esdoc-coverage-plugin": "^1.0.0", - "esdoc-external-ecmascript-plugin": "^1.0.0", - "esdoc-integrate-manual-plugin": "^1.0.0", - "esdoc-integrate-test-plugin": "^1.0.0", - "esdoc-lint-plugin": "^1.0.0", - "esdoc-publish-html-plugin": "^1.0.0", - "esdoc-type-inference-plugin": "^1.0.0", - "esdoc-undocumented-identifier-plugin": "^1.0.0", - "esdoc-unexported-identifier-plugin": "^1.0.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc-type-inference-plugin": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/esdoc-type-inference-plugin/-/esdoc-type-inference-plugin-1.0.2.tgz", - "integrity": "sha512-tMIcEHNe1uhUGA7lT1UTWc9hs2dzthnTgmqXpmeUhurk7fL2tinvoH+IVvG/sLROzwOGZQS9zW/F9KWnpMzLIQ==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc-undocumented-identifier-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-undocumented-identifier-plugin/-/esdoc-undocumented-identifier-plugin-1.0.0.tgz", - "integrity": "sha1-guBdNxwy0ShxFA8dXIHsmf2cwsg=", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc-unexported-identifier-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-unexported-identifier-plugin/-/esdoc-unexported-identifier-plugin-1.0.0.tgz", - "integrity": "sha1-H5h0xqfCvr+a05fDzrdcnGnaurE=", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/eslint": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", - "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.0.4", - "@humanwhocodes/config-array": "^0.6.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.1.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.2.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-airbnb": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.0.tgz", - "integrity": "sha512-f5FzCDw8osQJtifOGazdBtYuDOH38FVQSOwHvSU0iFjAmkdl4zQ1jG+YV6sVNt4gqVubqJwn98zZQzDoaCwDyw==", - "dev": true, - "dependencies": { - "eslint-config-airbnb-base": "^15.0.0", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5" - }, - "engines": { - "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.0", - "eslint-plugin-react-hooks": "^4.3.0" - } - }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", - "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.25.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz", - "integrity": "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.1", - "has": "^1.0.3", - "is-core-module": "^2.8.0", - "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", - "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.16.3", - "aria-query": "^4.2.2", - "array-includes": "^3.1.4", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.3.5", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.7", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.2.1", - "language-tags": "^1.0.5", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-mocha": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz", - "integrity": "sha512-d7knAcQj1jPCzZf3caeBIn3BnW6ikcvfz0kSqQpwPYcVGLoJV5sz0l0OJB2LR8I7dvTDbqq1oV6ylhSgzA10zg==", - "dev": true, - "dependencies": { - "eslint-utils": "^3.0.0", - "ramda": "^0.27.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz", - "integrity": "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==", - "dev": true, - "peer": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", - "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "peer": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", - "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", - "dev": true, - "dependencies": { - "acorn": "^8.6.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", - "dev": true - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/github-url-to-object": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/github-url-to-object/-/github-url-to-object-2.2.6.tgz", - "integrity": "sha1-ypJQFlFJdI7uswv8xgAMb+DSQvc=", - "dev": true, - "dependencies": { - "is-url": "^1.1.0" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "node_modules/http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/ice-cap": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/ice-cap/-/ice-cap-0.0.4.tgz", - "integrity": "sha1-im0xq0ysjUtW3k+pRt8zUlYbbhg=", - "dev": true, - "dependencies": { - "cheerio": "0.20.0", - "color-logger": "0.0.3" - } - }, - "node_modules/ice-cap/node_modules/cheerio": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", - "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=", - "dev": true, - "dependencies": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "~3.8.1", - "lodash": "^4.1.0" - }, - "engines": { - "node": ">= 0.6" - }, - "optionalDependencies": { - "jsdom": "^7.0.2" - } - }, - "node_modules/ice-cap/node_modules/color-logger": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/color-logger/-/color-logger-0.0.3.tgz", - "integrity": "sha1-2bIt0dlz4Waxi/MT+fSBu6TfIBg=", - "dev": true - }, - "node_modules/ice-cap/node_modules/domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", - "dev": true, - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/ice-cap/node_modules/htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", - "dev": true, - "dependencies": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" - } - }, - "node_modules/ice-cap/node_modules/htmlparser2/node_modules/entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", - "dev": true - }, - "node_modules/ice-cap/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/ice-cap/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "node_modules/is-weakref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", - "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "node_modules/jsdom": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz", - "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", - "dev": true, - "optional": true, - "dependencies": { - "abab": "^1.0.0", - "acorn": "^2.4.0", - "acorn-globals": "^1.0.4", - "cssom": ">= 0.3.0 < 0.4.0", - "cssstyle": ">= 0.2.29 < 0.3.0", - "escodegen": "^1.6.1", - "nwmatcher": ">= 1.3.7 < 2.0.0", - "parse5": "^1.5.1", - "request": "^2.55.0", - "sax": "^1.1.4", - "symbol-tree": ">= 3.1.0 < 4.0.0", - "tough-cookie": "^2.2.0", - "webidl-conversions": "^2.0.0", - "whatwg-url-compat": "~0.6.5", - "xml-name-validator": ">= 2.0.1 < 3.0.0" - } - }, - "node_modules/jsdom/node_modules/acorn": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", - "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", - "dev": true, - "optional": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsdom/node_modules/parse5": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", - "dev": true, - "optional": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json5/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", - "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", - "dev": true, - "peer": true, - "dependencies": { - "array-includes": "^3.1.3", - "object.assign": "^4.1.2" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/language-subtag-registry": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", - "dev": true, - "peer": true - }, - "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", - "dev": true, - "peer": true, - "dependencies": { - "language-subtag-registry": "~0.3.2" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.assignin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", - "dev": true - }, - "node_modules/lodash.bind": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", - "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "node_modules/lodash.filter": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=", - "dev": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "node_modules/lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=", - "dev": true - }, - "node_modules/lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", - "dev": true - }, - "node_modules/lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=", - "dev": true - }, - "node_modules/lodash.reject": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", - "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=", - "dev": true - }, - "node_modules/lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/marked": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", - "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", - "dev": true, - "bin": { - "marked": "bin/marked" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nwmatcher": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", - "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", - "dev": true, - "optional": true - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", - "dev": true, - "peer": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "dependencies": { - "node-modules-regexp": "^1.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postman-request": { - "version": "2.88.1-postman.30", - "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.30.tgz", - "integrity": "sha512-zsGvs8OgNeno1Q44zTgGP2IL7kCqUy4DAtl8/ms0AQpqkIoysrxzR/Zg4kM1Kz8/duBvwxt8NN717wB7SMNm6w==", - "dependencies": { - "@postman/form-data": "~3.1.1", - "@postman/tunnel-agent": "^0.6.3", - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "brotli": "~1.3.2", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "har-validator": "~5.1.3", - "http-signature": "~1.3.1", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "stream-length": "^1.0.2", - "tough-cookie": "~2.5.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "peer": true - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "node_modules/regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/release-script": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/release-script/-/release-script-1.0.2.tgz", - "integrity": "sha1-OfEap00mscoCXBu53XAtZqXlppA=", - "dev": true, - "dependencies": { - "colors": "^1.1.2", - "github-url-to-object": "^2.1.0", - "request": "^2.60.0", - "semver": "^5.0.0", - "shelljs": "^0.5.1", - "yargs": "^3.15.0" - }, - "bin": { - "release": "bin/release.js" - } - }, - "node_modules/release-script/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/release-script/node_modules/camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/release-script/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/release-script/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/release-script/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/release-script/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/release-script/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/release-script/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/release-script/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/release-script/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "node_modules/release-script/node_modules/yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "dev": true, - "dependencies": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - }, - "node_modules/repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "dependencies": { - "is-finite": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/request/node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/rewire": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rewire/-/rewire-6.0.0.tgz", - "integrity": "sha512-7sZdz5dptqBCapJYocw9EcppLU62KMEqDLIILJnNET2iqzXHaQfaVP5SOJ06XvjX+dNIDJbzjw0ZWzrgDhtjYg==", - "dev": true, - "dependencies": { - "eslint": "^7.32.0" - } - }, - "node_modules/rewire/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/rewire/node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/rewire/node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/rewire/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/rewire/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/rewire/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/rewire/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/rewire/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/rewire/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/rewire/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rewire/node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/rewire/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/rewire/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/rewire/node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/rewire/node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/rewire/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rewire/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/rewire/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/rewire/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/rewire/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", - "integrity": "sha1-xUmCuZbHbvDB5rWfvcWCX1txMRM=", - "dev": true, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stream-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-length/-/stream-length-1.0.2.tgz", - "integrity": "sha1-gnfzy+5JpNqrz9tOL0qbXp8snwA=", - "dependencies": { - "bluebird": "^2.6.2" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", - "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "optional": true - }, - "node_modules/table": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/taffydb": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.3.tgz", - "integrity": "sha1-KtNxaWKUmPylvIQkMJbTzeDsOjQ=", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true, - "optional": true - }, - "node_modules/trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/webidl-conversions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz", - "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=", - "dev": true, - "optional": true - }, - "node_modules/whatwg-url-compat": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz", - "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", - "dev": true, - "optional": true, - "dependencies": { - "tr46": "~0.0.1" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "dev": true, - "bin": { - "window-size": "cli.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/xml-name-validator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", - "dev": true, - "optional": true - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@babel/cli": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", - "integrity": "sha512-WLrM42vKX/4atIoQB+eb0ovUof53UUvecb4qGjU2PDDWRiZr50ZpiV8NpcLo7iSxeGYrRG0Mqembsa+UrTAV6Q==", - "dev": true, - "requires": { - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", - "chokidar": "^3.4.0", - "commander": "^4.0.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.0.0", - "make-dir": "^2.1.0", - "slash": "^2.0.0", - "source-map": "^0.5.0" - } - }, - "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.0" - } - }, - "@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", - "dev": true - }, - "@babel/core": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", - "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helpers": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - } - }, - "@babel/eslint-parser": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.3.tgz", - "integrity": "sha512-iB4ElZT0jAt7PKVaeVulOECdGe6UnmA/O0P9jlF5g5GBOwDVbna8AXhHRu4s27xQf6OkveyA8iTDv1jHdDejgQ==", - "dev": true, - "requires": { - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - } - }, - "@babel/generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", - "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", - "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", - "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", - "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", - "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", - "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", - "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", - "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-module-transforms": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", - "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", - "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-wrap-function": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-replace-supers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", - "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", - "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helpers": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", - "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", - "dev": true, - "requires": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.3", - "@babel/types": "^7.16.0" - } - }, - "@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.15.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", - "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", - "dev": true - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", - "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", - "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", - "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.16.4", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", - "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", - "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", - "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", - "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", - "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", - "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", - "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", - "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", - "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.0" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", - "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", - "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", - "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", - "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", - "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", - "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", - "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.16.0" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", - "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", - "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", - "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", - "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", - "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", - "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", - "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", - "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", - "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", - "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", - "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", - "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", - "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", - "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.16.0", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", - "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.15.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", - "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", - "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", - "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", - "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.16.0" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", - "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", - "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", - "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", - "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.4.tgz", - "integrity": "sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.4.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "semver": "^6.3.0" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", - "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", - "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", - "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", - "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", - "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", - "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", - "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/preset-env": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", - "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-async-generator-functions": "^7.16.4", - "@babel/plugin-proposal-class-properties": "^7.16.0", - "@babel/plugin-proposal-class-static-block": "^7.16.0", - "@babel/plugin-proposal-dynamic-import": "^7.16.0", - "@babel/plugin-proposal-export-namespace-from": "^7.16.0", - "@babel/plugin-proposal-json-strings": "^7.16.0", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", - "@babel/plugin-proposal-numeric-separator": "^7.16.0", - "@babel/plugin-proposal-object-rest-spread": "^7.16.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-private-methods": "^7.16.0", - "@babel/plugin-proposal-private-property-in-object": "^7.16.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.0", - "@babel/plugin-transform-async-to-generator": "^7.16.0", - "@babel/plugin-transform-block-scoped-functions": "^7.16.0", - "@babel/plugin-transform-block-scoping": "^7.16.0", - "@babel/plugin-transform-classes": "^7.16.0", - "@babel/plugin-transform-computed-properties": "^7.16.0", - "@babel/plugin-transform-destructuring": "^7.16.0", - "@babel/plugin-transform-dotall-regex": "^7.16.0", - "@babel/plugin-transform-duplicate-keys": "^7.16.0", - "@babel/plugin-transform-exponentiation-operator": "^7.16.0", - "@babel/plugin-transform-for-of": "^7.16.0", - "@babel/plugin-transform-function-name": "^7.16.0", - "@babel/plugin-transform-literals": "^7.16.0", - "@babel/plugin-transform-member-expression-literals": "^7.16.0", - "@babel/plugin-transform-modules-amd": "^7.16.0", - "@babel/plugin-transform-modules-commonjs": "^7.16.0", - "@babel/plugin-transform-modules-systemjs": "^7.16.0", - "@babel/plugin-transform-modules-umd": "^7.16.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", - "@babel/plugin-transform-new-target": "^7.16.0", - "@babel/plugin-transform-object-super": "^7.16.0", - "@babel/plugin-transform-parameters": "^7.16.3", - "@babel/plugin-transform-property-literals": "^7.16.0", - "@babel/plugin-transform-regenerator": "^7.16.0", - "@babel/plugin-transform-reserved-words": "^7.16.0", - "@babel/plugin-transform-shorthand-properties": "^7.16.0", - "@babel/plugin-transform-spread": "^7.16.0", - "@babel/plugin-transform-sticky-regex": "^7.16.0", - "@babel/plugin-transform-template-literals": "^7.16.0", - "@babel/plugin-transform-typeof-symbol": "^7.16.0", - "@babel/plugin-transform-unicode-escapes": "^7.16.0", - "@babel/plugin-transform-unicode-regex": "^7.16.0", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.0", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.4.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.19.1", - "semver": "^6.3.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/register": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.0.tgz", - "integrity": "sha512-lzl4yfs0zVXnooeLE0AAfYaT7F3SPA8yB2Bj4W1BiZwLbMS3MZH35ZvCWSRHvneUugwuM+Wsnrj7h0F7UmU3NQ==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "find-cache-dir": "^2.0.0", - "make-dir": "^2.1.0", - "pirates": "^4.0.0", - "source-map-support": "^0.5.16" - } - }, - "@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/runtime-corejs3": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.3.tgz", - "integrity": "sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ==", - "dev": true, - "peer": true, - "requires": { - "core-js-pure": "^3.19.0", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/traverse": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", - "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.3", - "@babel/types": "^7.16.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.15.7", - "to-fast-properties": "^2.0.0" - } - }, - "@eslint/eslintrc": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", - "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.0.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - } - } - }, - "@humanwhocodes/config-array": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", - "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", - "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", - "dev": true, - "optional": true - }, - "@postman/form-data": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", - "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "@postman/tunnel-agent": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.3.tgz", - "integrity": "sha512-k57fzmAZ2PJGxfOA4SGR05ejorHbVAa/84Hxh/2nAztjNXc4ZjOm9NUIk6/Z6LCrBvJZqjRZbN8e/nROVUPVdg==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "@types/bluebird": { - "version": "3.5.42", - "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.42.tgz", - "integrity": "sha512-Jhy+MWRlro6UjVi578V/4ZGNfeCOcNCp0YaFNIUGFKlImowqwb1O/22wDVk3FDGMLqxdpOV3qQHD5fPEH4hK6A==", - "dev": true - }, - "@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true - }, - "@types/node": { - "version": "16.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz", - "integrity": "sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A==", - "dev": true - }, - "@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "dev": true, - "requires": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - }, - "dependencies": { - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - } - } - }, - "@types/request-promise": { - "version": "4.1.51", - "resolved": "https://registry.npmjs.org/@types/request-promise/-/request-promise-4.1.51.tgz", - "integrity": "sha512-qVcP9Fuzh9oaAh8oPxiSoWMFGnWKkJDknnij66vi09Yiy62bsSDqtd+fG5kIM9wLLgZsRP3Y6acqj9O/v2ZtRw==", - "dev": true, - "requires": { - "@types/bluebird": "*", - "@types/request": "*" - } - }, - "@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true - }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "abab": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", - "dev": true, - "optional": true - }, - "acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", - "dev": true - }, - "acorn-globals": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", - "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", - "dev": true, - "optional": true, - "requires": { - "acorn": "^2.1.0" - }, - "dependencies": { - "acorn": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", - "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", - "dev": true, - "optional": true - } - } - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "peer": true, - "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - } - }, - "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - } - }, - "array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - } - }, - "array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - } - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", - "dev": true, - "peer": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "axe-core": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz", - "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==", - "dev": true, - "peer": true - }, - "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true, - "peer": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-add-module-exports": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", - "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==", - "dev": true - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", - "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.0", - "semver": "^6.1.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", - "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", - "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - } - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - } - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bluebird": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", - "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=" - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "brotli": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.2.tgz", - "integrity": "sha1-UlqcrU/LqWR119OI9q7LE+7VL0Y=", - "requires": { - "base64-js": "^1.1.2" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001282", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", - "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", - "dev": true, - "requires": { - "check-error": "^1.0.2" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "cheerio": { - "version": "1.0.0-rc.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", - "dev": true, - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-logger": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/color-logger/-/color-logger-0.0.6.tgz", - "integrity": "sha1-5WJF7ymCJlcRDHy3WpzXhstp7Rs=", - "dev": true - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "confusing-browser-globals": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", - "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "dev": true - }, - "core-js-compat": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", - "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", - "dev": true, - "requires": { - "browserslist": "^4.17.6", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-js-pure": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.1.tgz", - "integrity": "sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ==", - "dev": true, - "peer": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "dev": true - }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "optional": true - }, - "cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "dev": true, - "optional": true, - "requires": { - "cssom": "0.3.x" - } - }, - "damerau-levenshtein": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", - "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==", - "dev": true, - "peer": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dev": true, - "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "electron-to-chromium": { - "version": "1.3.904", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", - "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "peer": true - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "optional": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "optional": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "optional": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "optional": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "optional": true, - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, - "esdoc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/esdoc/-/esdoc-1.1.0.tgz", - "integrity": "sha512-vsUcp52XJkOWg9m1vDYplGZN2iDzvmjDL5M/Mp8qkoDG3p2s0yIQCIjKR5wfPBaM3eV14a6zhQNYiNTCVzPnxA==", - "dev": true, - "requires": { - "babel-generator": "6.26.1", - "babel-traverse": "6.26.0", - "babylon": "6.18.0", - "cheerio": "1.0.0-rc.2", - "color-logger": "0.0.6", - "escape-html": "1.0.3", - "fs-extra": "5.0.0", - "ice-cap": "0.0.4", - "marked": "0.3.19", - "minimist": "1.2.0", - "taffydb": "2.7.3" - } - }, - "esdoc-accessor-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-accessor-plugin/-/esdoc-accessor-plugin-1.0.0.tgz", - "integrity": "sha1-eRukhy5sQDUVznSbE0jW8Ck62es=", - "dev": true - }, - "esdoc-brand-plugin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esdoc-brand-plugin/-/esdoc-brand-plugin-1.0.1.tgz", - "integrity": "sha512-Yv9j3M7qk5PSLmSeD6MbPsfIsEf8K43EdH8qZpE/GZwnJCRVmDPrZJ1cLDj/fPu6P35YqgcEaJK4E2NL/CKA7g==", - "dev": true, - "requires": { - "cheerio": "0.22.0" - }, - "dependencies": { - "cheerio": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", - "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", - "dev": true, - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" - } - } - } - }, - "esdoc-coverage-plugin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/esdoc-coverage-plugin/-/esdoc-coverage-plugin-1.1.0.tgz", - "integrity": "sha1-OGmGnNf4eJH5cmJXh2laKZrs5Fw=", - "dev": true - }, - "esdoc-ecmascript-proposal-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-ecmascript-proposal-plugin/-/esdoc-ecmascript-proposal-plugin-1.0.0.tgz", - "integrity": "sha1-OQ3FZWuoooMOOdujVw15E43y/9k=", - "dev": true - }, - "esdoc-external-ecmascript-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-external-ecmascript-plugin/-/esdoc-external-ecmascript-plugin-1.0.0.tgz", - "integrity": "sha1-ePVl1KDFGFrGMVJhTc4f4ahmiNs=", - "dev": true, - "requires": { - "fs-extra": "1.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" - } - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - } - } - }, - "esdoc-integrate-manual-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-integrate-manual-plugin/-/esdoc-integrate-manual-plugin-1.0.0.tgz", - "integrity": "sha1-GFSmqhwIEDXXyMUeO91PtlqkcRw=", - "dev": true - }, - "esdoc-integrate-test-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-integrate-test-plugin/-/esdoc-integrate-test-plugin-1.0.0.tgz", - "integrity": "sha1-4tDQAJD38MNeXS8sAzMnp55T5Ak=", - "dev": true - }, - "esdoc-lint-plugin": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/esdoc-lint-plugin/-/esdoc-lint-plugin-1.0.2.tgz", - "integrity": "sha512-24AYqD2WbZI9We02I7/6dzAa7yUliRTFUaJCZAcYJMQicJT5gUrNFVaI8XmWEN/mhF3szIn1uZBNWeLul4CmNw==", - "dev": true - }, - "esdoc-publish-html-plugin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/esdoc-publish-html-plugin/-/esdoc-publish-html-plugin-1.1.2.tgz", - "integrity": "sha512-hG1fZmTcEp3P/Hv/qKiMdG1qSp8MjnVZMMkxL5P5ry7I2sX0HQ4P9lt2lms+90Lt0r340HHhSuVx107UL7dphg==", - "dev": true, - "requires": { - "babel-generator": "6.11.4", - "cheerio": "0.22.0", - "escape-html": "1.0.3", - "fs-extra": "1.0.0", - "ice-cap": "0.0.4", - "marked": "0.3.19", - "taffydb": "2.7.2" - }, - "dependencies": { - "babel-generator": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.11.4.tgz", - "integrity": "sha1-FPaTOrsgxiZm0n47e59bncBxKpo=", - "dev": true, - "requires": { - "babel-messages": "^6.8.0", - "babel-runtime": "^6.9.0", - "babel-types": "^6.10.2", - "detect-indent": "^3.0.1", - "lodash": "^4.2.0", - "source-map": "^0.5.0" - } - }, - "cheerio": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", - "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", - "dev": true, - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" - } - }, - "detect-indent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", - "integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "minimist": "^1.1.0", - "repeating": "^1.1.0" - } - }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" - } - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "repeating": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", - "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "taffydb": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.2.tgz", - "integrity": "sha1-e/gQalwaSCUbPjvAoOFzJIn9Dcg=", - "dev": true - } - } - }, - "esdoc-standard-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-standard-plugin/-/esdoc-standard-plugin-1.0.0.tgz", - "integrity": "sha1-ZhIBysfvhokkkCRG/awVJyU8XU0=", - "dev": true, - "requires": { - "esdoc-accessor-plugin": "^1.0.0", - "esdoc-brand-plugin": "^1.0.0", - "esdoc-coverage-plugin": "^1.0.0", - "esdoc-external-ecmascript-plugin": "^1.0.0", - "esdoc-integrate-manual-plugin": "^1.0.0", - "esdoc-integrate-test-plugin": "^1.0.0", - "esdoc-lint-plugin": "^1.0.0", - "esdoc-publish-html-plugin": "^1.0.0", - "esdoc-type-inference-plugin": "^1.0.0", - "esdoc-undocumented-identifier-plugin": "^1.0.0", - "esdoc-unexported-identifier-plugin": "^1.0.0" - } - }, - "esdoc-type-inference-plugin": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/esdoc-type-inference-plugin/-/esdoc-type-inference-plugin-1.0.2.tgz", - "integrity": "sha512-tMIcEHNe1uhUGA7lT1UTWc9hs2dzthnTgmqXpmeUhurk7fL2tinvoH+IVvG/sLROzwOGZQS9zW/F9KWnpMzLIQ==", - "dev": true - }, - "esdoc-undocumented-identifier-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-undocumented-identifier-plugin/-/esdoc-undocumented-identifier-plugin-1.0.0.tgz", - "integrity": "sha1-guBdNxwy0ShxFA8dXIHsmf2cwsg=", - "dev": true - }, - "esdoc-unexported-identifier-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esdoc-unexported-identifier-plugin/-/esdoc-unexported-identifier-plugin-1.0.0.tgz", - "integrity": "sha1-H5h0xqfCvr+a05fDzrdcnGnaurE=", - "dev": true - }, - "eslint": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", - "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.0.4", - "@humanwhocodes/config-array": "^0.6.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.1.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.2.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", - "dev": true - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "eslint-config-airbnb": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.0.tgz", - "integrity": "sha512-f5FzCDw8osQJtifOGazdBtYuDOH38FVQSOwHvSU0iFjAmkdl4zQ1jG+YV6sVNt4gqVubqJwn98zZQzDoaCwDyw==", - "dev": true, - "requires": { - "eslint-config-airbnb-base": "^15.0.0", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5" - } - }, - "eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "requires": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", - "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-import": { - "version": "2.25.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz", - "integrity": "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==", - "dev": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.1", - "has": "^1.0.3", - "is-core-module": "^2.8.0", - "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", - "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", - "dev": true, - "peer": true, - "requires": { - "@babel/runtime": "^7.16.3", - "aria-query": "^4.2.2", - "array-includes": "^3.1.4", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.3.5", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.7", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.2.1", - "language-tags": "^1.0.5", - "minimatch": "^3.0.4" - } - }, - "eslint-plugin-mocha": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz", - "integrity": "sha512-d7knAcQj1jPCzZf3caeBIn3BnW6ikcvfz0kSqQpwPYcVGLoJV5sz0l0OJB2LR8I7dvTDbqq1oV6ylhSgzA10zg==", - "dev": true, - "requires": { - "eslint-utils": "^3.0.0", - "ramda": "^0.27.1" - } - }, - "eslint-plugin-react": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz", - "integrity": "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==", - "dev": true, - "peer": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "peer": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "peer": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - } - } - }, - "eslint-plugin-react-hooks": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", - "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==", - "dev": true, - "peer": true, - "requires": {} - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "espree": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", - "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", - "dev": true, - "requires": { - "acorn": "^8.6.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "github-url-to-object": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/github-url-to-object/-/github-url-to-object-2.2.6.tgz", - "integrity": "sha1-ypJQFlFJdI7uswv8xgAMb+DSQvc=", - "dev": true, - "requires": { - "is-url": "^1.1.0" - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" - } - }, - "ice-cap": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/ice-cap/-/ice-cap-0.0.4.tgz", - "integrity": "sha1-im0xq0ysjUtW3k+pRt8zUlYbbhg=", - "dev": true, - "requires": { - "cheerio": "0.20.0", - "color-logger": "0.0.3" - }, - "dependencies": { - "cheerio": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", - "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=", - "dev": true, - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "~3.8.1", - "jsdom": "^7.0.2", - "lodash": "^4.1.0" - } - }, - "color-logger": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/color-logger/-/color-logger-0.0.3.tgz", - "integrity": "sha1-2bIt0dlz4Waxi/MT+fSBu6TfIBg=", - "dev": true - }, - "domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", - "dev": true, - "requires": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" - }, - "dependencies": { - "entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", - "dev": true - } - } - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "is-weakref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", - "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsdom": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz", - "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", - "dev": true, - "optional": true, - "requires": { - "abab": "^1.0.0", - "acorn": "^2.4.0", - "acorn-globals": "^1.0.4", - "cssom": ">= 0.3.0 < 0.4.0", - "cssstyle": ">= 0.2.29 < 0.3.0", - "escodegen": "^1.6.1", - "nwmatcher": ">= 1.3.7 < 2.0.0", - "parse5": "^1.5.1", - "request": "^2.55.0", - "sax": "^1.1.4", - "symbol-tree": ">= 3.1.0 < 4.0.0", - "tough-cookie": "^2.2.0", - "webidl-conversions": "^2.0.0", - "whatwg-url-compat": "~0.6.5", - "xml-name-validator": ">= 2.0.1 < 3.0.0" - }, - "dependencies": { - "acorn": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", - "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", - "dev": true, - "optional": true - }, - "parse5": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", - "dev": true, - "optional": true - } - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "jsx-ast-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", - "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", - "dev": true, - "peer": true, - "requires": { - "array-includes": "^3.1.3", - "object.assign": "^4.1.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "language-subtag-registry": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", - "dev": true, - "peer": true - }, - "language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", - "dev": true, - "peer": true, - "requires": { - "language-subtag-registry": "~0.3.2" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.assignin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", - "dev": true - }, - "lodash.bind": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", - "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "lodash.filter": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=", - "dev": true - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=", - "dev": true - }, - "lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", - "dev": true - }, - "lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=", - "dev": true - }, - "lodash.reject": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", - "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=", - "dev": true - }, - "lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "marked": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", - "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", - "dev": true - }, - "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" - }, - "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "requires": { - "mime-db": "1.51.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "requires": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, - "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "nwmatcher": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", - "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", - "dev": true, - "optional": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "peer": true - }, - "object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", - "dev": true, - "peer": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "postman-request": { - "version": "2.88.1-postman.30", - "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.30.tgz", - "integrity": "sha512-zsGvs8OgNeno1Q44zTgGP2IL7kCqUy4DAtl8/ms0AQpqkIoysrxzR/Zg4kM1Kz8/duBvwxt8NN717wB7SMNm6w==", - "requires": { - "@postman/form-data": "~3.1.1", - "@postman/tunnel-agent": "^0.6.3", - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "brotli": "~1.3.2", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "har-validator": "~5.1.3", - "http-signature": "~1.3.1", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "stream-length": "^1.0.2", - "tough-cookie": "~2.5.0", - "uuid": "^3.3.2" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "release-script": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/release-script/-/release-script-1.0.2.tgz", - "integrity": "sha1-OfEap00mscoCXBu53XAtZqXlppA=", - "dev": true, - "requires": { - "colors": "^1.1.2", - "github-url-to-object": "^2.1.0", - "request": "^2.60.0", - "semver": "^5.0.0", - "shelljs": "^0.5.1", - "yargs": "^3.15.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "dev": true, - "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - } - } - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "rewire": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rewire/-/rewire-6.0.0.tgz", - "integrity": "sha512-7sZdz5dptqBCapJYocw9EcppLU62KMEqDLIILJnNET2iqzXHaQfaVP5SOJ06XvjX+dNIDJbzjw0ZWzrgDhtjYg==", - "dev": true, - "requires": { - "eslint": "^7.32.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shelljs": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", - "integrity": "sha1-xUmCuZbHbvDB5rWfvcWCX1txMRM=", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stream-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-length/-/stream-length-1.0.2.tgz", - "integrity": "sha1-gnfzy+5JpNqrz9tOL0qbXp8snwA=", - "requires": { - "bluebird": "^2.6.2" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - } - } - }, - "string.prototype.matchall": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", - "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", - "side-channel": "^1.0.4" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "optional": true - }, - "table": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "taffydb": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.3.tgz", - "integrity": "sha1-KtNxaWKUmPylvIQkMJbTzeDsOjQ=", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true, - "optional": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "dev": true - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "webidl-conversions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz", - "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=", - "dev": true, - "optional": true - }, - "whatwg-url-compat": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz", - "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", - "dev": true, - "optional": true, - "requires": { - "tr46": "~0.0.1" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "xml-name-validator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", - "dev": true, - "optional": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - } - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } - } -} diff --git a/package.json b/package.json index 083d976..b617050 100644 --- a/package.json +++ b/package.json @@ -1,21 +1,24 @@ { - "name": "jira-client", - "version": "8.2.2", - "description": "Wrapper for the JIRA API", - "author": "Steven Surowiec ", + "name": "ts-jira-client", + "version": "1.0.0", + "description": "Wrapper for the JIRA API, based off jira-client", + "authors": [ + "Bart Riepe ", + "Steven Surowiec " + ], "contributors": [ "Chris Moultrie ", "Lucas Vogelsang ", "Matt Smith ", "Anson Wayman " ], - "homepage": "http://github.com/jira-node/node-jira-client", + "homepage": "http://github.com/aeolun/node-jira-client", "repository": { "type": "git", "url": "http://github.com/jira-node/node-jira-client" }, "engine": { - "node": ">=10.0.0" + "node": ">=18.0.0" }, "main": "./lib/jira.js", "typings": "./lib/jira.d.ts", @@ -27,45 +30,32 @@ ], "license": "MIT", "dependencies": { - "@babel/runtime": "^7.6.0", - "axios": "^0.21.1" + "axios": "^1.6.7" }, "scripts": { "build": "rm -rf lib && tsc", "watch": "rm -rf lib && tsc -w", - "docs-build": "rm -rf docs && esdoc -c esdoc.json", - "lint": "eslint ./", - "test": "npm run lint && mocha --require @babel/register && npm run docs-build", + "docs-build": "rm -rf docs && typedoc src/jira.ts --out docs", + "update-types": "tsx scripts/update-ts-definitions.ts", + "lint": "biome lint .", + "lint:fix": "biome lint --apply-unsafe .", + "format": "biome format .", + "format:fix": "biome format --write .", + "test": "vitest", "prepublishOnly": "npm run build && npm run docs-build", - "release": "release" + "release": "semantic-release" }, "devDependencies": { - "@babel/cli": "^7.6.0", - "@babel/core": "^7.6.0", - "@babel/eslint-parser": "7.16.3", - "@babel/plugin-transform-runtime": "^7.6.0", - "@babel/preset-env": "^7.6.0", - "@babel/register": "^7.6.0", - "@types/request-promise": "^4.1.46", - "babel-eslint": "^10.0.3", - "babel-plugin-add-module-exports": "^1.0.0", - "chai": "^4.2.0", - "chai-as-promised": "^7.1.1", - "esdoc": "^1.1.0", - "esdoc-ecmascript-proposal-plugin": "^1.0.0", - "esdoc-standard-plugin": "^1.0.0", - "eslint": "^8.2.0", - "eslint-config-airbnb": "^19.0.0", - "eslint-plugin-import": "^2.18.2", - "eslint-plugin-mocha": "^9.0.0", - "mocha": "^9.1.3", - "release-script": "^1.0.1", - "rewire": "^6.0.0", - "typescript": "^5" - }, - "release-script": { - "docsRepo": "git@github.com:jira-node/jira-node.github.io.git", - "docsRoot": "docs/", - "tmpDocsRepo": "tmp-docs-repo" + "@biomejs/biome": "^1.5.3", + "@semantic-release/git": "^10.0.1", + "@types/node": "^20.11.16", + "api-spec-converter": "^2.12.0", + "axios-mock-adapter": "^1.22.0", + "openapi-typescript": "^6.7.4", + "semantic-release": "^23.0.0", + "tsx": "^4.7.0", + "typedoc": "^0.25.7", + "typescript": "^5.3.3", + "vitest": "^1.2.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..2205c07 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,4981 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + axios: + specifier: ^1.6.7 + version: 1.6.7 + +devDependencies: + '@biomejs/biome': + specifier: ^1.5.3 + version: 1.5.3 + '@semantic-release/git': + specifier: ^10.0.1 + version: 10.0.1(semantic-release@23.0.0) + '@types/node': + specifier: ^20.11.16 + version: 20.11.16 + api-spec-converter: + specifier: ^2.12.0 + version: 2.12.0 + axios-mock-adapter: + specifier: ^1.22.0 + version: 1.22.0(axios@1.6.7) + openapi-typescript: + specifier: ^6.7.4 + version: 6.7.4 + semantic-release: + specifier: ^23.0.0 + version: 23.0.0(typescript@5.3.3) + tsx: + specifier: ^4.7.0 + version: 4.7.0 + typedoc: + specifier: ^0.25.7 + version: 0.25.7(typescript@5.3.3) + typescript: + specifier: ^5.3.3 + version: 5.3.3 + vitest: + specifier: ^1.2.2 + version: 1.2.2(@types/node@20.11.16) + +packages: + + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + dev: true + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@biomejs/biome@1.5.3: + resolution: {integrity: sha512-yvZCa/g3akwTaAQ7PCwPWDCkZs3Qa5ONg/fgOUT9e6wAWsPftCjLQFPXBeGxPK30yZSSpgEmRCfpGTmVbUjGgg==} + engines: {node: '>=14.*'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.5.3 + '@biomejs/cli-darwin-x64': 1.5.3 + '@biomejs/cli-linux-arm64': 1.5.3 + '@biomejs/cli-linux-arm64-musl': 1.5.3 + '@biomejs/cli-linux-x64': 1.5.3 + '@biomejs/cli-linux-x64-musl': 1.5.3 + '@biomejs/cli-win32-arm64': 1.5.3 + '@biomejs/cli-win32-x64': 1.5.3 + dev: true + + /@biomejs/cli-darwin-arm64@1.5.3: + resolution: {integrity: sha512-ImU7mh1HghEDyqNmxEZBoMPr8SxekkZuYcs+gynKlNW+TALQs7swkERiBLkG9NR0K1B3/2uVzlvYowXrmlW8hw==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-darwin-x64@1.5.3: + resolution: {integrity: sha512-vCdASqYnlpq/swErH7FD6nrFz0czFtK4k/iLgj0/+VmZVjineFPgevOb+Sr9vz0tk0GfdQO60bSpI74zU8M9Dw==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-arm64-musl@1.5.3: + resolution: {integrity: sha512-DYuMizUYUBYfS0IHGjDrOP1RGipqWfMGEvNEJ398zdtmCKLXaUvTimiox5dvx4X15mBK5M2m8wgWUgOP1giUpQ==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-arm64@1.5.3: + resolution: {integrity: sha512-cupBQv0sNF1OKqBfx7EDWMSsKwRrBUZfjXawT4s6hKV6ALq7p0QzWlxr/sDmbKMLOaLQtw2Qgu/77N9rm+f9Rg==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-x64-musl@1.5.3: + resolution: {integrity: sha512-UUHiAnlDqr2Y/LpvshBFhUYMWkl2/Jn+bi3U6jKuav0qWbbBKU/ByHgR4+NBxpKBYoCtWxhnmatfH1bpPIuZMw==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-x64@1.5.3: + resolution: {integrity: sha512-YQrSArQvcv4FYsk7Q91Yv4uuu5F8hJyORVcv3zsjCLGkjIjx2RhjYLpTL733SNL7v33GmOlZY0eFR1ko38tuUw==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-win32-arm64@1.5.3: + resolution: {integrity: sha512-HxatYH7vf/kX9nrD+pDYuV2GI9GV8EFo6cfKkahAecTuZLPxryHx1WEfJthp5eNsE0+09STGkKIKjirP0ufaZA==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-win32-x64@1.5.3: + resolution: {integrity: sha512-fMvbSouZEASU7mZH8SIJSANDm5OqsjgtVXlbUqxwed6BP7uuHRSs396Aqwh2+VoW8fwTpp6ybIUoC9FrzB0kyA==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@cloudflare/json-schema-walker@0.1.1: + resolution: {integrity: sha512-P3n0hEgk1m6uKWgL4Yb1owzXVG4pM70G4kRnDQxZXiVvfCRtaqiHu+ZRiRPzmwGBiLTO1LWc2yR1M8oz0YkXww==} + requiresBuild: true + dev: true + optional: true + + /@colors/colors@1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + requiresBuild: true + dev: true + optional: true + + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.0 + dev: true + + /@octokit/auth-token@4.0.0: + resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} + engines: {node: '>= 18'} + dev: true + + /@octokit/core@5.1.0: + resolution: {integrity: sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==} + engines: {node: '>= 18'} + dependencies: + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.0.2 + '@octokit/request': 8.1.6 + '@octokit/request-error': 5.0.1 + '@octokit/types': 12.4.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/endpoint@9.0.4: + resolution: {integrity: sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==} + engines: {node: '>= 18'} + dependencies: + '@octokit/types': 12.4.0 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/graphql@7.0.2: + resolution: {integrity: sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==} + engines: {node: '>= 18'} + dependencies: + '@octokit/request': 8.1.6 + '@octokit/types': 12.4.0 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/openapi-types@19.1.0: + resolution: {integrity: sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==} + dev: true + + /@octokit/plugin-paginate-rest@9.1.5(@octokit/core@5.1.0): + resolution: {integrity: sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=5' + dependencies: + '@octokit/core': 5.1.0 + '@octokit/types': 12.4.0 + dev: true + + /@octokit/plugin-retry@6.0.1(@octokit/core@5.1.0): + resolution: {integrity: sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=5' + dependencies: + '@octokit/core': 5.1.0 + '@octokit/request-error': 5.0.1 + '@octokit/types': 12.4.0 + bottleneck: 2.19.5 + dev: true + + /@octokit/plugin-throttling@8.1.3(@octokit/core@5.1.0): + resolution: {integrity: sha512-pfyqaqpc0EXh5Cn4HX9lWYsZ4gGbjnSmUILeu4u2gnuM50K/wIk9s1Pxt3lVeVwekmITgN/nJdoh43Ka+vye8A==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': ^5.0.0 + dependencies: + '@octokit/core': 5.1.0 + '@octokit/types': 12.4.0 + bottleneck: 2.19.5 + dev: true + + /@octokit/request-error@5.0.1: + resolution: {integrity: sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==} + engines: {node: '>= 18'} + dependencies: + '@octokit/types': 12.4.0 + deprecation: 2.3.1 + once: 1.4.0 + dev: true + + /@octokit/request@8.1.6: + resolution: {integrity: sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==} + engines: {node: '>= 18'} + dependencies: + '@octokit/endpoint': 9.0.4 + '@octokit/request-error': 5.0.1 + '@octokit/types': 12.4.0 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/types@12.4.0: + resolution: {integrity: sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==} + dependencies: + '@octokit/openapi-types': 19.1.0 + dev: true + + /@pnpm/config.env-replace@1.1.0: + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + dev: true + + /@pnpm/network.ca-file@1.0.2: + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + dependencies: + graceful-fs: 4.2.10 + dev: true + + /@pnpm/npm-conf@2.2.2: + resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} + engines: {node: '>=12'} + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + dev: true + + /@rollup/rollup-android-arm-eabi@4.9.6: + resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.9.6: + resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.9.6: + resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.9.6: + resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.9.6: + resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.9.6: + resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.9.6: + resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.9.6: + resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.9.6: + resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.9.6: + resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.9.6: + resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.9.6: + resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.9.6: + resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@semantic-release/commit-analyzer@11.1.0(semantic-release@23.0.0): + resolution: {integrity: sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==} + engines: {node: ^18.17 || >=20.6.1} + peerDependencies: + semantic-release: '>=20.1.0' + dependencies: + conventional-changelog-angular: 7.0.0 + conventional-commits-filter: 4.0.0 + conventional-commits-parser: 5.0.0 + debug: 4.3.4 + import-from-esm: 1.3.3 + lodash-es: 4.17.21 + micromatch: 4.0.5 + semantic-release: 23.0.0(typescript@5.3.3) + transitivePeerDependencies: + - supports-color + dev: true + + /@semantic-release/error@3.0.0: + resolution: {integrity: sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==} + engines: {node: '>=14.17'} + dev: true + + /@semantic-release/error@4.0.0: + resolution: {integrity: sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==} + engines: {node: '>=18'} + dev: true + + /@semantic-release/git@10.0.1(semantic-release@23.0.0): + resolution: {integrity: sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==} + engines: {node: '>=14.17'} + peerDependencies: + semantic-release: '>=18.0.0' + dependencies: + '@semantic-release/error': 3.0.0 + aggregate-error: 3.1.0 + debug: 4.3.4 + dir-glob: 3.0.1 + execa: 5.1.1 + lodash: 4.17.21 + micromatch: 4.0.5 + p-reduce: 2.1.0 + semantic-release: 23.0.0(typescript@5.3.3) + transitivePeerDependencies: + - supports-color + dev: true + + /@semantic-release/github@9.2.6(semantic-release@23.0.0): + resolution: {integrity: sha512-shi+Lrf6exeNZF+sBhK+P011LSbhmIAoUEgEY6SsxF8irJ+J2stwI5jkyDQ+4gzYyDImzV6LCKdYB9FXnQRWKA==} + engines: {node: '>=18'} + peerDependencies: + semantic-release: '>=20.1.0' + dependencies: + '@octokit/core': 5.1.0 + '@octokit/plugin-paginate-rest': 9.1.5(@octokit/core@5.1.0) + '@octokit/plugin-retry': 6.0.1(@octokit/core@5.1.0) + '@octokit/plugin-throttling': 8.1.3(@octokit/core@5.1.0) + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 + debug: 4.3.4 + dir-glob: 3.0.1 + globby: 14.0.0 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 + issue-parser: 6.0.0 + lodash-es: 4.17.21 + mime: 4.0.1 + p-filter: 4.1.0 + semantic-release: 23.0.0(typescript@5.3.3) + url-join: 5.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@semantic-release/npm@11.0.2(semantic-release@23.0.0): + resolution: {integrity: sha512-owtf3RjyPvRE63iUKZ5/xO4uqjRpVQDUB9+nnXj0xwfIeM9pRl+cG+zGDzdftR4m3f2s4Wyf3SexW+kF5DFtWA==} + engines: {node: ^18.17 || >=20} + peerDependencies: + semantic-release: '>=20.1.0' + dependencies: + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 + execa: 8.0.1 + fs-extra: 11.2.0 + lodash-es: 4.17.21 + nerf-dart: 1.0.0 + normalize-url: 8.0.0 + npm: 10.4.0 + rc: 1.2.8 + read-pkg: 9.0.1 + registry-auth-token: 5.0.2 + semantic-release: 23.0.0(typescript@5.3.3) + semver: 7.5.4 + tempy: 3.1.0 + dev: true + + /@semantic-release/release-notes-generator@12.1.0(semantic-release@23.0.0): + resolution: {integrity: sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==} + engines: {node: ^18.17 || >=20.6.1} + peerDependencies: + semantic-release: '>=20.1.0' + dependencies: + conventional-changelog-angular: 7.0.0 + conventional-changelog-writer: 7.0.1 + conventional-commits-filter: 4.0.0 + conventional-commits-parser: 5.0.0 + debug: 4.3.4 + get-stream: 7.0.1 + import-from-esm: 1.3.3 + into-stream: 7.0.0 + lodash-es: 4.17.21 + read-pkg-up: 11.0.0 + semantic-release: 23.0.0(typescript@5.3.3) + transitivePeerDependencies: + - supports-color + dev: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: true + + /@sindresorhus/merge-streams@1.0.0: + resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} + engines: {node: '>=18'} + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + requiresBuild: true + dependencies: + '@types/node': 20.11.16 + dev: true + optional: true + + /@types/node@20.11.16: + resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/normalize-package-data@2.4.4: + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + dev: true + + /@types/responselike@1.0.3: + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + requiresBuild: true + dependencies: + '@types/node': 20.11.16 + dev: true + optional: true + + /@vitest/expect@1.2.2: + resolution: {integrity: sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==} + dependencies: + '@vitest/spy': 1.2.2 + '@vitest/utils': 1.2.2 + chai: 4.4.1 + dev: true + + /@vitest/runner@1.2.2: + resolution: {integrity: sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==} + dependencies: + '@vitest/utils': 1.2.2 + p-limit: 5.0.0 + pathe: 1.1.2 + dev: true + + /@vitest/snapshot@1.2.2: + resolution: {integrity: sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==} + dependencies: + magic-string: 0.30.6 + pathe: 1.1.2 + pretty-format: 29.7.0 + dev: true + + /@vitest/spy@1.2.2: + resolution: {integrity: sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==} + dependencies: + tinyspy: 2.2.0 + dev: true + + /@vitest/utils@1.2.2: + resolution: {integrity: sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==} + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + + /JSONSelect@0.4.0: + resolution: {integrity: sha512-VRLR3Su35MH+XV2lrvh9O7qWoug/TUyj9tLDjn9rtpUCNnILLrHjgd/tB0KrhugCxUpj3UqoLqfYb3fLJdIQQQ==} + engines: {node: '>=0.4.7'} + requiresBuild: true + dev: true + optional: true + + /JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + requiresBuild: true + dev: true + optional: true + + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /aggregate-error@5.0.0: + resolution: {integrity: sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==} + engines: {node: '>=18'} + dependencies: + clean-stack: 5.2.0 + indent-string: 5.0.0 + dev: true + + /ajv@5.5.2: + resolution: {integrity: sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==} + requiresBuild: true + dependencies: + co: 4.6.0 + fast-deep-equal: 1.1.0 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.3.1 + dev: true + optional: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + requiresBuild: true + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes@6.2.0: + resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} + engines: {node: '>=14.16'} + dependencies: + type-fest: 3.13.1 + dev: true + + /ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + requiresBuild: true + dev: true + optional: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-sequence-parser@1.1.1: + resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansicolors@0.3.2: + resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + dev: true + + /api-spec-converter@2.12.0: + resolution: {integrity: sha512-awKL523vwkmyf3rTzmW/lopAbHRhqJw84IThAovtoQ60u6TblCoGIEhhpDDfb9WycncU2aDrVfqf9LQC5lcUTQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + bluebird: 3.7.2 + commander: 2.20.3 + composite-error: 0.1.1 + deep-sort-object: 1.0.2 + js-yaml: 3.14.1 + lodash: 4.17.21 + lodash.clonedeep: 4.5.0 + request: 2.88.2 + source-map: 0.6.0 + sway: 2.0.6 + traverse: 0.6.8 + urijs: 1.19.11 + xml2js: 0.4.23 + optionalDependencies: + apib2swagger: 1.17.1 + drafter.js: 2.6.7 + google-discovery-to-swagger: 2.1.0 + raml-parser: 0.8.18 + raml-to-swagger: 1.1.0 + swagger-converter: 1.5.1 + swagger2openapi: 2.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /apib-include-directive@0.1.0: + resolution: {integrity: sha512-7m5LKbmFGeJogORhkLOCQjcEuGrRcVLG32nHbTAAYjvZ3cSV1XaxU8LBXIvx0PyLYL4mE/gc0Nu0Y7odQmAU1Q==} + requiresBuild: true + dev: true + optional: true + + /apib2swagger@1.17.1: + resolution: {integrity: sha512-2ednp+ckytSEOvX3CaUcHYC01wmzzfy970T22EJiBzcl4rj5p5UvUxXxHh6gCSCmDTkqKdiIFCLhoIJGynN8CQ==} + hasBin: true + requiresBuild: true + dependencies: + apib-include-directive: 0.1.0 + drafter.js: 2.6.7 + generate-schema: 2.6.0 + js-yaml: 4.1.0 + json-schema-to-openapi-schema: 0.4.0 + lodash.isequal: 4.5.0 + nopt: 3.0.6 + uritemplate: 0.3.4 + dev: true + optional: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + requiresBuild: true + dev: true + + /argv-formatter@1.0.0: + resolution: {integrity: sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==} + dev: true + + /array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + dev: true + + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: true + + /asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + requiresBuild: true + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + requiresBuild: true + dev: true + + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + /aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + requiresBuild: true + dev: true + + /aws4@1.12.0: + resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + requiresBuild: true + dev: true + + /axios-mock-adapter@1.22.0(axios@1.6.7): + resolution: {integrity: sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw==} + peerDependencies: + axios: '>= 0.17.0' + dependencies: + axios: 1.6.7 + fast-deep-equal: 3.1.3 + is-buffer: 2.0.5 + dev: true + + /axios@1.6.7: + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + dependencies: + follow-redirects: 1.15.5 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + requiresBuild: true + dependencies: + tweetnacl: 0.14.5 + dev: true + + /before-after-hook@2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + dev: true + + /bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: true + + /bottleneck@2.19.5: + resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.3 + set-function-length: 1.2.0 + dev: true + + /call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@4.1.0: + resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} + engines: {node: '>=4'} + requiresBuild: true + dev: true + optional: true + + /cardinal@2.1.1: + resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} + hasBin: true + dependencies: + ansicolors: 0.3.2 + redeyed: 2.1.1 + dev: true + + /caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + requiresBuild: true + dev: true + + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /cjson@0.2.1: + resolution: {integrity: sha512-Yche6o3bxUlXx6vGDjDwcWU3cSLGyRxGQpDk/FNHKDt02c715rBvuPLBfP1/+U+quWm/lU4F8N5sZbRCxpsrIg==} + engines: {node: '>= 0.3.0'} + requiresBuild: true + dev: true + optional: true + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /clean-stack@5.2.0: + resolution: {integrity: sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==} + engines: {node: '>=14.16'} + dependencies: + escape-string-regexp: 5.0.0 + dev: true + + /cli-table3@0.6.3: + resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + engines: {node: 10.* || >= 12.*} + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + dev: true + + /cliui@3.2.0: + resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==} + requiresBuild: true + dependencies: + string-width: 1.0.2 + strip-ansi: 3.0.1 + wrap-ansi: 2.1.0 + dev: true + optional: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + requiresBuild: true + dev: true + optional: true + + /code-point-at@1.1.0: + resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colors@0.5.1: + resolution: {integrity: sha512-XjsuUwpDeY98+yz959OlUK6m7mLBM+1MEG5oaenfuQnNnrQk1WvtcvFgN3FNDP3f2NmZ211t0mNEfSEN1h0eIg==} + engines: {node: '>=0.1.90'} + requiresBuild: true + dev: true + optional: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /common-prefix@1.1.0: + resolution: {integrity: sha512-9HAWgTP6U7K4G94u3J/oETIczTkzqZGn/cVFHDKVh/iFtZPBxuJ/qT+8Q5Np1XSXMZsRgnrpes7SrWOTJxFtaw==} + requiresBuild: true + dev: true + optional: true + + /compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + dev: true + + /component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + dev: true + + /composite-error@0.1.1: + resolution: {integrity: sha512-uKfFK2AO3V4YrzwnWYs0zO6jhfLScr30RoQ6iqG62iWXkp0G5w/Fx8W3y9ax5nwrlKzvTQzk1K6ODvChkwhCFA==} + dev: true + + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + dev: true + + /conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-changelog-writer@7.0.1: + resolution: {integrity: sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==} + engines: {node: '>=16'} + hasBin: true + dependencies: + conventional-commits-filter: 4.0.0 + handlebars: 4.7.8 + json-stringify-safe: 5.0.1 + meow: 12.1.1 + semver: 7.5.4 + split2: 4.2.0 + dev: true + + /conventional-commits-filter@4.0.0: + resolution: {integrity: sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==} + engines: {node: '>=16'} + dev: true + + /conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + dev: true + + /cookiejar@2.1.4: + resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} + dev: true + + /core-js@2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + dev: true + + /core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + requiresBuild: true + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + requiresBuild: true + dev: true + + /cosmiconfig@9.0.0(typescript@5.3.3): + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + typescript: 5.3.3 + dev: true + + /cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + requiresBuild: true + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + optional: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + dependencies: + type-fest: 1.4.0 + dev: true + + /dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + assert-plus: 1.0.0 + dev: true + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + requiresBuild: true + dev: true + optional: true + + /deep-sort-object@1.0.2: + resolution: {integrity: sha512-Ko2XVMhRhz5Mxyb+QhLX13SHgcK1vuxc6XEfOyTMlbRbv7bhSmMqUw4ywqRwKgV25W+FDIaZjPWQrdblHCTwdA==} + dependencies: + is-plain-object: 2.0.4 + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + /deprecation@2.3.1: + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + dev: true + + /dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + dependencies: + asap: 2.0.6 + wrappy: 1.0.2 + dev: true + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dependencies: + is-obj: 2.0.0 + dev: true + + /drafter.js@2.6.7: + resolution: {integrity: sha512-B6/nqEr3B9N8B4eySiPVXnFvI9Fh62Xl6GBQVncoh1aDcnYxSME5S8nZEERd4LjSYLzZchqnEC0F4oaXhSRJtA==} + engines: {node: '>= 0.12'} + requiresBuild: true + dev: true + optional: true + + /duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + dependencies: + readable-stream: 2.3.8 + dev: true + + /duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + requiresBuild: true + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.3 + dev: true + optional: true + + /ebnf-parser@0.1.10: + resolution: {integrity: sha512-urvSxVQ6XJcoTpc+/x2pWhhuOX4aljCNQpwzw+ifZvV1andZkAmiJc3Rq1oGEAQmcjiLceyMXOy1l8ms8qs2fQ==} + requiresBuild: true + dev: true + optional: true + + /ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + requiresBuild: true + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + dev: true + + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + dev: true + optional: true + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + requiresBuild: true + dependencies: + once: 1.4.0 + dev: true + optional: true + + /env-ci@11.0.0: + resolution: {integrity: sha512-apikxMgkipkgTvMdRT9MNqWx5VLOci79F4VBd7Op/7OPjjoanjdAvn6fglMCCEf/1bAh8eOiuEVCUs4V3qP3nQ==} + engines: {node: ^18.17 || >=20.6.1} + dependencies: + execa: 8.0.1 + java-properties: 1.0.2 + dev: true + + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + requiresBuild: true + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-errors@1.0.0: + resolution: {integrity: sha512-yHV74THqMJUyFKkHyN7hyENcEZM3Dj2a2IrdClY+IT4BFQHkIVwlh8s6uZfjsFydMdNHv0F5mWgAA3ajFbsvVQ==} + engines: {node: '>= 0.4'} + dev: true + + /es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + requiresBuild: true + dev: true + optional: true + + /es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + requiresBuild: true + dev: true + optional: true + + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: true + + /escodegen@0.0.21: + resolution: {integrity: sha512-BQL5g+BqyrM5HRAKt4Q4YuH9CqiEcIHWSJ8fg2PRNkGkXn/LgzeDCZzDDSX4UiljSAHgXaHgOZREQ2xOigbLzA==} + engines: {node: '>=0.4.0'} + hasBin: true + requiresBuild: true + dependencies: + esprima: 1.0.4 + estraverse: 0.0.4 + optionalDependencies: + source-map: 0.6.1 + dev: true + optional: true + + /escodegen@0.0.28: + resolution: {integrity: sha512-6ioQhg16lFs5c7XJlJFXIDxBjO4yRvXC9yK6dLNNGuhI3a/fJukHanPF6qtpjGDgAFzI8Wuq3PSIarWmaOq/5A==} + engines: {node: '>=0.4.0'} + hasBin: true + requiresBuild: true + dependencies: + esprima: 1.0.4 + estraverse: 1.3.2 + optionalDependencies: + source-map: 0.6.1 + dev: true + optional: true + + /escodegen@1.14.3: + resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} + engines: {node: '>=4.0'} + hasBin: true + requiresBuild: true + dependencies: + esprima: 4.0.1 + estraverse: 4.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + optional: true + + /esprima@1.0.4: + resolution: {integrity: sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==} + engines: {node: '>=0.4.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /esprima@1.2.2: + resolution: {integrity: sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==} + engines: {node: '>=0.4.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + requiresBuild: true + dev: true + + /estraverse@0.0.4: + resolution: {integrity: sha512-21DfBCsFJGb3HZr0vEBH1Wk1tGSbbzA8I/xtSSoy/pRtupHv0OgBmObcNGXM3ec6/pOXTOOUYY9/5bfluzz0sw==} + engines: {node: '>=0.4.0'} + requiresBuild: true + dev: true + optional: true + + /estraverse@1.3.2: + resolution: {integrity: sha512-OkbCPVUu8D9tbsLcUR+CKFRBbhZlogmkbWaP3BPERlkqzWL5Q6IdTz6eUk+b5cid2MTaCqJb2nNRGoJ8TpfPrg==} + engines: {node: '>=0.4.0'} + requiresBuild: true + dev: true + optional: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + requiresBuild: true + dev: true + optional: true + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /execa@0.7.0: + resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + dev: true + optional: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.2.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + requiresBuild: true + dev: true + + /extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + requiresBuild: true + dev: true + + /faker@4.1.0: + resolution: {integrity: sha512-ILKg69P6y/D8/wSmDXw35Ly0re8QzQ8pMfBCflsGiZG2ZjMUNLYNexA6lz5pkmJlepVdsiDFUxYAzPQ9/+iGLA==} + dev: true + + /fast-deep-equal@1.1.0: + resolution: {integrity: sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==} + requiresBuild: true + dev: true + optional: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + requiresBuild: true + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + requiresBuild: true + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + requiresBuild: true + dev: true + optional: true + + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: true + + /fastq@1.17.0: + resolution: {integrity: sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /figures@2.0.0: + resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /figures@6.0.1: + resolution: {integrity: sha512-0oY/olScYD4IhQ8u//gCPA4F3mlTn2dacYmiDm/mbDQvpmLjV4uH+zhsQ5IyXRyvqkvtUkXkNdGvg5OFJTCsuQ==} + engines: {node: '>=18'} + dependencies: + is-unicode-supported: 2.0.0 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up-simple@1.0.0: + resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + engines: {node: '>=18'} + dev: true + + /find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + locate-path: 2.0.0 + dev: true + + /find-versions@5.1.0: + resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==} + engines: {node: '>=12'} + dependencies: + semver-regex: 4.0.5 + dev: true + + /follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + /forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + requiresBuild: true + dev: true + + /form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + requiresBuild: true + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + /format-util@1.0.5: + resolution: {integrity: sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==} + requiresBuild: true + dev: true + + /formidable@2.1.2: + resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} + dependencies: + dezalgo: 1.0.4 + hexoid: 1.0.0 + once: 1.4.0 + qs: 6.11.2 + dev: true + + /from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + dev: true + + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /generate-schema@2.6.0: + resolution: {integrity: sha512-EUBKfJNzT8f91xUk5X5gKtnbdejZeE065UAJ3BCzE8VEbvwKI9Pm5jaWmqVeK1MYc1g5weAVFDTSJzN7ymtTqA==} + hasBin: true + requiresBuild: true + dependencies: + commander: 2.20.3 + type-of-is: 3.5.1 + dev: true + optional: true + + /get-caller-file@1.0.3: + resolution: {integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==} + requiresBuild: true + dev: true + optional: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + + /get-intrinsic@1.2.3: + resolution: {integrity: sha512-JIcZczvcMVE7AUOP+X72bh8HqHBRxFdz5PDHYtNG/lE3yk9b3KZBJlwFcTyPYjg3L4RLLmZJzvjxhaZVapxFrQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.0.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: true + + /get-stream@3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + requiresBuild: true + dev: true + optional: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-stream@7.0.1: + resolution: {integrity: sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==} + engines: {node: '>=16'} + dev: true + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + + /getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + requiresBuild: true + dependencies: + assert-plus: 1.0.0 + dev: true + + /git-log-parser@1.2.0: + resolution: {integrity: sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==} + dependencies: + argv-formatter: 1.0.0 + spawn-error-forwarder: 1.0.0 + split2: 1.0.0 + stream-combiner2: 1.1.1 + through2: 2.0.5 + traverse: 0.6.8 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /globby@14.0.0: + resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} + engines: {node: '>=18'} + dependencies: + '@sindresorhus/merge-streams': 1.0.0 + fast-glob: 3.3.2 + ignore: 5.3.1 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + dev: true + + /google-discovery-to-swagger@2.1.0: + resolution: {integrity: sha512-MI1gfmWPkuXCp6yH+9rfd8ZG8R1R5OIyY4WlKDTqr2+ere1gt2Ne4DSEu8HM7NkwKpuVCE5TrTRAPfm3ownMUQ==} + requiresBuild: true + dependencies: + json-schema-compatibility: 1.1.0 + jsonpath: 1.1.1 + lodash: 4.17.21 + mime-db: 1.52.0 + mime-lookup: 0.0.2 + traverse: 0.6.8 + urijs: 1.19.11 + dev: true + optional: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.3 + dev: true + + /got@2.4.0: + resolution: {integrity: sha512-FZ9t9NbPnhVEVPxjoRJuZUi6qmVlzBfSqS+FCU7npZLrTllzFeUAT1D79oz2n44qYM/Moz6eBFB9yzyKgZmHXg==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.3 + duplexify: 3.7.1 + infinity-agent: 1.0.2 + is-stream: 1.1.0 + lowercase-keys: 1.0.1 + object-assign: 2.1.1 + prepend-http: 1.0.4 + read-all-stream: 1.0.2 + statuses: 1.5.0 + timed-out: 2.0.0 + dev: true + optional: true + + /graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + requiresBuild: true + dev: true + + /graphlib@2.1.8: + resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} + dependencies: + lodash: 4.17.21 + dev: true + + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + dev: true + + /har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + requiresBuild: true + dev: true + + /har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + requiresBuild: true + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.3 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /hexoid@1.0.0: + resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} + engines: {node: '>=8'} + dev: true + + /hook-std@3.0.0: + resolution: {integrity: sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + requiresBuild: true + dev: true + optional: true + + /hosted-git-info@7.0.1: + resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + lru-cache: 10.2.0 + dev: true + + /http-proxy-agent@7.0.0: + resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + requiresBuild: true + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + dev: true + + /http-status-codes@1.4.0: + resolution: {integrity: sha512-JrT3ua+WgH8zBD3HEJYbeEgnuQaAnUeRRko/YojPAJjGmIfGD3KPU/asLdsLwKjfxOmQe5nXMQ0pt/7MyapVbQ==} + requiresBuild: true + dev: true + optional: true + + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + safer-buffer: 2.1.2 + dev: true + optional: true + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-from-esm@1.3.3: + resolution: {integrity: sha512-U3Qt/CyfFpTUv6LOP2jRTLYjphH6zg3okMfHbyqRa/W2w6hr8OsJWVggNlR4jxuojQy81TgTJTxgSkyoteRGMQ==} + engines: {node: '>=16.20'} + dependencies: + debug: 4.3.4 + import-meta-resolve: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /import-meta-resolve@4.0.0: + resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + dev: true + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + dev: true + + /index-to-position@0.1.2: + resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} + engines: {node: '>=18'} + dev: true + + /infinity-agent@1.0.2: + resolution: {integrity: sha512-QVet+evQIBtn+Cd+8nL1M8pOmBTzShfsQCgaXJoA+dV0UtKMnTPnkkkgXkM5eM+oC1qTv9UDew/LL9ElxiA/MQ==} + requiresBuild: true + dev: true + optional: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /into-stream@7.0.0: + resolution: {integrity: sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==} + engines: {node: '>=12'} + dependencies: + from2: 2.3.0 + p-is-promise: 3.0.0 + dev: true + + /invert-kv@1.0.0: + resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + requiresBuild: true + dev: true + + /is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + requiresBuild: true + dependencies: + hasown: 2.0.0 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point@1.0.0: + resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + number-is-nan: 1.0.1 + dev: true + optional: true + + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + requiresBuild: true + dev: true + optional: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + dev: true + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + dependencies: + text-extensions: 2.4.0 + dev: true + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + requiresBuild: true + dev: true + + /is-unicode-supported@2.0.0: + resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} + engines: {node: '>=18'} + dev: true + + /isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + requiresBuild: true + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + requiresBuild: true + dev: true + + /issue-parser@6.0.0: + resolution: {integrity: sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==} + engines: {node: '>=10.13'} + dependencies: + lodash.capitalize: 4.2.1 + lodash.escaperegexp: 4.1.2 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.uniqby: 4.7.0 + dev: true + + /java-properties@1.0.2: + resolution: {integrity: sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==} + engines: {node: '>= 0.6.0'} + dev: true + + /jgexml@0.3.9: + resolution: {integrity: sha512-OiucENxrgrQ0HgBhb0LewMeubJsOdKwoauSJsSk0eXBnXupW+RmeGvAcC5agdFw+V5f+OAIwmgvutOQAwnPZfw==} + requiresBuild: true + dev: true + optional: true + + /jison-lex@0.2.1: + resolution: {integrity: sha512-WCNVPRxaTWdhwJAIrBsgkGT9n6H1yNR9Lfof5LUHaMul24ySrJ1SXbVPszZfs57jwXvASLWBpd0xpFEW2oIuVA==} + engines: {node: '>=0.4'} + hasBin: true + requiresBuild: true + dependencies: + lex-parser: 0.1.4 + nomnom: 1.5.2 + dev: true + optional: true + + /jison@0.4.13: + resolution: {integrity: sha512-H/r8t7Ft4zuGyQZUI0Ai2rh6WAHJoAGG1kJhI1MGKfgFO2/mqnxr9JmYMU/LcC95+DxO2bGqVXv5LDRiv06eRA==} + engines: {node: '>=0.4'} + hasBin: true + requiresBuild: true + dependencies: + JSONSelect: 0.4.0 + cjson: 0.2.1 + ebnf-parser: 0.1.10 + escodegen: 0.0.21 + esprima: 1.0.4 + jison-lex: 0.2.1 + lex-parser: 0.1.4 + nomnom: 1.5.2 + dev: true + optional: true + + /jju@1.2.1: + resolution: {integrity: sha512-GpUVIrMsjtyZ3YDSIM3w3UGDZKjeVmIv9mW+KYnxDhovh9GnPjucVp13mdxiZmcZxjbenRAFs4gWEQIVXXvoYw==} + requiresBuild: true + dev: true + optional: true + + /js-base64@2.6.4: + resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + requiresBuild: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + requiresBuild: true + dev: true + + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-refs@3.0.15: + resolution: {integrity: sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw==} + engines: {node: '>=0.8'} + hasBin: true + dependencies: + commander: 4.1.1 + graphlib: 2.1.8 + js-yaml: 3.14.1 + lodash: 4.17.21 + native-promise-only: 0.8.1 + path-loader: 1.0.12 + slash: 3.0.0 + uri-js: 4.4.1 + transitivePeerDependencies: + - supports-color + dev: true + + /json-schema-compatibility@1.1.0: + resolution: {integrity: sha512-/ZDuZvZFAi9XnuVQHdUlUvHSxN/ksFn8KDVHiLUJWumpRagccER/tRNY1GKNMguYdJCjaTZweTjf1faugxFfjw==} + engines: {node: '>= 0.8.0'} + requiresBuild: true + dev: true + optional: true + + /json-schema-faker@0.5.5: + resolution: {integrity: sha512-MlnBqcsM1t8jdHs00ltae0rlSwWI2nrd1IfnAF+UcHsqKFrlAhrbDFVKiA8C0E860PuspKoV4oImJdvtF7aqwg==} + hasBin: true + dependencies: + json-schema-ref-parser: 6.1.0 + jsonpath-plus: 7.2.0 + dev: true + + /json-schema-ref-parser@3.3.1: + resolution: {integrity: sha512-stQTMhec2R/p2L9dH4XXRlpNCP0mY8QrLd/9Kl+8SHJQmwHtE1nDfXH4wbsSM+GkJMl8t92yZbI0OIol432CIQ==} + deprecated: Please switch to @apidevtools/json-schema-ref-parser + requiresBuild: true + dependencies: + call-me-maybe: 1.0.2 + debug: 3.2.7 + es6-promise: 4.2.8 + js-yaml: 3.14.1 + ono: 4.0.11 + z-schema: 3.25.1 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /json-schema-ref-parser@6.1.0: + resolution: {integrity: sha512-pXe9H1m6IgIpXmE5JSb8epilNTGsmTb2iPohAXpOdhqGFbQjNeHHsZxU+C8w6T81GZxSPFLeUoqDJmzxx5IGuw==} + deprecated: Please switch to @apidevtools/json-schema-ref-parser + dependencies: + call-me-maybe: 1.0.2 + js-yaml: 3.14.1 + ono: 4.0.11 + dev: true + + /json-schema-to-openapi-schema@0.4.0: + resolution: {integrity: sha512-/DY8s4l28M5ZIJBhmcUFWbZChJV5v7RCA7RMVxubyD1l5KwIceUq6+EUnqQ2q3wh/2D3Zn8bNSeAu1i2X+sMHQ==} + deprecated: This package is no longer maintained. Use @openapi-contrib/json-schema-to-openapi-schema instead. + requiresBuild: true + dependencies: + '@cloudflare/json-schema-walker': 0.1.1 + dev: true + optional: true + + /json-schema-traverse@0.3.1: + resolution: {integrity: sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==} + requiresBuild: true + dev: true + optional: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + requiresBuild: true + dev: true + + /json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + requiresBuild: true + dev: true + + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + requiresBuild: true + dev: true + + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true + + /jsonpath-plus@7.2.0: + resolution: {integrity: sha512-zBfiUPM5nD0YZSBT/o/fbCUlCcepMIdP0CJZxM1+KgA4f2T206f6VAg9e7mX35+KlMaIc5qXW34f3BnwJ3w+RA==} + engines: {node: '>=12.0.0'} + dev: true + + /jsonpath@0.2.12: + resolution: {integrity: sha512-FnZhbj4Cr7/LNMIU8e9VWKMtrE/+/NMur/7maiW3uhAPI5qUcvf/hsR9zpjWBNzl2EkrW/NFyNUZ8V5sK7R/Fw==} + requiresBuild: true + dependencies: + esprima: 1.2.2 + jison: 0.4.13 + static-eval: 0.2.3 + underscore: 1.7.0 + dev: true + optional: true + + /jsonpath@1.1.1: + resolution: {integrity: sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==} + requiresBuild: true + dependencies: + esprima: 1.2.2 + static-eval: 2.0.2 + underscore: 1.12.1 + dev: true + optional: true + + /jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + requiresBuild: true + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: true + + /lcid@1.0.0: + resolution: {integrity: sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + invert-kv: 1.0.0 + dev: true + optional: true + + /levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + requiresBuild: true + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true + optional: true + + /lex-parser@0.1.4: + resolution: {integrity: sha512-DuAEISsr1H4LOpmFLkyMc8YStiRWZCO8hMsoXAXSbgyfvs2WQhSt0+/FBv3ZU/JBFZMGcE+FWzEBSzwUU7U27w==} + requiresBuild: true + dev: true + optional: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /load-json-file@2.0.0: + resolution: {integrity: sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + graceful-fs: 4.2.11 + parse-json: 2.2.0 + pify: 2.3.0 + strip-bom: 3.0.0 + dev: true + optional: true + + /load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + dev: true + + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.5.0 + pkg-types: 1.0.3 + dev: true + + /locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + dev: true + + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: true + + /lodash.capitalize@4.2.1: + resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} + dev: true + + /lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + dev: true + + /lodash.escaperegexp@4.1.2: + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} + dev: true + + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: true + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: true + + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + dev: true + + /lodash.uniqby@4.7.0: + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /lowercase-keys@1.0.1: + resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + dev: true + + /lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + requiresBuild: true + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: true + optional: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + dev: true + + /magic-string@0.30.6: + resolution: {integrity: sha512-n62qCLbPjNjyo+owKtveQxZFZTBm+Ms6YoGD23Wew6Vw337PElFNifQpknPruVRQV57kVShPnLGo9vWxVhpPvA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /marked-terminal@6.2.0(marked@11.2.0): + resolution: {integrity: sha512-ubWhwcBFHnXsjYNsu+Wndpg0zhY4CahSpPlA70PlO0rR9r2sZpkyU+rkCsOWH+KMEkx847UpALON+HWgxowFtw==} + engines: {node: '>=16.0.0'} + peerDependencies: + marked: '>=1 <12' + dependencies: + ansi-escapes: 6.2.0 + cardinal: 2.1.1 + chalk: 5.3.0 + cli-table3: 0.6.3 + marked: 11.2.0 + node-emoji: 2.1.3 + supports-hyperlinks: 3.0.0 + dev: true + + /marked@11.2.0: + resolution: {integrity: sha512-HR0m3bvu0jAPYiIvLUUQtdg1g6D247//lvcekpHO1WMvbwDlwSkZAX9Lw4F4YHE1T0HaaNve0tuAWuV1UJ6vtw==} + engines: {node: '>= 18'} + hasBin: true + dev: true + + /marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} + engines: {node: '>= 12'} + hasBin: true + dev: true + + /mem@1.1.0: + resolution: {integrity: sha512-nOBDrc/wgpkd3X/JOhMqYR+/eLqlfLP4oQfoBA6QExIxEl+GU01oyEkwWyueyO8110pUKijtiHGhEmYoOn88oQ==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + mimic-fn: 1.2.0 + dev: true + optional: true + + /meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-lookup@0.0.2: + resolution: {integrity: sha512-6384dzMc9tsk9wBt/W9jG1hWEUPk7oPwj0ExsJCAI9peB11GbWniOWg0O/Uf8vZbvK8bkPKPtaVDtZI0FWlwbg==} + requiresBuild: true + dev: true + optional: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: true + + /mime@4.0.1: + resolution: {integrity: sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==} + engines: {node: '>=16'} + hasBin: true + dev: true + + /mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + requiresBuild: true + dev: true + optional: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /mlly@1.5.0: + resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.3.2 + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /native-promise-only@0.8.1: + resolution: {integrity: sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /nerf-dart@1.0.0: + resolution: {integrity: sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==} + dev: true + + /node-emoji@2.1.3: + resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} + engines: {node: '>=18'} + dependencies: + '@sindresorhus/is': 4.6.0 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 + dev: true + + /node-fetch@1.7.3: + resolution: {integrity: sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==} + requiresBuild: true + dependencies: + encoding: 0.1.13 + is-stream: 1.1.0 + dev: true + optional: true + + /node-readfiles@0.2.0: + resolution: {integrity: sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==} + requiresBuild: true + dependencies: + es6-promise: 3.3.1 + dev: true + optional: true + + /nomnom@1.5.2: + resolution: {integrity: sha512-fiVbT7BqxiQqjlR9U3FDGOSERFCKoXVCdxV2FwZuNN7/cmJ42iQx35nUFOAFDcyvemu9Adp+IlsCGlKQYLmBKw==} + deprecated: Package no longer supported. Contact support@npmjs.com for more info. + requiresBuild: true + dependencies: + colors: 0.5.1 + underscore: 1.1.7 + dev: true + optional: true + + /nopt@3.0.6: + resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} + hasBin: true + requiresBuild: true + dependencies: + abbrev: 1.1.1 + dev: true + optional: true + + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + requiresBuild: true + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + dev: true + optional: true + + /normalize-package-data@6.0.0: + resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + is-core-module: 2.13.1 + semver: 7.5.4 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-url@8.0.0: + resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} + engines: {node: '>=14.16'} + dev: true + + /npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + path-key: 2.0.1 + dev: true + optional: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.2.0: + resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /npm@10.4.0: + resolution: {integrity: sha512-RS7Mx0OVfXlOcQLRePuDIYdFCVBPCNapWHplDK+mh7GDdP/Tvor4ocuybRRPSvfcRb2vjRJt1fHCqw3cr8qACQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + dev: true + bundledDependencies: + - '@isaacs/string-locale-compare' + - '@npmcli/arborist' + - '@npmcli/config' + - '@npmcli/fs' + - '@npmcli/map-workspaces' + - '@npmcli/package-json' + - '@npmcli/promise-spawn' + - '@npmcli/run-script' + - '@sigstore/tuf' + - abbrev + - archy + - cacache + - chalk + - ci-info + - cli-columns + - cli-table3 + - columnify + - fastest-levenshtein + - fs-minipass + - glob + - graceful-fs + - hosted-git-info + - ini + - init-package-json + - is-cidr + - json-parse-even-better-errors + - libnpmaccess + - libnpmdiff + - libnpmexec + - libnpmfund + - libnpmhook + - libnpmorg + - libnpmpack + - libnpmpublish + - libnpmsearch + - libnpmteam + - libnpmversion + - make-fetch-happen + - minimatch + - minipass + - minipass-pipeline + - ms + - node-gyp + - nopt + - normalize-package-data + - npm-audit-report + - npm-install-checks + - npm-package-arg + - npm-pick-manifest + - npm-profile + - npm-registry-fetch + - npm-user-validate + - npmlog + - p-map + - pacote + - parse-conflict-json + - proc-log + - qrcode-terminal + - read + - semver + - spdx-expression-parse + - ssri + - supports-color + - tar + - text-table + - tiny-relative-date + - treeverse + - validate-npm-package-name + - which + - write-file-atomic + + /number-is-nan@1.0.1: + resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + requiresBuild: true + dev: true + + /object-assign@2.1.1: + resolution: {integrity: sha512-CdsOUYIh5wIiozhJ3rLQgmUTgcyzFwZZrqhkKhODMoGtPKM+wt0h0CNIoauJWMsS9822EdzPsF/6mb4nLvPN5g==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /ono@4.0.11: + resolution: {integrity: sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==} + dependencies: + format-util: 1.0.5 + dev: true + + /openapi-typescript@6.7.4: + resolution: {integrity: sha512-EZyeW9Wy7UDCKv0iYmKrq2pVZtquXiD/YHiUClAKqiMi42nodx/EQH11K6fLqjt1IZlJmVokrAsExsBMM2RROQ==} + hasBin: true + dependencies: + ansi-colors: 4.1.3 + fast-glob: 3.3.2 + js-yaml: 4.1.0 + supports-color: 9.4.0 + undici: 5.28.2 + yargs-parser: 21.1.1 + dev: true + + /optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + requiresBuild: true + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + dev: true + optional: true + + /os-locale@2.1.0: + resolution: {integrity: sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + execa: 0.7.0 + lcid: 1.0.0 + mem: 1.1.0 + dev: true + optional: true + + /p-each-series@3.0.0: + resolution: {integrity: sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==} + engines: {node: '>=12'} + dev: true + + /p-filter@4.1.0: + resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} + engines: {node: '>=18'} + dependencies: + p-map: 7.0.1 + dev: true + + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + requiresBuild: true + dev: true + optional: true + + /p-is-promise@3.0.0: + resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} + engines: {node: '>=8'} + dev: true + + /p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + p-try: 1.0.0 + dev: true + + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + dependencies: + yocto-queue: 1.0.0 + dev: true + + /p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + p-limit: 1.3.0 + dev: true + + /p-map@7.0.1: + resolution: {integrity: sha512-2wnaR0XL/FDOj+TgpDuRb2KTjLnu3Fma6b1ZUwGY7LcqenMcvP/YFpjpbPKY6WVGsbuJZRuoUz8iPrt8ORnAFw==} + engines: {node: '>=18'} + dev: true + + /p-reduce@2.1.0: + resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} + engines: {node: '>=8'} + dev: true + + /p-reduce@3.0.0: + resolution: {integrity: sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==} + engines: {node: '>=12'} + dev: true + + /p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + requiresBuild: true + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-json@2.2.0: + resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + error-ex: 1.3.2 + dev: true + optional: true + + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parse-json@8.1.0: + resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} + engines: {node: '>=18'} + dependencies: + '@babel/code-frame': 7.23.5 + index-to-position: 0.1.2 + type-fest: 4.10.2 + dev: true + + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + requiresBuild: true + dev: true + + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + requiresBuild: true + dev: true + optional: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-loader@1.0.12: + resolution: {integrity: sha512-n7oDG8B+k/p818uweWrOixY9/Dsr89o2TkCm6tOTex3fpdo2+BFDgR+KpB37mGKBRsBAlR8CIJMFN0OEy/7hIQ==} + dependencies: + native-promise-only: 0.8.1 + superagent: 7.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + requiresBuild: true + dev: true + optional: true + + /path-to-regexp@1.8.0: + resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} + dependencies: + isarray: 0.0.1 + dev: true + + /path-type@2.0.0: + resolution: {integrity: sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + pify: 2.3.0 + dev: true + optional: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + dev: true + + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + requiresBuild: true + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: true + + /pkg-conf@2.1.0: + resolution: {integrity: sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==} + engines: {node: '>=4'} + dependencies: + find-up: 2.1.0 + load-json-file: 4.0.0 + dev: true + + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.1 + mlly: 1.5.0 + pathe: 1.1.2 + dev: true + + /pluralize@1.1.6: + resolution: {integrity: sha512-UZuZBoEfkgswguqcjVu6V59DVrILlC7GjclesLS6SA+u/+esH/f1FBW+BtzSMAz1mENIlM0Eo/89AIjxAFidQA==} + requiresBuild: true + dev: true + optional: true + + /postcss@8.4.33: + resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + requiresBuild: true + dev: true + optional: true + + /prepend-http@1.0.4: + resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + requiresBuild: true + dev: true + + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: true + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + /pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + requiresBuild: true + dev: true + optional: true + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + requiresBuild: true + dev: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + requiresBuild: true + dev: true + + /q@0.9.7: + resolution: {integrity: sha512-ijt0LhxWClXBtc1RCt8H0WhlZLAdVX26nWbpsJy+Hblmp81d2F/pFsvlrJhJDDruFHM+ECtxP0H0HzGSrARkwg==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + requiresBuild: true + dev: true + optional: true + + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + requiresBuild: true + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /raml-parser@0.8.18: + resolution: {integrity: sha512-WpKlKhxN7mXJ1Kf5/7f7+EMOsXNwjI4TbrY6TkbR+bzzdFMTjz8oqPJdDkr7gA+ow5vvzCfe16+tUhmSNnkcNQ==} + hasBin: true + requiresBuild: true + dependencies: + got: 2.4.0 + jju: 1.2.1 + json-schema-ref-parser: 3.3.1 + object-assign: 4.1.1 + pluralize: 1.1.6 + q: 0.9.7 + uritemplate: 0.3.4 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /raml-to-swagger@1.1.0: + resolution: {integrity: sha512-aDsSklVNG1xOAXenzmX8+Pfq+G95esQNx5WQo/qa/AtVPm3KsM6zI6hw3oYE6whocfnogwpnbJSFbTrADwpZIg==} + hasBin: true + requiresBuild: true + dependencies: + http-status-codes: 1.4.0 + json-schema-compatibility: 1.1.0 + jsonpath: 0.2.12 + lodash: 4.17.21 + urijs: 1.19.11 + dev: true + optional: true + + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /read-all-stream@1.0.2: + resolution: {integrity: sha512-ZCvB3TY2z5hGzzNe7zotaFsuRt4ODw5o+EVjfDVwlFG3ihfTd0k8jy9ffWZ4V1tCm0UHscbiS9KYREaq8eGE1Q==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /read-pkg-up@11.0.0: + resolution: {integrity: sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==} + engines: {node: '>=18'} + deprecated: Renamed to read-package-up + dependencies: + find-up-simple: 1.0.0 + read-pkg: 9.0.1 + type-fest: 4.10.2 + dev: true + + /read-pkg-up@2.0.0: + resolution: {integrity: sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + find-up: 2.1.0 + read-pkg: 2.0.0 + dev: true + optional: true + + /read-pkg@2.0.0: + resolution: {integrity: sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + load-json-file: 2.0.0 + normalize-package-data: 2.5.0 + path-type: 2.0.0 + dev: true + optional: true + + /read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.0 + parse-json: 8.1.0 + type-fest: 4.10.2 + unicorn-magic: 0.1.0 + dev: true + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + requiresBuild: true + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /redeyed@2.1.1: + resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} + dependencies: + esprima: 4.0.1 + dev: true + + /registry-auth-token@5.0.2: + resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} + engines: {node: '>=14'} + dependencies: + '@pnpm/npm-conf': 2.2.2 + dev: true + + /request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + requiresBuild: true + dependencies: + aws-sign2: 0.7.0 + aws4: 1.12.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + + /require-main-filename@1.0.1: + resolution: {integrity: sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==} + requiresBuild: true + dev: true + optional: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + requiresBuild: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + optional: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rollup@4.9.6: + resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.9.6 + '@rollup/rollup-android-arm64': 4.9.6 + '@rollup/rollup-darwin-arm64': 4.9.6 + '@rollup/rollup-darwin-x64': 4.9.6 + '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 + '@rollup/rollup-linux-arm64-gnu': 4.9.6 + '@rollup/rollup-linux-arm64-musl': 4.9.6 + '@rollup/rollup-linux-riscv64-gnu': 4.9.6 + '@rollup/rollup-linux-x64-gnu': 4.9.6 + '@rollup/rollup-linux-x64-musl': 4.9.6 + '@rollup/rollup-win32-arm64-msvc': 4.9.6 + '@rollup/rollup-win32-ia32-msvc': 4.9.6 + '@rollup/rollup-win32-x64-msvc': 4.9.6 + fsevents: 2.3.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + requiresBuild: true + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + requiresBuild: true + dev: true + + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + requiresBuild: true + dev: true + + /semantic-release@23.0.0(typescript@5.3.3): + resolution: {integrity: sha512-Jz7jEWO2igTtske112gC4PPE2whCMVrsgxUPG3/SZI7VE357suIUZFlJd1Yu0g2I6RPc2HxNEfUg7KhmDTjwqg==} + engines: {node: '>=20.8.1'} + hasBin: true + dependencies: + '@semantic-release/commit-analyzer': 11.1.0(semantic-release@23.0.0) + '@semantic-release/error': 4.0.0 + '@semantic-release/github': 9.2.6(semantic-release@23.0.0) + '@semantic-release/npm': 11.0.2(semantic-release@23.0.0) + '@semantic-release/release-notes-generator': 12.1.0(semantic-release@23.0.0) + aggregate-error: 5.0.0 + cosmiconfig: 9.0.0(typescript@5.3.3) + debug: 4.3.4 + env-ci: 11.0.0 + execa: 8.0.1 + figures: 6.0.1 + find-versions: 5.1.0 + get-stream: 6.0.1 + git-log-parser: 1.2.0 + hook-std: 3.0.0 + hosted-git-info: 7.0.1 + import-from-esm: 1.3.3 + lodash-es: 4.17.21 + marked: 11.2.0 + marked-terminal: 6.2.0(marked@11.2.0) + micromatch: 4.0.5 + p-each-series: 3.0.0 + p-reduce: 3.0.0 + read-pkg-up: 11.0.0 + resolve-from: 5.0.0 + semver: 7.5.4 + semver-diff: 4.0.0 + signale: 1.4.0 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /semver-diff@4.0.0: + resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} + engines: {node: '>=12'} + dependencies: + semver: 7.5.4 + dev: true + + /semver-regex@4.0.5: + resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} + engines: {node: '>=12'} + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + requiresBuild: true + dev: true + optional: true + + /set-function-length@1.2.0: + resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + function-bind: 1.1.2 + get-intrinsic: 1.2.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + shebang-regex: 1.0.0 + dev: true + optional: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shiki@0.14.7: + resolution: {integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==} + dependencies: + ansi-sequence-parser: 1.1.1 + jsonc-parser: 3.2.1 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 + dev: true + + /should-equal@2.0.0: + resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} + requiresBuild: true + dependencies: + should-type: 1.4.0 + dev: true + optional: true + + /should-format@3.0.3: + resolution: {integrity: sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==} + requiresBuild: true + dependencies: + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + dev: true + optional: true + + /should-type-adaptors@1.1.0: + resolution: {integrity: sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==} + requiresBuild: true + dependencies: + should-type: 1.4.0 + should-util: 1.0.1 + dev: true + optional: true + + /should-type@1.4.0: + resolution: {integrity: sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==} + requiresBuild: true + dev: true + optional: true + + /should-util@1.0.1: + resolution: {integrity: sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==} + requiresBuild: true + dev: true + optional: true + + /should@13.2.3: + resolution: {integrity: sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==} + requiresBuild: true + dependencies: + should-equal: 2.0.0 + should-format: 3.0.3 + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + should-util: 1.0.1 + dev: true + optional: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.3 + object-inspect: 1.13.1 + dev: true + + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + requiresBuild: true + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /signale@1.4.0: + resolution: {integrity: sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==} + engines: {node: '>=6'} + dependencies: + chalk: 2.4.2 + figures: 2.0.0 + pkg-conf: 2.1.0 + dev: true + + /skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} + dependencies: + unicode-emoji-modifier-base: 1.0.0 + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.6.0: + resolution: {integrity: sha512-mTozplhTX4tLKIHYji92OTZzVyZvi+Z1qRZDeBvQFI2XUB89wrRoj/xXad3c9NZ1GPJXXRvB+k41PQCPTMC+aA==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + + /spawn-error-forwarder@1.0.0: + resolution: {integrity: sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==} + dev: true + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + requiresBuild: true + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-exceptions@2.4.0: + resolution: {integrity: sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==} + requiresBuild: true + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + requiresBuild: true + dependencies: + spdx-exceptions: 2.4.0 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + requiresBuild: true + dev: true + + /split2@1.0.0: + resolution: {integrity: sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==} + dependencies: + through2: 2.0.5 + dev: true + + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + requiresBuild: true + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /static-eval@0.2.3: + resolution: {integrity: sha512-tAlLR3cdYw5GOEJfGqsL3YqwwldzljwqoOJ/jjFMmNRI9/iqve9RX4XE3vJs1KKsQ+ECT1u9o7a6NonewRl1lg==} + requiresBuild: true + dependencies: + escodegen: 0.0.28 + dev: true + optional: true + + /static-eval@2.0.2: + resolution: {integrity: sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==} + requiresBuild: true + dependencies: + escodegen: 1.14.3 + dev: true + optional: true + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + requiresBuild: true + dev: true + optional: true + + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: true + + /stream-combiner2@1.1.1: + resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} + dependencies: + duplexer2: 0.1.4 + readable-stream: 2.3.8 + dev: true + + /stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + requiresBuild: true + dev: true + optional: true + + /string-width@1.0.2: + resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.0.1 + dev: true + optional: true + + /string-width@2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + dev: true + optional: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + requiresBuild: true + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + ansi-regex: 2.1.1 + dev: true + optional: true + + /strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + ansi-regex: 3.0.1 + dev: true + optional: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + requiresBuild: true + dev: true + + /strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + dependencies: + acorn: 8.11.3 + dev: true + + /superagent@7.1.6: + resolution: {integrity: sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==} + engines: {node: '>=6.4.0 <13 || >=14'} + deprecated: Please downgrade to v7.1.5 if you need IE/ActiveXObject support OR upgrade to v8.0.0 as we no longer support IE and published an incorrect patch version (see https://github.com/visionmedia/superagent/issues/1731) + dependencies: + component-emitter: 1.3.1 + cookiejar: 2.1.4 + debug: 4.3.4 + fast-safe-stringify: 2.1.1 + form-data: 4.0.0 + formidable: 2.1.2 + methods: 1.1.2 + mime: 2.6.0 + qs: 6.11.2 + readable-stream: 3.6.2 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + dev: true + + /supports-hyperlinks@3.0.0: + resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==} + engines: {node: '>=14.18'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + requiresBuild: true + dev: true + optional: true + + /swagger-converter@1.5.1: + resolution: {integrity: sha512-u98/Gt+fAnS95WoUDgWuOiN8MymrNCUdcLoD4Q6szy4nAj9BPCVRzwvJauqqj7+jKcB1ZEKf9vacQKSXEr3OBw==} + requiresBuild: true + dependencies: + common-prefix: 1.1.0 + urijs: 1.19.11 + dev: true + optional: true + + /swagger-methods@1.0.8: + resolution: {integrity: sha512-G6baCwuHA+C5jf4FNOrosE4XlmGsdjbOjdBK4yuiDDj/ro9uR4Srj3OR84oQMT8F3qKp00tYNv0YN730oTHPZA==} + deprecated: This package is no longer being maintained. + dev: true + + /swagger-schema-official@2.0.0-bab6bed: + resolution: {integrity: sha512-rCC0NWGKr/IJhtRuPq/t37qvZHI/mH4I4sxflVM+qgVe5Z2uOCivzWaVbuioJaB61kvm5UvB7b49E+oBY0M8jA==} + dev: true + + /swagger2openapi@2.9.4: + resolution: {integrity: sha512-dc9gxEkxuJYPz9y0Fx3ypsaiA2enxHxz7Q0tlyjJ01TopT2aR/EuxZhIWkslaN/Fx5FTT2OOSlP5VnvTbvIj+Q==} + hasBin: true + requiresBuild: true + dependencies: + ajv: 5.5.2 + call-me-maybe: 1.0.2 + co: 4.6.0 + jgexml: 0.3.9 + js-yaml: 3.14.1 + node-fetch: 1.7.3 + node-readfiles: 0.2.0 + should: 13.2.3 + yargs: 9.0.1 + dev: true + optional: true + + /sway@2.0.6: + resolution: {integrity: sha512-0HRT2WuU44XIdq+eCiMx67Bl/kiEKORP+4j+Wt89rFjoR5Dwx2hmU4PkMA6hnd48XLfS50olIac3pQGrV/wv7w==} + dependencies: + debug: 3.2.7 + faker: 4.1.0 + js-base64: 2.6.4 + js-yaml: 3.14.1 + json-refs: 3.0.15 + json-schema-faker: 0.5.5 + lodash: 4.17.21 + native-promise-only: 0.8.1 + path-to-regexp: 1.8.0 + swagger-methods: 1.0.8 + swagger-schema-official: 2.0.0-bab6bed + z-schema: 3.25.1 + transitivePeerDependencies: + - supports-color + dev: true + + /temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} + dev: true + + /tempy@3.1.0: + resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + engines: {node: '>=14.16'} + dependencies: + is-stream: 3.0.0 + temp-dir: 3.0.0 + type-fest: 2.19.0 + unique-string: 3.0.0 + dev: true + + /text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + dev: true + + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + dev: true + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /timed-out@2.0.0: + resolution: {integrity: sha512-pqqJOi1rF5zNs/ps4vmbE4SFCrM4iR7LW+GHAsHqO/EumqbIWceioevYLM5xZRgQSH6gFgL9J/uB7EcJhQ9niQ==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + dev: true + + /tinypool@0.8.2: + resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + engines: {node: '>=14.0.0'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + requiresBuild: true + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + dev: true + + /traverse@0.6.8: + resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} + engines: {node: '>= 0.4'} + dev: true + + /tsx@4.7.0: + resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + esbuild: 0.19.12 + get-tsconfig: 4.7.2 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + requiresBuild: true + dependencies: + safe-buffer: 5.2.1 + dev: true + + /tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + requiresBuild: true + dev: true + + /type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + requiresBuild: true + dependencies: + prelude-ls: 1.1.2 + dev: true + optional: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true + + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: true + + /type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + dev: true + + /type-fest@4.10.2: + resolution: {integrity: sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==} + engines: {node: '>=16'} + dev: true + + /type-of-is@3.5.1: + resolution: {integrity: sha512-SOnx8xygcAh8lvDU2exnK2bomASfNjzB3Qz71s2tw9QnX8fkAo7aC+D0H7FV0HjRKj94CKV2Hi71kVkkO6nOxg==} + engines: {node: '>=0.10.5'} + requiresBuild: true + dev: true + optional: true + + /typedoc@0.25.7(typescript@5.3.3): + resolution: {integrity: sha512-m6A6JjQRg39p2ZVRIN3NKXgrN8vzlHhOS+r9ymUYtcUP/TIQPvWSq7YgE5ZjASfv5Vd5BW5xrir6Gm2XNNcOow==} + engines: {node: '>= 16'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x + dependencies: + lunr: 2.3.9 + marked: 4.3.0 + minimatch: 9.0.3 + shiki: 0.14.7 + typescript: 5.3.3 + dev: true + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + dev: true + + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /underscore@1.1.7: + resolution: {integrity: sha512-w4QtCHoLBXw1mjofIDoMyexaEdWGMedWNDhlWTtT1V1lCRqi65Pnoygkh6+WRdr+Bm8ldkBNkNeCsXGMlQS9HQ==} + requiresBuild: true + dev: true + optional: true + + /underscore@1.12.1: + resolution: {integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==} + requiresBuild: true + dev: true + optional: true + + /underscore@1.7.0: + resolution: {integrity: sha512-cp0oQQyZhUM1kpJDLdGO1jPZHgS/MpzoWYfe9+CM2h/QGDZlqwT2T3YGukuBdaNJ/CAPoeyAZRRHz8JFo176vA==} + requiresBuild: true + dev: true + optional: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /undici@5.28.2: + resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.1.0 + dev: true + + /unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + dev: true + + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + dev: true + + /unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} + dependencies: + crypto-random-string: 4.0.0 + dev: true + + /universal-user-agent@6.0.1: + resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} + dev: true + + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + requiresBuild: true + dependencies: + punycode: 2.3.1 + dev: true + + /urijs@1.19.11: + resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} + dev: true + + /uritemplate@0.3.4: + resolution: {integrity: sha512-enADBvHfhjrwxFMTVWeIIYz51SZ91uC6o2MR/NQTVljJB6HTZ8eQL3Q7JBj3RxNISA14MOwJaU3vpf5R6dyxHA==} + requiresBuild: true + dev: true + optional: true + + /url-join@5.0.0: + resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + requiresBuild: true + dev: true + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + requiresBuild: true + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + + /validator@10.11.0: + resolution: {integrity: sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==} + engines: {node: '>= 0.10'} + dev: true + + /verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + requiresBuild: true + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: true + + /vite-node@1.2.2(@types/node@20.11.16): + resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.0.12(@types/node@20.11.16) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite@5.0.12(@types/node@20.11.16): + resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.11.16 + esbuild: 0.19.12 + postcss: 8.4.33 + rollup: 4.9.6 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitest@1.2.2(@types/node@20.11.16): + resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': ^1.0.0 + '@vitest/ui': ^1.0.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/node': 20.11.16 + '@vitest/expect': 1.2.2 + '@vitest/runner': 1.2.2 + '@vitest/snapshot': 1.2.2 + '@vitest/spy': 1.2.2 + '@vitest/utils': 1.2.2 + acorn-walk: 8.3.2 + cac: 6.7.14 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.6 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 1.3.0 + tinybench: 2.6.0 + tinypool: 0.8.2 + vite: 5.0.12(@types/node@20.11.16) + vite-node: 1.2.2(@types/node@20.11.16) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vscode-oniguruma@1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + dev: true + + /vscode-textmate@8.0.0: + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} + dev: true + + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + requiresBuild: true + dev: true + optional: true + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + requiresBuild: true + dependencies: + isexe: 2.0.0 + dev: true + optional: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + optional: true + + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true + + /wrap-ansi@2.1.0: + resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + string-width: 1.0.2 + strip-ansi: 3.0.1 + dev: true + optional: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /xml2js@0.4.23: + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + engines: {node: '>=4.0.0'} + dependencies: + sax: 1.3.0 + xmlbuilder: 11.0.1 + dev: true + + /xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + dev: true + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: true + + /y18n@3.2.2: + resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} + requiresBuild: true + dev: true + optional: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + requiresBuild: true + dev: true + optional: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs-parser@7.0.0: + resolution: {integrity: sha512-WhzC+xgstid9MbVUktco/bf+KJG+Uu6vMX0LN1sLJvwmbCQVxb4D8LzogobonKycNasCZLdOzTAk1SK7+K7swg==} + requiresBuild: true + dependencies: + camelcase: 4.1.0 + dev: true + optional: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yargs@9.0.1: + resolution: {integrity: sha512-XS0NJoM9Iz0azh1cdgfLF5VFK6BSWfrrqA0V2tIx3fV6aGrWCseVDwOkIBg746ev0hes59od5ZvQAfdET4H0pw==} + requiresBuild: true + dependencies: + camelcase: 4.1.0 + cliui: 3.2.0 + decamelize: 1.2.0 + get-caller-file: 1.0.3 + os-locale: 2.1.0 + read-pkg-up: 2.0.0 + require-directory: 2.1.1 + require-main-filename: 1.0.1 + set-blocking: 2.0.0 + string-width: 2.1.1 + which-module: 2.0.1 + y18n: 3.2.2 + yargs-parser: 7.0.0 + dev: true + optional: true + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + + /z-schema@3.25.1: + resolution: {integrity: sha512-7tDlwhrBG+oYFdXNOjILSurpfQyuVgkRe3hB2q8TEssamDHB7BbLWYkYO98nTn0FibfdFroFKDjndbgufAgS/Q==} + hasBin: true + dependencies: + core-js: 2.6.12 + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 10.11.0 + optionalDependencies: + commander: 2.20.3 + dev: true diff --git a/scripts/update-ts-definitions.ts b/scripts/update-ts-definitions.ts new file mode 100644 index 0000000..ca22b6c --- /dev/null +++ b/scripts/update-ts-definitions.ts @@ -0,0 +1,22 @@ +import converter from 'api-spec-converter' +import openapiTS from "openapi-typescript"; +import * as fs from "fs"; + +converter.convert({ + from: 'wadl', + to: 'openapi_3', + source: 'https://docs.atlassian.com/software/jira/docs/api/REST/9.13.0/jira-rest-plugin.wadl', +}).then(result => { + fs.writeFileSync('openapi.json', result.stringify()) + + return result; +}).then(async result => { + const schema = await openapiTS('openapi.json', {}) + const cloudSchema = await openapiTS('https://dac-static.atlassian.com/cloud/jira/platform/swagger-v3.v3.json', {}) + const softwareSchema = await openapiTS('https://dac-static.atlassian.com/cloud/jira/software/swagger.v3.json?_v=1.6844.0-0.1297.0', {}) + const serviceDeskSchema = await openapiTS('https://dac-static.atlassian.com/cloud/jira/service-desk/swagger.v3.json', {}) + fs.writeFileSync('src/generated/openapi-server.ts', schema) + fs.writeFileSync('src/generated/openapi-cloud.ts', cloudSchema) + fs.writeFileSync('src/generated/openapi-software.ts', softwareSchema) + fs.writeFileSync('src/generated/openapi-service-desk.ts', serviceDeskSchema) +}) diff --git a/src/custom/index.ts b/src/custom/index.ts new file mode 100644 index 0000000..5d1b1d3 --- /dev/null +++ b/src/custom/index.ts @@ -0,0 +1,206 @@ +export interface JiraAvatarUrls { + "16x16": string; + "24x24": string; + "32x32": string; + "48x48": string; +} + +export interface JiraUser { + active: boolean; + avatarUrls: JiraAvatarUrls; + displayName: string; + emailAddress: string; + key: string; + name: string; + self: string; + timeZone: string; + deleted?: boolean; + locale?: string; +} + +export interface JiraIssueType { + avatarId: number; + description: string; + iconUrl: string; + id: string; + name: string; + self: string; + subtask: boolean; +} + +export interface JiraField { + id: string; + name: string; + custom: boolean; + orderable: boolean; + navigable: boolean; + searchable: boolean; + clauseNames: string[]; + schema: { + type: string; + system: string; + custom: string; + custom_id: string; + items: string; + }; +} + +export interface JiraPriority { + iconUrl: string; + id: string; + name: string; + self: string; +} + +export interface JiraComments { + comments: { + author: JiraUser; + updateAuthor?: JiraUser; + body: string; + created: string; + id: string; + self: string; + updated: string; + }[]; + maxResults: number; + startAt: number; + total: number; +} + +export interface JiraStatus { + description: string; + iconUrl: string; + id: string; + name: string; + self: string; + statusCategory: { + colorName: string; + id: number; + key: string; + name: string; + self: string; + }; +} + +export interface JiraInwardOutwardIssue { + fields: { + issuetype: JiraIssueType; + priority: JiraPriority; + status: JiraStatus; + summary: string; + }; + id: string; + key: string; + self: string; +} + +export interface JiraTransition { + id: string; + name: string; + to: JiraStatus; +} + +export interface JiraIssueLink { + id: string; + inwardIssue?: JiraInwardOutwardIssue; + outwardIssue?: JiraInwardOutwardIssue; + self: string; + type: { + id: string; + inward: string; + name: string; + outward: string; + self: string; + }; +} + +export interface JiraChangeLog { + histories: { + author: JiraUser; + created: string; + id: string; + items: { + field: string; + fieldtype: string; + to: string; + toString: string; + }[]; + }[]; + maxResults: number; + startAt: number; + total: number; +} + +export interface JiraAttachment { + author?: JiraUser; + content: string; + created: string; + filename: string; + id: string; + mimeType: string; + self: string; + size: number; + thumbnail?: string; +} + +export interface JiraIssue { + fields: { + assignee?: JiraUser | null; + created: string; + creator?: JiraUser; + fixVersions: { + archived: boolean; + id: string; + name: string; + released: boolean; + self: string; + }[]; + issuetype: JiraIssueType; + labels?: string[]; + parent?: JiraIssue; + priority: JiraPriority; + reporter: JiraUser; + resolutiondate: string; + status: JiraStatus; + updated: string; + aggregatetimeestimate?: number; + components: { + id: string; + name: string; + self: string; + }[]; + subtasks: unknown[]; + summary: string; + description: string; + attachment?: JiraAttachment[]; + comment: JiraComments; + issuelinks: JiraIssueLink[]; + [key: string]: unknown; + }; + renderedFields?: { + comment: JiraComments; + }; + transitions?: JiraTransition[]; + changelog: JiraChangeLog; + editMeta?: unknown; + loading: boolean; + id: string; + key: string; + self: string; +} + +export interface JiraProjectCategory { + self: string; + id: string; + name: string; + description: string; +} + +export interface JiraProject { + id: string; + key: string; + self: string; + name: string; + avatarUrls?: JiraAvatarUrls; + projectCategory: JiraProjectCategory; +} diff --git a/src/generated/openapi-cloud.ts b/src/generated/openapi-cloud.ts new file mode 100644 index 0000000..db4a373 --- /dev/null +++ b/src/generated/openapi-cloud.ts @@ -0,0 +1,46589 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ + +export interface paths { + "/rest/api/3/announcementBanner": { + /** + * Get announcement banner configuration + * @description Returns the current announcement banner configuration. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getBanner"]; + /** + * Update announcement banner configuration + * @description Updates the announcement banner configuration. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setBanner"]; + }; + "/rest/api/3/app/field/value": { + /** + * Update custom fields + * @description Updates the value of one or more custom fields on one or more issues. Combinations of custom field and issue should be unique within the request. + * + * Apps can only perform this operation on [custom fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) declared in their own manifests. + * + * **[Permissions](#permissions) required:** Only the app that owns the custom field or custom field type can update its values with this operation. + */ + post: operations["updateMultipleCustomFieldValues"]; + }; + "/rest/api/3/app/field/{fieldIdOrKey}/context/configuration": { + /** + * Get custom field configurations + * @description Returns a [paginated](#pagination) list of configurations for a custom field of a [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created by a [Forge app](https://developer.atlassian.com/platform/forge/). + * + * The result can be filtered by one of these criteria: + * + * * `id`. + * * `fieldContextId`. + * * `issueId`. + * * `projectKeyOrId` and `issueTypeId`. + * + * Otherwise, all configurations are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the Forge app that provided the custom field type. + */ + get: operations["getCustomFieldConfiguration"]; + /** + * Update custom field configurations + * @description Update the configuration for contexts of a custom field of a [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created by a [Forge app](https://developer.atlassian.com/platform/forge/). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the Forge app that created the custom field type. + */ + put: operations["updateCustomFieldConfiguration"]; + }; + "/rest/api/3/app/field/{fieldIdOrKey}/value": { + /** + * Update custom field value + * @description Updates the value of a custom field on one or more issues. + * + * Apps can only perform this operation on [custom fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) declared in their own manifests. + * + * **[Permissions](#permissions) required:** Only the app that owns the custom field or custom field type can update its values with this operation. + */ + put: operations["updateCustomFieldValue"]; + }; + "/rest/api/3/application-properties": { + /** + * Get application property + * @description Returns all application properties or an application property. + * + * If you specify a value for the `key` parameter, then an application property is returned as an object (not in an array). Otherwise, an array of all editable application properties is returned. See [Set application property](#api-rest-api-3-application-properties-id-put) for descriptions of editable properties. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getApplicationProperty"]; + }; + "/rest/api/3/application-properties/advanced-settings": { + /** + * Get advanced settings + * @description Returns the application properties that are accessible on the *Advanced Settings* page. To navigate to the *Advanced Settings* page in Jira, choose the Jira icon > **Jira settings** > **System**, **General Configuration** and then click **Advanced Settings** (in the upper right). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAdvancedSettings"]; + }; + "/rest/api/3/application-properties/{id}": { + /** + * Set application property + * @description Changes the value of an application property. For example, you can change the value of the `jira.clone.prefix` from its default value of *CLONE -* to *Clone -* if you prefer sentence case capitalization. Editable properties are described below along with their default values. + * + * #### Advanced settings #### + * + * The advanced settings below are also accessible in [Jira](https://confluence.atlassian.com/x/vYXKM). + * + * | Key | Description | Default value | + * | -- | -- | -- | + * | `jira.clone.prefix` | The string of text prefixed to the title of a cloned issue. | `CLONE -` | + * | `jira.date.picker.java.format` | The date format for the Java (server-side) generated dates. This must be the same as the `jira.date.picker.javascript.format` format setting. | `d/MMM/yy` | + * | `jira.date.picker.javascript.format` | The date format for the JavaScript (client-side) generated dates. This must be the same as the `jira.date.picker.java.format` format setting. | `%e/%b/%y` | + * | `jira.date.time.picker.java.format` | The date format for the Java (server-side) generated date times. This must be the same as the `jira.date.time.picker.javascript.format` format setting. | `dd/MMM/yy h:mm a` | + * | `jira.date.time.picker.javascript.format` | The date format for the JavaScript (client-side) generated date times. This must be the same as the `jira.date.time.picker.java.format` format setting. | `%e/%b/%y %I:%M %p` | + * | `jira.issue.actions.order` | The default order of actions (such as *Comments* or *Change history*) displayed on the issue view. | `asc` | + * | `jira.view.issue.links.sort.order` | The sort order of the list of issue links on the issue view. | `type, status, priority` | + * | `jira.comment.collapsing.minimum.hidden` | The minimum number of comments required for comment collapsing to occur. A value of `0` disables comment collapsing. | `4` | + * | `jira.newsletter.tip.delay.days` | The number of days before a prompt to sign up to the Jira Insiders newsletter is shown. A value of `-1` disables this feature. | `7` | + * + * + * #### Look and feel #### + * + * The settings listed below adjust the [look and feel](https://confluence.atlassian.com/x/VwCLLg). + * + * | Key | Description | Default value | + * | -- | -- | -- | + * | `jira.lf.date.time` | The [ time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `h:mm a` | + * | `jira.lf.date.day` | The [ day format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `EEEE h:mm a` | + * | `jira.lf.date.complete` | The [ date and time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `dd/MMM/yy h:mm a` | + * | `jira.lf.date.dmy` | The [ date format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `dd/MMM/yy` | + * | `jira.date.time.picker.use.iso8061` | When enabled, sets Monday as the first day of the week in the date picker, as specified by the ISO8601 standard. | `false` | + * | `jira.lf.logo.url` | The URL of the logo image file. | `/images/icon-jira-logo.png` | + * | `jira.lf.logo.show.application.title` | Controls the visibility of the application title on the sidebar. | `false` | + * | `jira.lf.favicon.url` | The URL of the favicon. | `/favicon.ico` | + * | `jira.lf.favicon.hires.url` | The URL of the high-resolution favicon. | `/images/64jira.png` | + * | `jira.lf.navigation.bgcolour` | The background color of the sidebar. | `#0747A6` | + * | `jira.lf.navigation.highlightcolour` | The color of the text and logo of the sidebar. | `#DEEBFF` | + * | `jira.lf.hero.button.base.bg.colour` | The background color of the hero button. | `#3b7fc4` | + * | `jira.title` | The text for the application title. The application title can also be set in *General settings*. | `Jira` | + * | `jira.option.globalsharing` | Whether filters and dashboards can be shared with anyone signed into Jira. | `true` | + * | `xflow.product.suggestions.enabled` | Whether to expose product suggestions for other Atlassian products within Jira. | `true` | + * + * + * #### Other settings #### + * + * | Key | Description | Default value | + * | -- | -- | -- | + * | `jira.issuenav.criteria.autoupdate` | Whether instant updates to search criteria is active. | `true` | + * + * + * *Note: Be careful when changing [application properties and advanced settings](https://confluence.atlassian.com/x/vYXKM).* + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setApplicationProperty"]; + }; + "/rest/api/3/applicationrole": { + /** + * Get all application roles + * @description Returns all application roles. In Jira, application roles are managed using the [Application access configuration](https://confluence.atlassian.com/x/3YxjL) page. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllApplicationRoles"]; + }; + "/rest/api/3/applicationrole/{key}": { + /** + * Get application role + * @description Returns an application role. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getApplicationRole"]; + }; + "/rest/api/3/attachment/content/{id}": { + /** + * Get attachment content + * @description Returns the contents of an attachment. A `Range` header can be set to define a range of bytes within the attachment to download. See the [HTTP Range header standard](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range) for details. + * + * To return a thumbnail of the attachment, use [Get attachment thumbnail](#api-rest-api-3-attachment-thumbnail-id-get). + * + * This operation can be accessed anonymously. + * + * **[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. + */ + get: operations["getAttachmentContent"]; + }; + "/rest/api/3/attachment/meta": { + /** + * Get Jira attachment settings + * @description Returns the attachment settings, that is, whether attachments are enabled and the maximum attachment size allowed. + * + * Note that there are also [project permissions](https://confluence.atlassian.com/x/yodKLg) that restrict whether users can create and delete attachments. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAttachmentMeta"]; + }; + "/rest/api/3/attachment/thumbnail/{id}": { + /** + * Get attachment thumbnail + * @description Returns the thumbnail of an attachment. + * + * To return the attachment contents, use [Get attachment content](#api-rest-api-3-attachment-content-id-get). + * + * This operation can be accessed anonymously. + * + * **[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. + */ + get: operations["getAttachmentThumbnail"]; + }; + "/rest/api/3/attachment/{id}": { + /** + * Get attachment metadata + * @description Returns the metadata for an attachment. Note that the attachment itself is not returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + get: operations["getAttachment"]; + /** + * Delete attachment + * @description Deletes an attachment from an issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** For the project holding the issue containing the attachment: + * + * * *Delete own attachments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment created by the calling user. + * * *Delete all attachments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment created by any user. + */ + delete: operations["removeAttachment"]; + }; + "/rest/api/3/attachment/{id}/expand/human": { + /** + * Get all metadata for an expanded attachment + * @description Returns the metadata for the contents of an attachment, if it is an archive, and metadata for the attachment itself. For example, if the attachment is a ZIP archive, then information about the files in the archive is returned and metadata for the ZIP archive. Currently, only the ZIP archive format is supported. + * + * Use this operation to retrieve data that is presented to the user, as this operation returns the metadata for the attachment itself, such as the attachment's ID and name. Otherwise, use [ Get contents metadata for an expanded attachment](#api-rest-api-3-attachment-id-expand-raw-get), which only returns the metadata for the attachment's contents. + * + * This operation can be accessed anonymously. + * + * **[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. + */ + get: operations["expandAttachmentForHumans"]; + }; + "/rest/api/3/attachment/{id}/expand/raw": { + /** + * Get contents metadata for an expanded attachment + * @description Returns the metadata for the contents of an attachment, if it is an archive. For example, if the attachment is a ZIP archive, then information about the files in the archive is returned. Currently, only the ZIP archive format is supported. + * + * Use this operation if you are processing the data without presenting it to the user, as this operation only returns the metadata for the contents of the attachment. Otherwise, to retrieve data to present to the user, use [ Get all metadata for an expanded attachment](#api-rest-api-3-attachment-id-expand-human-get) which also returns the metadata for the attachment itself, such as the attachment's ID and name. + * + * This operation can be accessed anonymously. + * + * **[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. + */ + get: operations["expandAttachmentForMachines"]; + }; + "/rest/api/3/auditing/record": { + /** + * Get audit records + * @description Returns a list of audit records. The list can be filtered to include items: + * + * * where each item in `filter` has at least one match in any of these fields: + * + * * `summary` + * * `category` + * * `eventSource` + * * `objectItem.name` If the object is a user, account ID is available to filter. + * * `objectItem.parentName` + * * `objectItem.typeName` + * * `changedValues.changedFrom` + * * `changedValues.changedTo` + * * `remoteAddress` + * + * For example, if `filter` contains *man ed*, an audit record containing `summary": "User added to group"` and `"category": "group management"` is returned. + * * created on or after a date and time. + * * created or or before a date and time. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAuditRecords"]; + }; + "/rest/api/3/avatar/{type}/system": { + /** + * Get system avatars by type + * @description Returns a list of system avatar details by owner type, where the owner types are issue type, project, or user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAllSystemAvatars"]; + }; + "/rest/api/3/comment/list": { + /** + * Get comments by IDs + * @description Returns a [paginated](#pagination) list of comments specified by a list of comment IDs. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Comments are returned where the user: + * + * * has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the comment. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + post: operations["getCommentsByIds"]; + }; + "/rest/api/3/comment/{commentId}/properties": { + /** + * Get comment property keys + * @description Returns the keys of all the properties of a comment. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + get: operations["getCommentPropertyKeys"]; + }; + "/rest/api/3/comment/{commentId}/properties/{propertyKey}": { + /** + * Get comment property + * @description Returns the value of a comment property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + get: operations["getCommentProperty"]; + /** + * Set comment property + * @description Creates or updates the value of a property for a comment. Use this resource to store custom data against a comment. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** either of: + * + * * *Edit All Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value of a property on any comment. + * * *Edit Own Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value of a property on a comment created by the user. + * + * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or group. + */ + put: operations["setCommentProperty"]; + /** + * Delete comment property + * @description Deletes a comment property. + * + * **[Permissions](#permissions) required:** either of: + * + * * *Edit All Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from any comment. + * * *Edit Own Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from a comment created by the user. + * + * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or group. + */ + delete: operations["deleteCommentProperty"]; + }; + "/rest/api/3/component": { + /** + * Create component + * @description Creates a component. Use components to provide containers for issues within a project. Use components to provide containers for issues within a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the component is created or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createComponent"]; + }; + "/rest/api/3/component/{id}": { + /** + * Get component + * @description Returns a component. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for project containing the component. + */ + get: operations["getComponent"]; + /** + * Update component + * @description Updates a component. Any fields included in the request are overwritten. If `leadAccountId` is an empty string ("") the component lead is removed. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the component or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateComponent"]; + /** + * Delete component + * @description Deletes a component. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the component or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteComponent"]; + }; + "/rest/api/3/component/{id}/relatedIssueCounts": { + /** + * Get component issues count + * @description Returns the counts of issues assigned to the component. + * + * This operation can be accessed anonymously. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:field:jira`, `read:project.component:jira` + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getComponentRelatedIssues"]; + }; + "/rest/api/3/configuration": { + /** + * Get global settings + * @description Returns the [global settings](https://confluence.atlassian.com/x/qYXKM) in Jira. These settings determine whether optional features (for example, subtasks, time tracking, and others) are enabled. If time tracking is enabled, this operation also returns the time tracking configuration. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getConfiguration"]; + }; + "/rest/api/3/configuration/timetracking": { + /** + * Get selected time tracking provider + * @description Returns the time tracking provider that is currently selected. Note that if time tracking is disabled, then a successful but empty response is returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getSelectedTimeTrackingImplementation"]; + /** + * Select time tracking provider + * @description Selects a time tracking provider. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["selectTimeTrackingImplementation"]; + }; + "/rest/api/3/configuration/timetracking/list": { + /** + * Get all time tracking providers + * @description Returns all time tracking providers. By default, Jira only has one time tracking provider: *JIRA provided time tracking*. However, you can install other time tracking providers via apps from the Atlassian Marketplace. For more information on time tracking providers, see the documentation for the [ Time Tracking Provider](https://developer.atlassian.com/cloud/jira/platform/modules/time-tracking-provider/) module. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAvailableTimeTrackingImplementations"]; + }; + "/rest/api/3/configuration/timetracking/options": { + /** + * Get time tracking settings + * @description Returns the time tracking settings. This includes settings such as the time format, default time unit, and others. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getSharedTimeTrackingConfiguration"]; + /** + * Set time tracking settings + * @description Sets the time tracking settings. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setSharedTimeTrackingConfiguration"]; + }; + "/rest/api/3/customFieldOption/{id}": { + /** + * Get custom field option + * @description Returns a custom field option. For example, an option in a select list. + * + * Note that this operation **only works for issue field select list options created in Jira or using operations from the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue field select list options created by Connect apps. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The custom field option is returned as follows: + * + * * if the user has the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * if the user has the *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the custom field is used in, and the field is visible in at least one layout the user has permission to view. + */ + get: operations["getCustomFieldOption"]; + }; + "/rest/api/3/dashboard": { + /** + * Get all dashboards + * @description Returns a list of dashboards owned by or shared with the user. The list may be filtered to include only favorite or owned dashboards. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAllDashboards"]; + /** + * Create dashboard + * @description Creates a dashboard. + * + * **[Permissions](#permissions) required:** None. + */ + post: operations["createDashboard"]; + }; + "/rest/api/3/dashboard/bulk/edit": { + /** + * Bulk edit dashboards + * @description Bulk edit dashboards. Maximum number of dashboards to be edited at the same time is 100. + * + * **[Permissions](#permissions) required:** None + * + * The dashboards to be updated must be owned by the user, or the user must be an administrator. + */ + put: operations["bulkEditDashboards"]; + }; + "/rest/api/3/dashboard/gadgets": { + /** + * Get available gadgets + * @description Gets a list of all available gadgets that can be added to all dashboards. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAllAvailableDashboardGadgets"]; + }; + "/rest/api/3/dashboard/search": { + /** + * Search for dashboards + * @description Returns a [paginated](#pagination) list of dashboards. This operation is similar to [Get dashboards](#api-rest-api-3-dashboard-get) except that the results can be refined to include dashboards that have specific attributes. For example, dashboards with a particular name. When multiple attributes are specified only filters matching all attributes are returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The following dashboards that match the query parameters are returned: + * + * * Dashboards owned by the user. Not returned for anonymous users. + * * Dashboards shared with a group that the user is a member of. Not returned for anonymous users. + * * Dashboards shared with a private project that the user can browse. Not returned for anonymous users. + * * Dashboards shared with a public project. + * * Dashboards shared with the public. + */ + get: operations["getDashboardsPaginated"]; + }; + "/rest/api/3/dashboard/{dashboardId}/gadget": { + /** + * Get gadgets + * @description Returns a list of dashboard gadgets on a dashboard. + * + * This operation returns: + * + * * Gadgets from a list of IDs, when `id` is set. + * * Gadgets with a module key, when `moduleKey` is set. + * * Gadgets from a list of URIs, when `uri` is set. + * * All gadgets, when no other parameters are set. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAllGadgets"]; + /** + * Add gadget to dashboard + * @description Adds a gadget to a dashboard. + * + * **[Permissions](#permissions) required:** None. + */ + post: operations["addGadget"]; + }; + "/rest/api/3/dashboard/{dashboardId}/gadget/{gadgetId}": { + /** + * Update gadget on dashboard + * @description Changes the title, position, and color of the gadget on a dashboard. + * + * **[Permissions](#permissions) required:** None. + */ + put: operations["updateGadget"]; + /** + * Remove gadget from dashboard + * @description Removes a dashboard gadget from a dashboard. + * + * When a gadget is removed from a dashboard, other gadgets in the same column are moved up to fill the emptied position. + * + * **[Permissions](#permissions) required:** None. + */ + delete: operations["removeGadget"]; + }; + "/rest/api/3/dashboard/{dashboardId}/items/{itemId}/properties": { + /** + * Get dashboard item property keys + * @description Returns the keys of all properties for a dashboard item. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when Jira\\u2019s anonymous access is permitted. + */ + get: operations["getDashboardItemPropertyKeys"]; + }; + "/rest/api/3/dashboard/{dashboardId}/items/{itemId}/properties/{propertyKey}": { + /** + * Get dashboard item property + * @description Returns the key and value of a dashboard item property. + * + * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ). + * + * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this resource to store the item's content or configuration details. For more information on working with dashboard items, see [ Building a dashboard item for a JIRA Connect add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/) and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/) documentation. + * + * There is no resource to set or get dashboard items. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when Jira\\u2019s anonymous access is permitted. + */ + get: operations["getDashboardItemProperty"]; + /** + * Set dashboard item property + * @description Sets the value of a dashboard item property. Use this resource in apps to store custom data against a dashboard item. + * + * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ). + * + * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this resource to store the item's content or configuration details. For more information on working with dashboard items, see [ Building a dashboard item for a JIRA Connect add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/) and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/) documentation. + * + * There is no resource to set or get dashboard items. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. + */ + put: operations["setDashboardItemProperty"]; + /** + * Delete dashboard item property + * @description Deletes a dashboard item property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. + */ + delete: operations["deleteDashboardItemProperty"]; + }; + "/rest/api/3/dashboard/{id}": { + /** + * Get dashboard + * @description Returns a dashboard. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + * + * However, to get a dashboard, the dashboard must be shared with the user or the user must own it. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. The System dashboard is considered to be shared with all other users. + */ + get: operations["getDashboard"]; + /** + * Update dashboard + * @description Updates a dashboard, replacing all the dashboard details with those provided. + * + * **[Permissions](#permissions) required:** None + * + * The dashboard to be updated must be owned by the user. + */ + put: operations["updateDashboard"]; + /** + * Delete dashboard + * @description Deletes a dashboard. + * + * **[Permissions](#permissions) required:** None + * + * The dashboard to be deleted must be owned by the user. + */ + delete: operations["deleteDashboard"]; + }; + "/rest/api/3/dashboard/{id}/copy": { + /** + * Copy dashboard + * @description Copies a dashboard. Any values provided in the `dashboard` parameter replace those in the copied dashboard. + * + * **[Permissions](#permissions) required:** None + * + * The dashboard to be copied must be owned by or shared with the user. + */ + post: operations["copyDashboard"]; + }; + "/rest/api/3/events": { + /** + * Get events + * @description Returns all issue events. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getEvents"]; + }; + "/rest/api/3/expression/analyse": { + /** + * Analyse Jira expression + * @description 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](#permissions) required**: None. + */ + post: operations["analyseExpression"]; + }; + "/rest/api/3/expression/eval": { + /** + * Evaluate Jira expression + * @description 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](#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`). + */ + post: operations["evaluateJiraExpression"]; + }; + "/rest/api/3/field": { + /** + * Get fields + * @description Returns system and custom issue fields according to the following rules: + * + * * Fields that cannot be added to the issue navigator are always returned. + * * Fields that cannot be placed on an issue screen are always returned. + * * Fields that depend on global Jira settings are only returned if the setting is enabled. That is, timetracking fields, subtasks, votes, and watches. + * * For all other fields, this operation only returns the fields that the user has permission to view (that is, the field is used in at least one project that the user has *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for.) + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getFields"]; + /** + * Create custom field + * @description Creates a custom field. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createCustomField"]; + }; + "/rest/api/3/field/search": { + /** + * Get fields paginated + * @description Returns a [paginated](#pagination) list of fields for Classic Jira projects. The list can include: + * + * * all fields + * * specific fields, by defining `id` + * * fields that contain a string in the field name or description, by defining `query` + * * specific fields that contain a string in the field name or description, by defining `id` and `query` + * + * Only custom fields can be queried, `type` must be set to `custom`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getFieldsPaginated"]; + }; + "/rest/api/3/field/search/trashed": { + /** + * Get fields in trash paginated + * @description Returns a [paginated](#pagination) list of fields in the trash. The list may be restricted to fields whose field name or description partially match a string. + * + * Only custom fields can be queried, `type` must be set to `custom`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getTrashedFieldsPaginated"]; + }; + "/rest/api/3/field/{fieldId}": { + /** + * Update custom field + * @description Updates a custom field. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateCustomField"]; + }; + "/rest/api/3/field/{fieldId}/context": { + /** + * Get custom field contexts + * @description Returns a [paginated](#pagination) list of [ contexts](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html) for a custom field. Contexts can be returned as follows: + * + * * With no other parameters set, all contexts. + * * By defining `id` only, all contexts from the list of IDs. + * * By defining `isAnyIssueType`, limit the list of contexts returned to either those that apply to all issue types (true) or those that apply to only a subset of issue types (false) + * * By defining `isGlobalContext`, limit the list of contexts return to either those that apply to all projects (global contexts) (true) or those that apply to only a subset of projects (false). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getContextsForField"]; + /** + * Create custom field context + * @description Creates a custom field context. + * + * If `projectIds` is empty, a global context is created. A global context is one that applies to all project. If `issueTypeIds` is empty, the context applies to all issue types. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createCustomFieldContext"]; + }; + "/rest/api/3/field/{fieldId}/context/defaultValue": { + /** + * Get custom field contexts default values + * @description Returns a [paginated](#pagination) list of defaults for a custom field. The results can be filtered by `contextId`, otherwise all values are returned. If no defaults are set for a context, nothing is returned. + * The returned object depends on type of the custom field: + * + * * `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields. + * * `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields. + * * `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio buttons. + * * `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and checkboxes. + * * `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists. + * * `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users. + * * `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists. + * * `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers. + * * `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group pickers. + * * `CustomFieldContextDefaultValueURL` (type `url`) for URLs. + * * `CustomFieldContextDefaultValueProject` (type `project`) for project pickers. + * * `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers). + * * `CustomFieldContextDefaultValueLabels` (type `labels`) for labels. + * * `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields. + * * `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields. + * * `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields. + * * `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers. + * * `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers. + * + * Forge custom fields [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types) are also supported, returning: + * + * * `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields. + * * `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection fields. + * * `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields. + * * `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields. + * * `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields. + * * `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection fields. + * * `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields. + * * `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields. + * * `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getDefaultValues"]; + /** + * Set custom field contexts default values + * @description Sets default for contexts of a custom field. Default are defined using these objects: + * + * * `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields. + * * `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields. + * * `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio buttons. + * * `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and checkboxes. + * * `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists. + * * `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users. + * * `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists. + * * `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers. + * * `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group pickers. + * * `CustomFieldContextDefaultValueURL` (type `url`) for URLs. + * * `CustomFieldContextDefaultValueProject` (type `project`) for project pickers. + * * `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers). + * * `CustomFieldContextDefaultValueLabels` (type `labels`) for labels. + * * `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields. + * * `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields. + * * `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields. + * * `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers. + * * `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers. + * + * Forge custom fields [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types) are also supported, returning: + * + * * `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields. + * * `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection fields. + * * `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields. + * * `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields. + * * `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields. + * * `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection fields. + * * `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields. + * * `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields. + * * `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields. + * + * Only one type of default object can be included in a request. To remove a default for a context, set the default parameter to `null`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setDefaultValues"]; + }; + "/rest/api/3/field/{fieldId}/context/issuetypemapping": { + /** + * Get issue types for custom field context + * @description Returns a [paginated](#pagination) list of context to issue type mappings for a custom field. Mappings are returned for all contexts or a list of contexts. Mappings are ordered first by context ID and then by issue type ID. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypeMappingsForContexts"]; + }; + "/rest/api/3/field/{fieldId}/context/mapping": { + /** + * Get custom field contexts for projects and issue types + * @description Returns a [paginated](#pagination) list of project and issue type mappings and, for each mapping, the ID of a [custom field context](https://confluence.atlassian.com/x/k44fOw) that applies to the project and issue type. + * + * If there is no custom field context assigned to the project then, if present, the custom field context that applies to all projects is returned if it also applies to the issue type or all issue types. If a custom field context is not found, the returned custom field context ID is `null`. + * + * Duplicate project and issue type mappings cannot be provided in the request. + * + * The order of the returned values is the same as provided in the request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["getCustomFieldContextsForProjectsAndIssueTypes"]; + }; + "/rest/api/3/field/{fieldId}/context/projectmapping": { + /** + * Get project mappings for custom field context + * @description Returns a [paginated](#pagination) list of context to project mappings for a custom field. The result can be filtered by `contextId`. Otherwise, all mappings are returned. Invalid IDs are ignored. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getProjectContextMapping"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}": { + /** + * Update custom field context + * @description Updates a [ custom field context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateCustomFieldContext"]; + /** + * Delete custom field context + * @description Deletes a [ custom field context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteCustomFieldContext"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/issuetype": { + /** + * Add issue types to context + * @description Adds issue types to a custom field context, appending the issue types to the issue types list. + * + * A custom field context without any issue types applies to all issue types. Adding issue types to such a custom field context would result in it applying to only the listed issue types. + * + * If any of the issue types exists in the custom field context, the operation fails and no issue types are added. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["addIssueTypesToContext"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/issuetype/remove": { + /** + * Remove issue types from context + * @description Removes issue types from a custom field context. + * + * A custom field context without any issue types applies to all issue types. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["removeIssueTypesFromContext"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/option": { + /** + * Get custom field options (context) + * @description Returns a [paginated](#pagination) list of all custom field option for a context. Options are returned first then cascading options, in the order they display in Jira. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getOptionsForContext"]; + /** + * Update custom field options (context) + * @description Updates the options of a custom field. + * + * If any of the options are not found, no options are updated. Options where the values in the request match the current values aren't updated and aren't reported in the response. + * + * Note that this operation **only works for issue field select list options created in Jira or using operations from the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue field select list options created by Connect apps. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateCustomFieldOption"]; + /** + * Create custom field options (context) + * @description Creates options and, where the custom select field is of the type Select List (cascading), cascading options for a custom select field. The options are added to a context of the field. + * + * The maximum number of options that can be created per request is 1000 and each field can have a maximum of 10000 options. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createCustomFieldOption"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/option/move": { + /** + * Reorder custom field options (context) + * @description Changes the order of custom field options or cascading options in a context. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["reorderCustomFieldOptions"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/option/{optionId}": { + /** + * Delete custom field options (context) + * @description Deletes a custom field option. + * + * Options with cascading options cannot be deleted without deleting the cascading options first. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteCustomFieldOption"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/project": { + /** + * Assign custom field context to projects + * @description Assigns a custom field context to projects. + * + * If any project in the request is assigned to any context of the custom field, the operation fails. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["assignProjectsToCustomFieldContext"]; + }; + "/rest/api/3/field/{fieldId}/context/{contextId}/project/remove": { + /** + * Remove custom field context from projects + * @description Removes a custom field context from projects. + * + * A custom field context without any projects applies to all projects. Removing all projects from a custom field context would result in it applying to all projects. + * + * If any project in the request is not assigned to the context, or the operation would result in two global contexts for the field, the operation fails. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["removeCustomFieldContextFromProjects"]; + }; + "/rest/api/3/field/{fieldId}/contexts": { + /** + * Get contexts for a field + * @deprecated + * @description Returns a [paginated](#pagination) list of the contexts a field is used in. Deprecated, use [ Get custom field contexts](#api-rest-api-3-field-fieldId-context-get). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getContextsForFieldDeprecated"]; + }; + "/rest/api/3/field/{fieldId}/screens": { + /** + * Get screens for a field + * @description Returns a [paginated](#pagination) list of the screens a field is used in. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getScreensForField"]; + }; + "/rest/api/3/field/{fieldKey}/option": { + /** + * Get all issue field options + * @description Returns a [paginated](#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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + get: operations["getAllIssueFieldOptions"]; + /** + * Create issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + post: operations["createIssueFieldOption"]; + }; + "/rest/api/3/field/{fieldKey}/option/suggestions/edit": { + /** + * Get selectable issue field options + * @description Returns a [paginated](#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](#permissions) required:** Permission to access Jira. + */ + get: operations["getSelectableIssueFieldOptions"]; + }; + "/rest/api/3/field/{fieldKey}/option/suggestions/search": { + /** + * Get visible issue field options + * @description Returns a [paginated](#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](#permissions) required:** Permission to access Jira. + */ + get: operations["getVisibleIssueFieldOptions"]; + }; + "/rest/api/3/field/{fieldKey}/option/{optionId}": { + /** + * Get issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + get: operations["getIssueFieldOption"]; + /** + * Update issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + put: operations["updateIssueFieldOption"]; + /** + * Delete issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + delete: operations["deleteIssueFieldOption"]; + }; + "/rest/api/3/field/{fieldKey}/option/{optionId}/issue": { + /** + * Replace issue field option + * @description 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](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + delete: operations["replaceIssueFieldOption"]; + }; + "/rest/api/3/field/{id}": { + /** + * Delete custom field + * @description Deletes a custom field. The custom field is deleted whether it is in the trash or not. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteCustomField"]; + }; + "/rest/api/3/field/{id}/restore": { + /** + * Restore custom field from trash + * @description Restores a custom field from trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["restoreCustomField"]; + }; + "/rest/api/3/field/{id}/trash": { + /** + * Move custom field to trash + * @description Moves a custom field to trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["trashCustomField"]; + }; + "/rest/api/3/fieldconfiguration": { + /** + * Get all field configurations + * @description Returns a [paginated](#pagination) list of field configurations. The list can be for all field configurations or a subset determined by any combination of these criteria: + * + * * a list of field configuration item IDs. + * * whether the field configuration is a default. + * * whether the field configuration name or description contains a query string. + * + * Only field configurations used in company-managed (classic) projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllFieldConfigurations"]; + /** + * Create field configuration + * @description Creates a field configuration. The field configuration is created with the same field properties as the default configuration, with all the fields being optional. + * + * This operation can only create configurations for use in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createFieldConfiguration"]; + }; + "/rest/api/3/fieldconfiguration/{id}": { + /** + * Update field configuration + * @description Updates a field configuration. The name and the description provided in the request override the existing values. + * + * This operation can only update configurations used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateFieldConfiguration"]; + /** + * Delete field configuration + * @description Deletes a field configuration. + * + * This operation can only delete configurations used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteFieldConfiguration"]; + }; + "/rest/api/3/fieldconfiguration/{id}/fields": { + /** + * Get field configuration items + * @description Returns a [paginated](#pagination) list of all fields for a configuration. + * + * Only the fields from configurations used in company-managed (classic) projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getFieldConfigurationItems"]; + /** + * Update field configuration items + * @description Updates fields in a field configuration. The properties of the field configuration fields provided override the existing values. + * + * This operation can only update field configurations used in company-managed (classic) projects. + * + * The operation can set the renderer for text fields to the default text renderer (`text-renderer`) or wiki style renderer (`wiki-renderer`). However, the renderer cannot be updated for fields using the autocomplete renderer (`autocomplete-renderer`). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateFieldConfigurationItems"]; + }; + "/rest/api/3/fieldconfigurationscheme": { + /** + * Get all fieldg rnfiguration schemes + * @description Returns a [paginated](#pagination) list of field configuration schemes. + * + * Only field configuration schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllFieldgRnfigurationSchemes"]; + /** + * Create field configuration scheme + * @description Creates a field configuration scheme. + * + * This operation can only create field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createFieldConfigurationScheme"]; + }; + "/rest/api/3/fieldconfigurationscheme/mapping": { + /** + * Get field configuration issue type items + * @description Returns a [paginated](#pagination) list of field configuration issue type items. + * + * Only items used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getFieldConfigurationSchemeMappings"]; + }; + "/rest/api/3/fieldconfigurationscheme/project": { + /** + * Get field configuration schemes for projects + * @description Returns a [paginated](#pagination) list of field configuration schemes and, for each scheme, a list of the projects that use it. + * + * The list is sorted by field configuration scheme ID. The first item contains the list of project IDs assigned to the default field configuration scheme. + * + * Only field configuration schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getFieldConfigurationSchemeProjectMapping"]; + /** + * Assign field configuration scheme to project + * @description Assigns a field configuration scheme to a project. If the field configuration scheme ID is `null`, the operation assigns the default field configuration scheme. + * + * Field configuration schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["assignFieldConfigurationSchemeToProject"]; + }; + "/rest/api/3/fieldconfigurationscheme/{id}": { + /** + * Update field configuration scheme + * @description Updates a field configuration scheme. + * + * This operation can only update field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateFieldConfigurationScheme"]; + /** + * Delete field configuration scheme + * @description Deletes a field configuration scheme. + * + * This operation can only delete field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteFieldConfigurationScheme"]; + }; + "/rest/api/3/fieldconfigurationscheme/{id}/mapping": { + /** + * Assign issue types to field configurations + * @description Assigns issue types to field configurations on field configuration scheme. + * + * This operation can only modify field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setFieldConfigurationSchemeMapping"]; + }; + "/rest/api/3/fieldconfigurationscheme/{id}/mapping/delete": { + /** + * Remove issue types from field configuration scheme + * @description Removes issue types from the field configuration scheme. + * + * This operation can only modify field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["removeIssueTypesFromGlobalFieldConfigurationScheme"]; + }; + "/rest/api/3/filter": { + /** + * Create filter + * @description Creates a filter. The filter is shared according to the [default share scope](#api-rest-api-3-filter-post). The filter is not selected as a favorite. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + post: operations["createFilter"]; + }; + "/rest/api/3/filter/defaultShareScope": { + /** + * Get default share scope + * @description Returns the default sharing settings for new filters and dashboards for a user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getDefaultShareScope"]; + /** + * Set default share scope + * @description Sets the default sharing for new filters and dashboards for a user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + put: operations["setDefaultShareScope"]; + }; + "/rest/api/3/filter/favourite": { + /** + * Get favorite filters + * @description Returns the visible favorite filters of the user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** A favorite filter is only visible to the user where the filter is: + * + * * owned by the user. + * * shared with a group that the user is a member of. + * * shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * shared with a public project. + * * shared with the public. + * + * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by this operation. + */ + get: operations["getFavouriteFilters"]; + }; + "/rest/api/3/filter/my": { + /** + * Get my filters + * @description Returns the filters owned by the user. If `includeFavourites` is `true`, the user's visible favorite filters are also returned. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, a favorite filters is only visible to the user where the filter is: + * + * * owned by the user. + * * shared with a group that the user is a member of. + * * shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * shared with a public project. + * * shared with the public. + * + * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by this operation. + */ + get: operations["getMyFilters"]; + }; + "/rest/api/3/filter/search": { + /** + * Search for filters + * @description Returns a [paginated](#pagination) list of filters. Use this operation to get: + * + * * specific filters, by defining `id` only. + * * filters that match all of the specified attributes. For example, all filters for a user with a particular word in their name. When multiple attributes are specified only filters matching all attributes are returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, only the following filters that match the query parameters are returned: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + get: operations["getFiltersPaginated"]; + }; + "/rest/api/3/filter/{id}": { + /** + * Get filter + * @description Returns a filter. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, the filter is only returned where it is: + * + * * owned by the user. + * * shared with a group that the user is a member of. + * * shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * shared with a public project. + * * shared with the public. + */ + get: operations["getFilter"]; + /** + * Update filter + * @description Updates a filter. Use this operation to update a filter's name, description, JQL, or sharing. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however the user must own the filter. + */ + put: operations["updateFilter"]; + /** + * Delete filter + * @description Delete a filter. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however filters can only be deleted by the creator of the filter or a user with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteFilter"]; + }; + "/rest/api/3/filter/{id}/columns": { + /** + * Get columns + * @description Returns the columns configured for a filter. The column configuration is used when the filter's results are viewed in *List View* with the *Columns* set to *Filter*. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, column details are only returned for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + get: operations["getColumns"]; + /** + * Set columns + * @description Sets the columns for a filter. Only navigable fields can be set as columns. Use [Get fields](#api-rest-api-3-field-get) to get the list fields in Jira. A navigable field has `navigable` set to `true`. + * + * The parameters for this resource are expressed as HTML form data. For example, in curl: + * + * `curl -X PUT -d columns=summary -d columns=description https://your-domain.atlassian.net/rest/api/3/filter/10000/columns` + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, columns are only set for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + put: operations["setColumns"]; + /** + * Reset columns + * @description Reset the user's column configuration for the filter to the default. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, columns are only reset for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + delete: operations["resetColumns"]; + }; + "/rest/api/3/filter/{id}/favourite": { + /** + * Add filter as favorite + * @description Add a filter as a favorite for the user. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, the user can only favorite: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + put: operations["setFavouriteForFilter"]; + /** + * Remove filter as favorite + * @description Removes a filter as a favorite for the user. Note that this operation only removes filters visible to the user from the user's favorites list. For example, if the user favorites a public filter that is subsequently made private (and is therefore no longer visible on their favorites list) they cannot remove it from their favorites list. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + delete: operations["deleteFavouriteForFilter"]; + }; + "/rest/api/3/filter/{id}/owner": { + /** + * Change filter owner + * @description Changes the owner of the filter. + * + * **[Permissions](#permissions) required:** Permission to access Jira. However, the user must own the filter or have the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["changeFilterOwner"]; + }; + "/rest/api/3/filter/{id}/permission": { + /** + * Get share permissions + * @description Returns the share permissions for a filter. A filter can be shared with groups, projects, all logged-in users, or the public. Sharing with all logged-in users or the public is known as a global share permission. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, share permissions are only returned for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + get: operations["getSharePermissions"]; + /** + * Add share permission + * @description Add a share permissions to a filter. If you add a global share permission (one for all logged-in users or the public) it will overwrite all share permissions for the filter. + * + * Be aware that this operation uses different objects for updating share permissions compared to [Update filter](#api-rest-api-3-filter-id-put). + * + * **[Permissions](#permissions) required:** *Share dashboards and filters* [global permission](https://confluence.atlassian.com/x/x4dKLg) and the user must own the filter. + */ + post: operations["addSharePermission"]; + }; + "/rest/api/3/filter/{id}/permission/{permissionId}": { + /** + * Get share permission + * @description Returns a share permission for a filter. A filter can be shared with groups, projects, all logged-in users, or the public. Sharing with all logged-in users or the public is known as a global share permission. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, a share permission is only returned for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + get: operations["getSharePermission"]; + /** + * Delete share permission + * @description Deletes a share permission from a filter. + * + * **[Permissions](#permissions) required:** Permission to access Jira and the user must own the filter. + */ + delete: operations["deleteSharePermission"]; + }; + "/rest/api/3/group": { + /** + * Get group + * @deprecated + * @description This operation is deprecated, use [`group/member`](#api-rest-api-3-group-member-get). + * + * Returns all users in a group. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getGroup"]; + /** + * Create group + * @description Creates a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + post: operations["createGroup"]; + /** + * Remove group + * @description Deletes a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* strategic [group](https://confluence.atlassian.com/x/24xjL)). + */ + delete: operations["removeGroup"]; + }; + "/rest/api/3/group/bulk": { + /** + * Bulk get groups + * @description Returns a [paginated](#pagination) list of groups. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["bulkGetGroups"]; + }; + "/rest/api/3/group/member": { + /** + * Get users from group + * @description Returns a [paginated](#pagination) list of all users in a group. + * + * Note that users are ordered by username, however the username is not returned in the results due to privacy reasons. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getUsersFromGroup"]; + }; + "/rest/api/3/group/user": { + /** + * Add user to group + * @description Adds a user to a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + post: operations["addUserToGroup"]; + /** + * Remove user from group + * @description Removes a user from a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + delete: operations["removeUserFromGroup"]; + }; + "/rest/api/3/groups/picker": { + /** + * Find groups + * @description Returns a list of groups whose names contain a query string. A list of group names can be provided to exclude groups from the results. + * + * The primary use case for this resource is to populate a group picker suggestions list. To this end, the returned object includes the `html` field where the matched query term is highlighted in the group name with the HTML strong tag. Also, the groups list is wrapped in a response object that contains a header for use in the picker, specifically *Showing X of Y matching groups*. + * + * The list returns with the groups sorted. If no groups match the list criteria, an empty list is returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg). Anonymous calls and calls by users without the required permission return an empty list. + * + * *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Without this permission, calls where query is not an exact match to an existing group will return an empty list. + */ + get: operations["findGroups"]; + }; + "/rest/api/3/groupuserpicker": { + /** + * Find users and groups + * @description Returns a list of users and groups matching a string. The string is used: + * + * * for users, to find a case-insensitive match with display name and e-mail address. Note that if a user has hidden their email address in their user profile, partial matches of the email address will not find the user. An exact match is required. + * * for groups, to find a case-sensitive match with group name. + * + * For example, if the string *tin* is used, records with the display name *Tina*, email address *sarah@tinplatetraining.com*, and the group *accounting* would be returned. + * + * Optionally, the search can be refined to: + * + * * the projects and issue types associated with a custom field, such as a user picker. The search can then be further refined to return only users and groups that have permission to view specific: + * + * * projects. + * * issue types. + * + * If multiple projects or issue types are specified, they must be a subset of those enabled for the custom field or no results are returned. For example, if a field is enabled for projects A, B, and C then the search could be limited to projects B and C. However, if the search is limited to projects B and D, nothing is returned. + * * not return Connect app users and groups. + * * return groups that have a case-insensitive match with the query. + * + * The primary use case for this resource is to populate a picker field suggestion list with users or groups. To this end, the returned object includes an `html` field for each list. This field highlights the matched query term in the item name with the HTML strong tag. Also, each list is wrapped in a response object that contains a header for use in a picker, specifically *Showing X of Y matching groups*. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/yodKLg). + */ + get: operations["findUsersAndGroups"]; + }; + "/rest/api/3/instance/license": { + /** + * Get license + * @description Returns licensing information about the Jira instance. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getLicense"]; + }; + "/rest/api/3/issue": { + /** + * Create issue + * @description Creates an issue or, where the option to create subtasks is enabled in Jira, a subtask. A transition may be applied, to move the issue or subtask to a workflow step other than the default start step, and issue properties set. + * + * The content of the issue or subtask is defined using `update` and `fields`. The fields that can be set in the issue or subtask are determined using the [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get). These are the same fields that appear on the issue's create screen. Note that the `description`, `environment`, and any `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`) accept a string and don't handle Atlassian Document Format content. + * + * Creating a subtask differs from creating an issue as follows: + * + * * `issueType` must be set to a subtask issue type (use [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get) to find subtask issue types). + * * `parent` must contain the ID or key of the parent issue. + * + * In a next-gen project any issue may be made a child providing that the parent and child are members of the same project. + * + * **[Permissions](#permissions) required:** *Browse projects* and *Create issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in which the issue or subtask is created. + */ + post: operations["createIssue"]; + }; + "/rest/api/3/issue/archive": { + /** + * Archive issue(s) by issue ID/key + * @description Enables admins to archive up to 1000 issues in a single request using issue ID/key, returning details of the issue(s) archived in the process and the errors encountered, if any. + * + * **Note that:** + * + * * you can't archive subtasks directly, only through their parent issues + * * you can only archive issues from software, service management, and business projects + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + */ + put: operations["archiveIssues"]; + /** + * Archive issue(s) by JQL + * @description Enables admins to archive up to 100,000 issues in a single request using JQL, returning the URL to check the status of the submitted request. + * + * You can use the [get task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-get) and [cancel task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-cancel-post) APIs to manage the request. + * + * **Note that:** + * + * * you can't archive subtasks directly, only through their parent issues + * * you can only archive issues from software, service management, and business projects + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + * + * **Rate limiting:** Only a single request per jira instance can be active at any given time. + */ + post: operations["archiveIssuesAsync"]; + }; + "/rest/api/3/issue/bulk": { + /** + * Bulk create issue + * @description Creates upto **50** issues and, where the option to create subtasks is enabled in Jira, subtasks. Transitions may be applied, to move the issues or subtasks to a workflow step other than the default start step, and issue properties set. + * + * The content of each issue or subtask is defined using `update` and `fields`. The fields that can be set in the issue or subtask are determined using the [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get). These are the same fields that appear on the issues' create screens. Note that the `description`, `environment`, and any `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`) accept a string and don't handle Atlassian Document Format content. + * + * Creating a subtask differs from creating an issue as follows: + * + * * `issueType` must be set to a subtask issue type (use [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get) to find subtask issue types). + * * `parent` the must contain the ID or key of the parent issue. + * + * **[Permissions](#permissions) required:** *Browse projects* and *Create issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in which each issue or subtask is created. + */ + post: operations["createIssues"]; + }; + "/rest/api/3/issue/createmeta": { + /** + * Get create issue metadata + * @deprecated + * @description Returns details of projects, issue types within projects, and, when requested, the create screen fields for each issue type for the user. Use the information to populate the requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). + * + * The request can be restricted to specific projects or issue types using the query parameters. The response will contain information for the valid projects, issue types, or project and issue type combinations requested. Note that invalid project, issue type, or project and issue type combinations do not generate errors. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects. + */ + get: operations["getCreateIssueMeta"]; + }; + "/rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes": { + /** + * Get create metadata issue types for a project + * @description Returns a page of issue type metadata for a specified project. Use the information to populate the requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects. + */ + get: operations["getCreateIssueMetaIssueTypes"]; + }; + "/rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes/{issueTypeId}": { + /** + * Get create field metadata for a project and issue type id + * @description Returns a page of field metadata for a specified project and issuetype id. Use the information to populate the requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects. + */ + get: operations["getCreateIssueMetaIssueTypeId"]; + }; + "/rest/api/3/issue/picker": { + /** + * Get issue picker suggestions + * @description Returns lists of issues matching a query string. Use this resource to provide auto-completion suggestions when the user is looking for an issue using a word or string. + * + * This operation returns two lists: + * + * * `History Search` which includes issues from the user's history of created, edited, or viewed issues that contain the string in the `query` parameter. + * * `Current Search` which includes issues that match the JQL expression in `currentJQL` and contain the string in the `query` parameter. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getIssuePickerResource"]; + }; + "/rest/api/3/issue/properties": { + /** + * Bulk set issues properties by list + * @description Sets or updates a list of entity property values on issues. A list of up to 10 entity properties can be specified along with up to 10,000 issues on which to set or update that list of entity properties. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON. The maximum length of single issue property value is 32768 characters. This operation can be accessed anonymously. + * + * This operation is: + * + * * transactional, either all properties are updated in all eligible issues or, when errors occur, no properties are updated. + * * [asynchronous](#async). 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](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + post: operations["bulkSetIssuesPropertiesList"]; + }; + "/rest/api/3/issue/properties/multi": { + /** + * Bulk set issue properties by issue + * @description Sets or updates entity property values on issues. Up to 10 entity properties can be specified for each issue and up to 100 issues included in the request. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON. + * + * This operation is: + * + * * [asynchronous](#async). 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. + * * non-transactional. Updating some entities may fail. Such information will available in the task result. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + post: operations["bulkSetIssuePropertiesByIssue"]; + }; + "/rest/api/3/issue/properties/{propertyKey}": { + /** + * Bulk set issue property + * @description Sets a property value on multiple issues. + * + * The value set can be a constant or determined by a [Jira expression](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/). Expressions must be computable with constant complexity when applied to a set of issues. Expressions must also comply with the [restrictions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#restrictions) that apply to all Jira expressions. + * + * The issues to be updated can be specified by a filter. + * + * The filter identifies issues eligible for update using these criteria: + * + * * `entityIds` Only issues from this list are eligible. + * * `currentValue` Only issues with the property set to this value are eligible. + * * `hasProperty`: + * + * * If *true*, only issues with the property are eligible. + * * If *false*, only issues without the property are eligible. + * + * If more than one criteria is specified, they are joined with the logical *AND*: only issues that satisfy all criteria are eligible. + * + * If an invalid combination of criteria is provided, an error is returned. For example, specifying a `currentValue` and `hasProperty` as *false* would not match any issues (because without the property the property cannot have a value). + * + * The filter is optional. Without the filter all the issues visible to the user and where the user has the EDIT\_ISSUES permission for the issue are considered eligible. + * + * This operation is: + * + * * transactional, either all eligible issues are updated or, when errors occur, none are updated. + * * [asynchronous](#async). 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](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing issues. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Edit issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue. + */ + put: operations["bulkSetIssueProperty"]; + /** + * Bulk delete issue property + * @description Deletes a property value from multiple issues. The issues to be updated can be specified by filter criteria. + * + * The criteria the filter used to identify eligible issues are: + * + * * `entityIds` Only issues from this list are eligible. + * * `currentValue` Only issues with the property set to this value are eligible. + * + * If both criteria is specified, they are joined with the logical *AND*: only issues that satisfy both criteria are considered eligible. + * + * If no filter criteria are specified, all the issues visible to the user and where the user has the EDIT\_ISSUES permission for the issue are considered eligible. + * + * This operation is: + * + * * transactional, either the property is deleted from all eligible issues or, when errors occur, no properties are deleted. + * * [asynchronous](#async). 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](#permissions) required:** + * + * * *Browse projects* [ project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing issues. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Edit issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue. + */ + delete: operations["bulkDeleteIssueProperty"]; + }; + "/rest/api/3/issue/unarchive": { + /** + * Unarchive issue(s) by issue keys/ID + * @description Enables admins to unarchive up to 1000 issues in a single request using issue ID/key, returning details of the issue(s) unarchived in the process and the errors encountered, if any. + * + * **Note that:** + * + * * you can't unarchive subtasks directly, only through their parent issues + * * you can only unarchive issues from software, service management, and business projects + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + */ + put: operations["unarchiveIssues"]; + }; + "/rest/api/3/issue/watching": { + /** + * Get is watching issue bulk + * @description Returns, for the user, details of the watched status of issues from a list. If an issue ID is invalid, the returned watched status is `false`. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + post: operations["getIsWatchingIssueBulk"]; + }; + "/rest/api/3/issue/{issueIdOrKey}": { + /** + * Get issue + * @description Returns the details for an issue. + * + * The issue is identified by its ID or key, however, if the identifier doesn't match an issue, a case-insensitive search and check for moved issues is performed. If a matching issue is found its details are returned, a 302 or other redirect is **not** returned. The issue key returned in the response is the key of the issue found. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + get: operations["getIssue"]; + /** + * Edit issue + * @description Edits an issue. A transition may be applied and issue properties updated as part of the edit. + * + * The edits to the issue's fields are defined using `update` and `fields`. The fields that can be edited are determined using [ Get edit issue metadata](#api-rest-api-3-issue-issueIdOrKey-editmeta-get). + * + * The parent field may be set by key or ID. For standard issue types, the parent may be removed by setting `update.parent.set.none` to *true*. Note that the `description`, `environment`, and any `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`) accept a string and don't handle Atlassian Document Format content. + * + * Connect apps having an app user with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), can override the screen security configuration using `overrideScreenSecurity` and `overrideEditableFlag`. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [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. + */ + put: operations["editIssue"]; + /** + * Delete issue + * @description Deletes an issue. + * + * An issue cannot be deleted if it has one or more subtasks. To delete an issue with subtasks, set `deleteSubtasks`. This causes the issue's subtasks to be deleted with the issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Delete issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + delete: operations["deleteIssue"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/assignee": { + /** + * Assign issue + * @description Assigns an issue to a user. Use this operation when the calling user does not have the *Edit Issues* permission but has the *Assign issue* permission for the project that the issue is in. + * + * If `name` or `accountId` is set to: + * + * * `"-1"`, the issue is assigned to the default assignee for the project. + * * `null`, the issue is set to unassigned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse Projects* and *Assign Issues* [ 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. + */ + put: operations["assignIssue"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/attachments": { + /** + * Add attachment + * @description Adds one or more attachments to an issue. Attachments are posted as multipart/form-data ([RFC 1867](https://www.ietf.org/rfc/rfc1867.txt)). + * + * Note that: + * + * * The request must have a `X-Atlassian-Token: no-check` header, if not it is blocked. See [Special headers](#special-request-headers) for more information. + * * The name of the multipart/form-data parameter that contains the attachments must be `file`. + * + * The following examples upload a file called *myfile.txt* to the issue *TEST-123*: + * + * #### curl #### + * + * curl --location --request POST 'https://your-domain.atlassian.net/rest/api/3/issue/TEST-123/attachments' + * -u 'email@example.com:' + * -H 'X-Atlassian-Token: no-check' + * --form 'file=@"myfile.txt"' + * + * #### Node.js #### + * + * // This code sample uses the 'node-fetch' and 'form-data' libraries: + * // https://www.npmjs.com/package/node-fetch + * // https://www.npmjs.com/package/form-data + * const fetch = require('node-fetch'); + * const FormData = require('form-data'); + * const fs = require('fs'); + * + * const filePath = 'myfile.txt'; + * const form = new FormData(); + * const stats = fs.statSync(filePath); + * const fileSizeInBytes = stats.size; + * const fileStream = fs.createReadStream(filePath); + * + * form.append('file', fileStream, {knownLength: fileSizeInBytes}); + * + * fetch('https://your-domain.atlassian.net/rest/api/3/issue/TEST-123/attachments', { + * method: 'POST', + * body: form, + * headers: { + * 'Authorization': `Basic ${Buffer.from( + * 'email@example.com:' + * ).toString('base64')}`, + * 'Accept': 'application/json', + * 'X-Atlassian-Token': 'no-check' + * } + * }) + * .then(response => { + * console.log( + * `Response: ${response.status} ${response.statusText}` + * ); + * return response.text(); + * }) + * .then(text => console.log(text)) + * .catch(err => console.error(err)); + * + * #### Java #### + * + * // This code sample uses the 'Unirest' library: + * // http://unirest.io/java.html + * HttpResponse response = Unirest.post("https://your-domain.atlassian.net/rest/api/2/issue/{issueIdOrKey}/attachments") + * .basicAuth("email@example.com", "") + * .header("Accept", "application/json") + * .header("X-Atlassian-Token", "no-check") + * .field("file", new File("myfile.txt")) + * .asJson(); + * + * System.out.println(response.getBody()); + * + * #### Python #### + * + * # This code sample uses the 'requests' library: + * # http://docs.python-requests.org + * import requests + * from requests.auth import HTTPBasicAuth + * import json + * + * url = "https://your-domain.atlassian.net/rest/api/2/issue/{issueIdOrKey}/attachments" + * + * auth = HTTPBasicAuth("email@example.com", "") + * + * headers = { + * "Accept": "application/json", + * "X-Atlassian-Token": "no-check" + * } + * + * response = requests.request( + * "POST", + * url, + * headers = headers, + * auth = auth, + * files = { + * "file": ("myfile.txt", open("myfile.txt","rb"), "application-type") + * } + * ) + * + * print(json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": "))) + * + * #### PHP #### + * + * // This code sample uses the 'Unirest' library: + * // http://unirest.io/php.html + * Unirest\Request::auth('email@example.com', ''); + * + * $headers = array( + * 'Accept' => 'application/json', + * 'X-Atlassian-Token' => 'no-check' + * ); + * + * $parameters = array( + * 'file' => File::add('myfile.txt') + * ); + * + * $response = Unirest\Request::post( + * 'https://your-domain.atlassian.net/rest/api/2/issue/{issueIdOrKey}/attachments', + * $headers, + * $parameters + * ); + * + * var_dump($response) + * + * #### Forge #### + * + * // This sample uses Atlassian Forge and the `form-data` library. + * // https://developer.atlassian.com/platform/forge/ + * // https://www.npmjs.com/package/form-data + * import api from "@forge/api"; + * import FormData from "form-data"; + * + * const form = new FormData(); + * form.append('file', fileStream, {knownLength: fileSizeInBytes}); + * + * const response = await api.asApp().requestJira('/rest/api/2/issue/{issueIdOrKey}/attachments', { + * method: 'POST', + * body: form, + * headers: { + * 'Accept': 'application/json', + * 'X-Atlassian-Token': 'no-check' + * } + * }); + * + * console.log(`Response: ${response.status} ${response.statusText}`); + * console.log(await response.json()); + * + * Tip: Use a client library. Many client libraries have classes for handling multipart POST operations. For example, in Java, the Apache HTTP Components library provides a [MultiPartEntity](http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html) class for multipart POST operations. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse Projects* and *Create attachments* [ 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. + */ + post: operations["addAttachment"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/changelog": { + /** + * Get changelogs + * @description Returns a [paginated](#pagination) list of all changelogs for an issue sorted by date, starting from the oldest. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + get: operations["getChangeLogs"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/changelog/list": { + /** + * Get changelogs by IDs + * @description Returns changelogs for an issue specified by a list of changelog IDs. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + post: operations["getChangeLogsByIds"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/comment": { + /** + * Get comments + * @description Returns all comments for an issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Comments are included in the response where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the comment. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is role visibility is restricted to. + */ + get: operations["getComments"]; + /** + * Add comment + * @description Adds a comment to an issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Add comments* [ project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue containing the comment is in. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + post: operations["addComment"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/comment/{id}": { + /** + * Get comment + * @description Returns a comment. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the comment. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted to. + */ + get: operations["getComment"]; + /** + * Update comment + * @description Updates a comment. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue containing the comment is in. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Edit all comments*[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any comment or *Edit own comments* to update comment created by the user. + * * If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted to. + */ + put: operations["updateComment"]; + /** + * Delete comment + * @description Deletes a comment. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue containing the comment is in. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Delete all comments*[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any comment or *Delete own comments* to delete comment created by the user, + * * If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted to. + */ + delete: operations["deleteComment"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/editmeta": { + /** + * Get edit issue metadata + * @description Returns the edit screen fields for an issue that are visible to and editable by the user. Use the information to populate the requests in [Edit issue](#api-rest-api-3-issue-issueIdOrKey-put). + * + * This endpoint will check for these conditions: + * + * 1. Field is available on a field screen - through screen, screen scheme, issue type screen scheme, and issue type scheme configuration. `overrideScreenSecurity=true` skips this condition. + * 2. Field is visible in the [field configuration](https://support.atlassian.com/jira-cloud-administration/docs/change-a-field-configuration/). `overrideScreenSecurity=true` skips this condition. + * 3. Field is shown on the issue: each field has different conditions here. For example: Attachment field only shows if attachments are enabled. Assignee only shows if user has permissions to assign the issue. + * 4. If a field is custom then it must have valid custom field context, applicable for its project and issue type. All system fields are assumed to have context in all projects and all issue types. + * 5. Issue has a project, issue type, and status defined. + * 6. Issue is assigned to a valid workflow, and the current status has assigned a workflow step. `overrideEditableFlag=true` skips this condition. + * 7. The current workflow step is editable. This is true by default, but [can be disabled by setting](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) the `jira.issue.editable` property to `false`. `overrideEditableFlag=true` skips this condition. + * 8. User has [Edit issues permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/). + * 9. Workflow permissions allow editing a field. This is true by default but [can be modified](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) using `jira.permission.*` workflow properties. + * + * Fields hidden using [Issue layout settings page](https://support.atlassian.com/jira-software-cloud/docs/configure-field-layout-in-the-issue-view/) remain editable. + * + * Connect apps having an app user with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), can return additional details using: + * + * * `overrideScreenSecurity` When this flag is `true`, then this endpoint skips checking if fields are available through screens, and field configuration (conditions 1. and 2. from the list above). + * * `overrideEditableFlag` When this flag is `true`, then this endpoint skips checking if workflow is present and if the current step is editable (conditions 6. and 7. from the list above). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * + * Note: For any fields to be editable the user must have the *Edit issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the issue. + */ + get: operations["getEditIssueMeta"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/notify": { + /** + * Send notification for issue + * @description Creates an email notification for an issue and adds it to the mail queue. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + post: operations["notify"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/properties": { + /** + * Get issue property keys + * @description Returns the URLs and keys of an issue's properties. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Property details are only returned where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + get: operations["getIssuePropertyKeys"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/properties/{propertyKey}": { + /** + * Get issue property + * @description Returns the key and value of an issue's property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + get: operations["getIssueProperty"]; + /** + * Set issue property + * @description Sets the value of an issue's property. Use this resource to store custom data against an issue. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + put: operations["setIssueProperty"]; + /** + * Delete issue property + * @description Deletes an issue's property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + delete: operations["deleteIssueProperty"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/remotelink": { + /** + * Get remote issue links + * @description Returns the remote issue links for an issue. When a remote issue link global ID is provided the record with that global ID is returned, otherwise all remote issue links are returned. Where a global ID includes reserved URL characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1` as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + get: operations["getRemoteIssueLinks"]; + /** + * Create or update remote issue link + * @description Creates or updates a remote issue link for an issue. + * + * If a `globalId` is provided and a remote issue link with that global ID is found it is updated. Any fields without values in the request are set to null. Otherwise, the remote issue link is created. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Link issues* [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. + */ + post: operations["createOrUpdateRemoteIssueLink"]; + /** + * Delete remote issue link by global ID + * @description Deletes the remote issue link from the issue using the link's global ID. Where the global ID includes reserved URL characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1` as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Link issues* [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 implemented, issue-level security permission to view the issue. + */ + delete: operations["deleteRemoteIssueLinkByGlobalId"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/remotelink/{linkId}": { + /** + * Get remote issue link by ID + * @description Returns a remote issue link for an issue. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + get: operations["getRemoteIssueLinkById"]; + /** + * Update remote issue link by ID + * @description Updates a remote issue link for an issue. + * + * Note: Fields without values in the request are set to null. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Link issues* [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. + */ + put: operations["updateRemoteIssueLink"]; + /** + * Delete remote issue link by ID + * @description Deletes a remote issue link from an issue. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects*, *Edit issues*, and *Link issues* [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. + */ + delete: operations["deleteRemoteIssueLinkById"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/transitions": { + /** + * Get transitions + * @description Returns either all transitions or a transition that can be performed by the user on an issue, based on the issue's status. + * + * Note, if a request is made for a transition that does not exist or cannot be performed on the issue, given its status, the response will return any empty transitions list. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required: A list or transition is returned only when the user has:** + * + * * *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. + * + * However, if the user does not have the *Transition issues* [ project permission](https://confluence.atlassian.com/x/yodKLg) the response will not list any transitions. + */ + get: operations["getTransitions"]; + /** + * Transition issue + * @description Performs an issue transition and, if the transition has a screen, updates the fields from the transition screen. + * + * sortByCategory To update the fields on the transition screen, specify the fields in the `fields` or `update` parameters in the request body. Get details about the fields using [ Get transitions](#api-rest-api-3-issue-issueIdOrKey-transitions-get) with the `transitions.fields` expand. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Transition issues* [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. + */ + post: operations["doTransition"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/votes": { + /** + * Get votes + * @description Returns details about the votes on an issue. + * + * This operation requires the **Allow users to vote on issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is ini + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * + * Note that users with the necessary permissions for this operation but without the *View voters and watchers* project permissions are not returned details in the `voters` field. + */ + get: operations["getVotes"]; + /** + * Add vote + * @description Adds the user's vote to an issue. This is the equivalent of the user clicking *Vote* on an issue in Jira. + * + * This operation requires the **Allow users to vote on issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + post: operations["addVote"]; + /** + * Delete vote + * @description Deletes a user's vote from an issue. This is the equivalent of the user clicking *Unvote* on an issue in Jira. + * + * This operation requires the **Allow users to vote on issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + delete: operations["removeVote"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/watchers": { + /** + * Get issue watchers + * @description Returns the watchers for an issue. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is ini + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * To see details of users on the watchlist other than themselves, *View voters and watchers* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in. + */ + get: operations["getIssueWatchers"]; + /** + * Add watcher + * @description Adds a user as a watcher of an issue by passing the account ID of the user. For example, `"5b10ac8d82e05b22cc7d4ef5"`. If no user is specified the calling user is added. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * To add users other than themselves to the watchlist, *Manage watcher list* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in. + */ + post: operations["addWatcher"]; + /** + * Delete watcher + * @description Deletes a user as a watcher of an issue. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * To remove users other than themselves from the watchlist, *Manage watcher list* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in. + */ + delete: operations["removeWatcher"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/worklog": { + /** + * Get issue worklogs + * @description Returns worklogs for an issue, starting from the oldest worklog or from the worklog started on or after a date and time. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Workloads are only returned where the user has: + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + get: operations["getIssueWorklog"]; + /** + * Add worklog + * @description Adds a worklog to an issue. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Work on issues* [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. + */ + post: operations["addWorklog"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/worklog/{id}": { + /** + * Get worklog + * @description Returns a worklog. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + get: operations["getWorklog"]; + /** + * Update worklog + * @description Updates a worklog. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * *Edit all worklogs*[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or *Edit own worklogs* to update worklogs created by the user. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + put: operations["updateWorklog"]; + /** + * Delete worklog + * @description Deletes a worklog from an issue. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * *Delete all worklogs*[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any worklog or *Delete own worklogs* to delete worklogs created by the user, + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + delete: operations["deleteWorklog"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}/properties": { + /** + * Get worklog property keys + * @description Returns the keys of all properties for a worklog. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + get: operations["getWorklogPropertyKeys"]; + }; + "/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}/properties/{propertyKey}": { + /** + * Get worklog property + * @description Returns the value of a worklog property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + get: operations["getWorklogProperty"]; + /** + * Set worklog property + * @description Sets the value of a worklog property. Use this operation to store custom data against the worklog. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * *Edit all worklogs*[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or *Edit own worklogs* to update worklogs created by the user. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + put: operations["setWorklogProperty"]; + /** + * Delete worklog property + * @description Deletes a worklog property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + delete: operations["deleteWorklogProperty"]; + }; + "/rest/api/3/issueLink": { + /** + * Create issue link + * @description Creates a link between two issues. Use this operation to indicate a relationship between two issues and optionally add a comment to the from (outward) issue. To use this resource the site must have [Issue Linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * This resource returns nothing on the creation of an issue link. To obtain the ID of the issue link, use `https://your-domain.atlassian.net/rest/api/3/issue/[linked issue key]?fields=issuelinks`. + * + * If the link request duplicates a link, the response indicates that the issue link was created. If the request included a comment, the comment is added. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse project* [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the issues to be linked, + * * *Link issues* [project permission](https://confluence.atlassian.com/x/yodKLg) on the project containing the from (outward) issue, + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + post: operations["linkIssues"]; + }; + "/rest/api/3/issueLink/{linkId}": { + /** + * Get issue link + * @description Returns an issue link. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse project* [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the linked issues. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the issues. + */ + get: operations["getIssueLink"]; + /** + * Delete issue link + * @description Deletes an issue link. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * Browse project [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the issues in the link. + * * *Link issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one of the projects containing issues in the link. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the issues. + */ + delete: operations["deleteIssueLink"]; + }; + "/rest/api/3/issueLinkType": { + /** + * Get issue link types + * @description Returns a list of all issue link types. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site. + */ + get: operations["getIssueLinkTypes"]; + /** + * Create issue link type + * @description Creates an issue link type. Use this operation to create descriptions of the reasons why issues are linked. The issue link type consists of a name and descriptions for a link's inward and outward relationships. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createIssueLinkType"]; + }; + "/rest/api/3/issueLinkType/{issueLinkTypeId}": { + /** + * Get issue link type + * @description Returns an issue link type. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site. + */ + get: operations["getIssueLinkType"]; + /** + * Update issue link type + * @description Updates an issue link type. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateIssueLinkType"]; + /** + * Delete issue link type + * @description Deletes an issue link type. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteIssueLinkType"]; + }; + "/rest/api/3/issues/archive/export": { + /** + * Export archived issue(s) + * @description Enables admins to retrieve details of all archived issues. Upon a successful request, the admin who submitted it will receive an email with a link to download a CSV file with the issue details. + * + * Note that this API only exports the values of system fields and archival-specific fields (`ArchivedBy` and `ArchivedDate`). Custom fields aren't supported. + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + * + * **Rate limiting:** Only a single request can be active at any given time. + */ + put: operations["exportArchivedIssues"]; + }; + "/rest/api/3/issuesecurityschemes": { + /** + * Get issue security schemes + * @description Returns all [issue security schemes](https://confluence.atlassian.com/x/J4lKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueSecuritySchemes"]; + /** + * Create issue security scheme + * @description Creates a security scheme with security scheme levels and levels' members. You can create up to 100 security scheme levels and security scheme levels' members per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createIssueSecurityScheme"]; + }; + "/rest/api/3/issuesecurityschemes/level": { + /** + * Get issue security levels + * @description Returns a [paginated](#pagination) list of issue security levels. + * + * Only issue security levels in the context of classic projects are returned. + * + * Filtering using IDs is inclusive: if you specify both security scheme IDs and level IDs, the result will include both specified issue security levels and all issue security levels from the specified schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getSecurityLevels"]; + }; + "/rest/api/3/issuesecurityschemes/level/default": { + /** + * Set default issue security levels + * @description Sets default issue security levels for schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setDefaultLevels"]; + }; + "/rest/api/3/issuesecurityschemes/level/member": { + /** + * Get issue security level members + * @description Returns a [paginated](#pagination) list of issue security level members. + * + * Only issue security level members in the context of classic projects are returned. + * + * Filtering using parameters is inclusive: if you specify both security scheme IDs and level IDs, the result will include all issue security level members from the specified schemes and levels. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getSecurityLevelMembers"]; + }; + "/rest/api/3/issuesecurityschemes/project": { + /** + * Get projects using issue security schemes + * @description Returns a [paginated](#pagination) mapping of projects that are using security schemes. You can provide either one or multiple security scheme IDs or project IDs to filter by. If you don't provide any, this will return a list of all mappings. Only issue security schemes in the context of classic projects are supported. **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["searchProjectsUsingSecuritySchemes"]; + /** + * Associate security scheme to project + * @description Associates an issue security scheme with a project and remaps security levels of issues to the new levels, if provided. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["associateSchemesToProjects"]; + }; + "/rest/api/3/issuesecurityschemes/search": { + /** + * Search issue security schemes + * @description Returns a [paginated](#pagination) list of issue security schemes. + * If you specify the project ID parameter, the result will contain issue security schemes and related project IDs you filter by. Use \{@link IssueSecuritySchemeResource\#searchProjectsUsingSecuritySchemes(String, String, Set, Set)\} to obtain all projects related to scheme. + * + * Only issue security schemes in the context of classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["searchSecuritySchemes"]; + }; + "/rest/api/3/issuesecurityschemes/{id}": { + /** + * Get issue security scheme + * @description Returns an issue security scheme along with its security levels. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project that uses the requested issue security scheme. + */ + get: operations["getIssueSecurityScheme"]; + /** + * Update issue security scheme + * @description Updates the issue security scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateIssueSecurityScheme"]; + }; + "/rest/api/3/issuesecurityschemes/{issueSecuritySchemeId}/members": { + /** + * Get issue security level members + * @description Returns issue security level members. + * + * Only issue security level members in context of classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueSecurityLevelMembers"]; + }; + "/rest/api/3/issuesecurityschemes/{schemeId}": { + /** + * Delete issue security scheme + * @description Deletes an issue security scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteSecurityScheme"]; + }; + "/rest/api/3/issuesecurityschemes/{schemeId}/level": { + /** + * Add issue security levels + * @description Adds levels and levels' members to the issue security scheme. You can add up to 100 levels per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["addSecurityLevel"]; + }; + "/rest/api/3/issuesecurityschemes/{schemeId}/level/{levelId}": { + /** + * Update issue security level + * @description Updates the issue security level. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateSecurityLevel"]; + /** + * Remove issue security level + * @description Deletes an issue security level. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["removeLevel"]; + }; + "/rest/api/3/issuesecurityschemes/{schemeId}/level/{levelId}/member": { + /** + * Add issue security level members + * @description Adds members to the issue security level. You can add up to 100 members per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["addSecurityLevelMembers"]; + }; + "/rest/api/3/issuesecurityschemes/{schemeId}/level/{levelId}/member/{memberId}": { + /** + * Remove member from issue security level + * @description Removes an issue security level member from an issue security scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["removeMemberFromSecurityLevel"]; + }; + "/rest/api/3/issuetype": { + /** + * Get all issue types for user + * @description Returns all issue types. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Issue types are only returned as follows: + * + * * if the user has the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), all issue types are returned. + * * if the user has the *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, the issue types associated with the projects the user has permission to browse are returned. + */ + get: operations["getIssueAllTypes"]; + /** + * Create issue type + * @description Creates an issue type and adds it to the default issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createIssueType"]; + }; + "/rest/api/3/issuetype/project": { + /** + * Get issue types for project + * @description Returns issue types for a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) in the relevant project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypesForProject"]; + }; + "/rest/api/3/issuetype/{id}": { + /** + * Get issue type + * @description Returns an issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) in a project the issue type is associated with or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueType"]; + /** + * Update issue type + * @description Updates the issue type. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateIssueType"]; + /** + * Delete issue type + * @description Deletes the issue type. If the issue type is in use, all uses are updated with the alternative issue type (`alternativeIssueTypeId`). A list of alternative issue types are obtained from the [Get alternative issue types](#api-rest-api-3-issuetype-id-alternatives-get) resource. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteIssueType"]; + }; + "/rest/api/3/issuetype/{id}/alternatives": { + /** + * Get alternative issue types + * @description Returns a list of issue types that can be used to replace the issue type. The alternative issue types are those assigned to the same workflow scheme, field configuration scheme, and screen scheme. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAlternativeIssueTypes"]; + }; + "/rest/api/3/issuetype/{id}/avatar2": { + /** + * Load issue type avatar + * @description Loads an avatar for the issue type. + * + * Specify the avatar's local file location in the body of the request. Also, include the following headers: + * + * * `X-Atlassian-Token: no-check` To prevent XSRF protection blocking the request, for more information see [Special Headers](#special-request-headers). + * * `Content-Type: image/image type` Valid image types are JPEG, GIF, or PNG. + * + * For example: + * `curl --request POST \ --user email@example.com: \ --header 'X-Atlassian-Token: no-check' \ --header 'Content-Type: image/< image_type>' \ --data-binary "<@/path/to/file/with/your/avatar>" \ --url 'https://your-domain.atlassian.net/rest/api/3/issuetype/{issueTypeId}'This` + * + * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of the image. The length of the square's sides is set to the smaller of the height or width of the image. + * + * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size. + * + * After creating the avatar, use [ Update issue type](#api-rest-api-3-issuetype-id-put) to set it as the issue type's displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createIssueTypeAvatar"]; + }; + "/rest/api/3/issuetype/{issueTypeId}/properties": { + /** + * Get issue type property keys + * @description Returns all the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties) keys of the issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the property keys of any issue type. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) to get the property keys of any issue types associated with the projects the user has permission to browse. + */ + get: operations["getIssueTypePropertyKeys"]; + }; + "/rest/api/3/issuetype/{issueTypeId}/properties/{propertyKey}": { + /** + * Get issue type property + * @description Returns the key and value of the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the details of any issue type. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) to get the details of any issue types associated with the projects the user has permission to browse. + */ + get: operations["getIssueTypeProperty"]; + /** + * Set issue type property + * @description Creates or updates the value of the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). Use this resource to store and update data against an issue type. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setIssueTypeProperty"]; + /** + * Delete issue type property + * @description Deletes the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteIssueTypeProperty"]; + }; + "/rest/api/3/issuetypescheme": { + /** + * Get all issue type schemes + * @description Returns a [paginated](#pagination) list of issue type schemes. + * + * Only issue type schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllIssueTypeSchemes"]; + /** + * Create issue type scheme + * @description Creates an issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createIssueTypeScheme"]; + }; + "/rest/api/3/issuetypescheme/mapping": { + /** + * Get issue type scheme items + * @description Returns a [paginated](#pagination) list of issue type scheme items. + * + * Only issue type scheme items used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypeSchemesMapping"]; + }; + "/rest/api/3/issuetypescheme/project": { + /** + * Get issue type schemes for projects + * @description Returns a [paginated](#pagination) list of issue type schemes and, for each issue type scheme, a list of the projects that use it. + * + * Only issue type schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypeSchemeForProjects"]; + /** + * Assign issue type scheme to project + * @description Assigns an issue type scheme to a project. + * + * If any issues in the project are assigned issue types not present in the new scheme, the operation will fail. To complete the assignment those issues must be updated to use issue types in the new scheme. + * + * Issue type schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["assignIssueTypeSchemeToProject"]; + }; + "/rest/api/3/issuetypescheme/{issueTypeSchemeId}": { + /** + * Update issue type scheme + * @description Updates an issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateIssueTypeScheme"]; + /** + * Delete issue type scheme + * @description Deletes an issue type scheme. + * + * Only issue type schemes used in classic projects can be deleted. + * + * Any projects assigned to the scheme are reassigned to the default issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteIssueTypeScheme"]; + }; + "/rest/api/3/issuetypescheme/{issueTypeSchemeId}/issuetype": { + /** + * Add issue types to issue type scheme + * @description Adds issue types to an issue type scheme. + * + * The added issue types are appended to the issue types list. + * + * If any of the issue types exist in the issue type scheme, the operation fails and no issue types are added. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["addIssueTypesToIssueTypeScheme"]; + }; + "/rest/api/3/issuetypescheme/{issueTypeSchemeId}/issuetype/move": { + /** + * Change order of issue types + * @description Changes the order of issue types in an issue type scheme. + * + * The request body parameters must meet the following requirements: + * + * * all of the issue types must belong to the issue type scheme. + * * either `after` or `position` must be provided. + * * the issue type in `after` must not be in the issue type list. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["reorderIssueTypesInIssueTypeScheme"]; + }; + "/rest/api/3/issuetypescheme/{issueTypeSchemeId}/issuetype/{issueTypeId}": { + /** + * Remove issue type from issue type scheme + * @description Removes an issue type from an issue type scheme. + * + * This operation cannot remove: + * + * * any issue type used by issues. + * * any issue types from the default issue type scheme. + * * the last standard issue type from an issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["removeIssueTypeFromIssueTypeScheme"]; + }; + "/rest/api/3/issuetypescreenscheme": { + /** + * Get issue type screen schemes + * @description Returns a [paginated](#pagination) list of issue type screen schemes. + * + * Only issue type screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypeScreenSchemes"]; + /** + * Create issue type screen scheme + * @description Creates an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createIssueTypeScreenScheme"]; + }; + "/rest/api/3/issuetypescreenscheme/mapping": { + /** + * Get issue type screen scheme items + * @description Returns a [paginated](#pagination) list of issue type screen scheme items. + * + * Only issue type screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypeScreenSchemeMappings"]; + }; + "/rest/api/3/issuetypescreenscheme/project": { + /** + * Get issue type screen schemes for projects + * @description Returns a [paginated](#pagination) list of issue type screen schemes and, for each issue type screen scheme, a list of the projects that use it. + * + * Only issue type screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueTypeScreenSchemeProjectAssociations"]; + /** + * Assign issue type screen scheme to project + * @description Assigns an issue type screen scheme to a project. + * + * Issue type screen schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["assignIssueTypeScreenSchemeToProject"]; + }; + "/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}": { + /** + * Update issue type screen scheme + * @description Updates an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateIssueTypeScreenScheme"]; + /** + * Delete issue type screen scheme + * @description Deletes an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteIssueTypeScreenScheme"]; + }; + "/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}/mapping": { + /** + * Append mappings to issue type screen scheme + * @description Appends issue type to screen scheme mappings to an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["appendMappingsForIssueTypeScreenScheme"]; + }; + "/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}/mapping/default": { + /** + * Update issue type screen scheme default screen scheme + * @description Updates the default screen scheme of an issue type screen scheme. The default screen scheme is used for all unmapped issue types. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateDefaultScreenScheme"]; + }; + "/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}/mapping/remove": { + /** + * Remove mappings from issue type screen scheme + * @description Removes issue type to screen scheme mappings from an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["removeMappingsFromIssueTypeScreenScheme"]; + }; + "/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}/project": { + /** + * Get issue type screen scheme projects + * @description Returns a [paginated](#pagination) list of projects associated with an issue type screen scheme. + * + * Only company-managed projects associated with an issue type screen scheme are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getProjectsForIssueTypeScreenScheme"]; + }; + "/rest/api/3/jql/autocompletedata": { + /** + * Get field reference data (GET) + * @description Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom query builder. + * + * To filter visible field details by project or collapse non-unique fields by field type then [Get field reference data (POST)](#api-rest-api-3-jql-autocompletedata-post) can be used. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAutoComplete"]; + /** + * Get field reference data (POST) + * @description Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom query builder. + * + * This operation can filter the custom fields returned by project. Invalid project IDs in `projectIds` are ignored. System fields are always returned. + * + * It can also return the collapsed field for custom fields. Collapsed fields enable searches to be performed across all fields with the same name and of the same field type. For example, the collapsed field `Component - Component[Dropdown]` enables dropdown fields `Component - cf[10061]` and `Component - cf[10062]` to be searched simultaneously. + * + * **[Permissions](#permissions) required:** None. + */ + post: operations["getAutoCompletePost"]; + }; + "/rest/api/3/jql/autocompletedata/suggestions": { + /** + * Get field auto complete suggestions + * @description Returns the JQL search auto complete suggestions for a field. + * + * Suggestions can be obtained by providing: + * + * * `fieldName` to get a list of all values for the field. + * * `fieldName` and `fieldValue` to get a list of values containing the text in `fieldValue`. + * * `fieldName` and `predicateName` to get a list of all predicate values for the field. + * * `fieldName`, `predicateName`, and `predicateValue` to get a list of predicate values containing the text in `predicateValue`. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getFieldAutoCompleteForQueryString"]; + }; + "/rest/api/3/jql/function/computation": { + /** + * Get precomputations (apps) + * @description Returns the list of a function's precomputations along with information about when they were created, updated, and last used. Each precomputation has a `value` \- the JQL fragment to replace the custom function clause with. + * + * **[Permissions](#permissions) required:** This API is only accessible to apps and apps can only inspect their own functions. + */ + get: operations["getPrecomputations"]; + /** + * Update precomputations (apps) + * @description Update the precomputation value of a function created by a Forge/Connect app. + * + * **[Permissions](#permissions) required:** An API for apps to update their own precomputations. + */ + post: operations["updatePrecomputations"]; + }; + "/rest/api/3/jql/match": { + /** + * Check issues against JQL + * @description Checks whether one or more issues would be returned by one or more JQL queries. + * + * **[Permissions](#permissions) required:** None, however, issues are only matched against JQL queries where the user has: + * + * * *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. + */ + post: operations["matchIssues"]; + }; + "/rest/api/3/jql/parse": { + /** + * Parse JQL query + * @description Parses and validates JQL queries. + * + * Validation is performed in context of the current user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + post: operations["parseJqlQueries"]; + }; + "/rest/api/3/jql/pdcleaner": { + /** + * Convert user identifiers to account IDs in JQL queries + * @description Converts one or more JQL queries with user identifiers (username or user key) to equivalent JQL queries with account IDs. + * + * You may wish to use this operation if your system stores JQL queries and you want to make them GDPR-compliant. For more information about GDPR-related changes, see the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/). + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + post: operations["migrateQueries"]; + }; + "/rest/api/3/jql/sanitize": { + /** + * Sanitize JQL queries + * @description Sanitizes one or more JQL queries by converting readable details into IDs where a user doesn't have permission to view the entity. + * + * For example, if the query contains the clause *project = 'Secret project'*, and a user does not have browse permission for the project "Secret project", the sanitized query replaces the clause with *project = 12345"* (where 12345 is the ID of the project). If a user has the required permission, the clause is not sanitized. If the account ID is null, sanitizing is performed for an anonymous user. + * + * Note that sanitization doesn't make the queries GDPR-compliant, because it doesn't remove user identifiers (username or user key). If you need to make queries GDPR-compliant, use [Convert user identifiers to account IDs in JQL queries](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-jql/#api-rest-api-3-jql-sanitize-post). + * + * Before sanitization each JQL query is parsed. The queries are returned in the same order that they were passed. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["sanitiseJqlQueries"]; + }; + "/rest/api/3/label": { + /** + * Get all labels + * @description Returns a [paginated](#pagination) list of labels. + */ + get: operations["getAllLabels"]; + }; + "/rest/api/3/license/approximateLicenseCount": { + /** + * Get approximate license count + * @description Returns the approximate number of user accounts across all Jira licenses. Note that this information is cached with a 7-day lifecycle and could be stale at the time of call. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getApproximateLicenseCount"]; + }; + "/rest/api/3/license/approximateLicenseCount/product/{applicationKey}": { + /** + * Get approximate application license count + * @description Returns the total approximate number of user accounts for a single Jira license. Note that this information is cached with a 7-day lifecycle and could be stale at the time of call. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getApproximateApplicationLicenseCount"]; + }; + "/rest/api/3/mypermissions": { + /** + * Get my permissions + * @description Returns a list of permissions indicating which permissions the user has. Details of the user's permissions can be obtained in a global, project, issue or comment context. + * + * The user is reported as having a project permission: + * + * * in the global context, if the user has the project permission in any project. + * * for a project, where the project permission is determined using issue data, if the user meets the permission's criteria for any issue in the project. Otherwise, if the user has the project permission in the project. + * * for an issue, where a project permission is determined using issue data, if the user has the permission in the issue. Otherwise, if the user has the project permission in the project containing the issue. + * * for a comment, where the user has both the permission to browse the comment and the project permission for the comment's parent issue. Only the BROWSE\_PROJECTS permission is supported. If a `commentId` is provided whose `permissions` does not equal BROWSE\_PROJECTS, a 400 error will be returned. + * + * This means that users may be shown as having an issue permission (such as EDIT\_ISSUES) in the global context or a project context but may not have the permission for any or all issues. For example, if Reporters have the EDIT\_ISSUES permission a user would be shown as having this permission in the global context or the context of a project, because any user can be a reporter. However, if they are not the user who reported the issue queried they would not have EDIT\_ISSUES permission for that issue. + * + * Global permissions are unaffected by context. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:permission:jira` + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getMyPermissions"]; + }; + "/rest/api/3/mypreferences": { + /** + * Get preference + * @description Returns the value of a preference of the current user. + * + * Note that these keys are deprecated: + * + * * *jira.user.locale* The locale of the user. By default this is not set and the user takes the locale of the instance. + * * *jira.user.timezone* The time zone of the user. By default this is not set and the user takes the timezone of the instance. + * + * These system preferences keys will be deprecated by 15/07/2024. You can still retrieve these keys, but it will not have any impact on Notification behaviour. + * + * * *user.notifiy.own.changes* Whether the user gets notified of their own changes. + * * *user.notifications.watcher* Whether the user gets notified when they are watcher. + * * *user.notifications.assignee* Whether the user gets notified when they are assignee. + * * *user.notifications.reporter* Whether the user gets notified when they are reporter. + * * *user.notifications.mentions* Whether the user gets notified when they are mentions. + * + * Use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API to manage timezone and locale instead. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getPreference"]; + /** + * Set preference + * @description Creates a preference for the user or updates a preference's value by sending a plain text string. For example, `false`. An arbitrary preference can be created with the value containing up to 255 characters. In addition, the following keys define system preferences that can be set or created: + * + * * *user.notifications.mimetype* The mime type used in notifications sent to the user. Defaults to `html`. + * * *user.default.share.private* Whether new [ filters](https://confluence.atlassian.com/x/eQiiLQ) are set to private. Defaults to `true`. + * * *user.keyboard.shortcuts.disabled* Whether keyboard shortcuts are disabled. Defaults to `false`. + * * *user.autowatch.disabled* Whether the user automatically watches issues they create or add a comment to. By default, not set: the user takes the instance autowatch setting. + * + * Note that these keys are deprecated: + * + * * *jira.user.locale* The locale of the user. By default, not set. The user takes the instance locale. + * * *jira.user.timezone* The time zone of the user. By default, not set. The user takes the instance timezone. + * + * These system preferences keys will be deprecated by 15/07/2024. You can still use these keys to create arbitrary preferences, but it will not have any impact on Notification behaviour. + * + * * *user.notifiy.own.changes* Whether the user gets notified of their own changes. + * * *user.notifications.watcher* Whether the user gets notified when they are watcher. + * * *user.notifications.assignee* Whether the user gets notified when they are assignee. + * * *user.notifications.reporter* Whether the user gets notified when they are reporter. + * * *user.notifications.mentions* Whether the user gets notified when they are mentions. + * + * Use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API to manage timezone and locale instead. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + put: operations["setPreference"]; + /** + * Delete preference + * @description Deletes a preference of the user, which restores the default value of system defined settings. + * + * Note that these keys are deprecated: + * + * * *jira.user.locale* The locale of the user. By default, not set. The user takes the instance locale. + * * *jira.user.timezone* The time zone of the user. By default, not set. The user takes the instance timezone. + * + * Use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API to manage timezone and locale instead. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + delete: operations["removePreference"]; + }; + "/rest/api/3/mypreferences/locale": { + /** + * Get locale + * @description Returns the locale for the user. + * + * If the user has no language preference set (which is the default setting) or this resource is accessed anonymous, the browser locale detected by Jira is returned. Jira detects the browser locale using the *Accept-Language* header in the request. However, if this doesn't match a locale available Jira, the site default locale is returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getLocale"]; + /** + * Set locale + * @deprecated + * @description Deprecated, use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API instead. + * + * Sets the locale of the user. The locale must be one supported by the instance of Jira. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + put: operations["setLocale"]; + /** + * Delete locale + * @deprecated + * @description Deprecated, use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API instead. + * + * Deletes the locale of the user, which restores the default setting. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + delete: operations["deleteLocale"]; + }; + "/rest/api/3/myself": { + /** + * Get current user + * @description Returns details for the current user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getCurrentUser"]; + }; + "/rest/api/3/notificationscheme": { + /** + * Get notification schemes paginated + * @description Returns a [paginated](#pagination) list of [notification schemes](https://confluence.atlassian.com/x/8YdKLg) ordered by the display name. + * + * *Note that you should allow for events without recipients to appear in responses.* + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, the user must have permission to administer at least one project associated with a notification scheme for it to be returned. + */ + get: operations["getNotificationSchemes"]; + /** + * Create notification scheme + * @description Creates a notification scheme with notifications. You can create up to 1000 notifications per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createNotificationScheme"]; + }; + "/rest/api/3/notificationscheme/project": { + /** + * Get projects using notification schemes paginated + * @description Returns a [paginated](#pagination) mapping of project that have notification scheme assigned. You can provide either one or multiple notification scheme IDs or project IDs to filter by. If you don't provide any, this will return a list of all mappings. Note that only company-managed (classic) projects are supported. This is because team-managed projects don't have a concept of a default notification scheme. The mappings are ordered by projectId. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getNotificationSchemeToProjectMappings"]; + }; + "/rest/api/3/notificationscheme/{id}": { + /** + * Get notification scheme + * @description Returns a [notification scheme](https://confluence.atlassian.com/x/8YdKLg), including the list of events and the recipients who will receive notifications for those events. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, the user must have permission to administer at least one project associated with the notification scheme. + */ + get: operations["getNotificationScheme"]; + /** + * Update notification scheme + * @description Updates a notification scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateNotificationScheme"]; + }; + "/rest/api/3/notificationscheme/{id}/notification": { + /** + * Add notifications to notification scheme + * @description Adds notifications to a notification scheme. You can add up to 1000 notifications per request. + * + * *Deprecated: The notification type `EmailAddress` is no longer supported in Cloud. Refer to the [changelog](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-1031) for more details.* + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["addNotifications"]; + }; + "/rest/api/3/notificationscheme/{notificationSchemeId}": { + /** + * Delete notification scheme + * @description Deletes a notification scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteNotificationScheme"]; + }; + "/rest/api/3/notificationscheme/{notificationSchemeId}/notification/{notificationId}": { + /** + * Remove notification from notification scheme + * @description Removes a notification from a notification scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["removeNotificationFromNotificationScheme"]; + }; + "/rest/api/3/permissions": { + /** + * Get all permissions + * @description Returns all permissions, including: + * + * * global permissions. + * * project permissions. + * * global permissions added by plugins. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllPermissions"]; + }; + "/rest/api/3/permissions/check": { + /** + * Get bulk permissions + * @description Returns: + * + * * for a list of global permissions, the global permissions granted to a user. + * * for a list of project permissions and lists of projects and issues, for each project permission a list of the projects and issues a user can access or manipulate. + * + * If no account ID is provided, the operation returns details for the logged in user. + * + * Note that: + * + * * Invalid project and issue IDs are ignored. + * * A maximum of 1000 projects and 1000 issues can be checked. + * * Null values in `globalPermissions`, `projectPermissions`, `projectPermissions.projects`, and `projectPermissions.issues` are ignored. + * * Empty strings in `projectPermissions.permissions` are ignored. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:permission:jira` + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) to check the permissions for other users, otherwise none. However, Connect apps can make a call from the app server to the product to obtain permission details for any user, without admin permission. This Connect app ability doesn't apply to calls made using AP.request() in a browser. + */ + post: operations["getBulkPermissions"]; + }; + "/rest/api/3/permissions/project": { + /** + * Get permitted projects + * @description Returns all the projects where the user is granted a list of project permissions. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:permission:jira`, `read:project:jira` + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + post: operations["getPermittedProjects"]; + }; + "/rest/api/3/permissionscheme": { + /** + * Get all permission schemes + * @description Returns all permission schemes. + * + * ### About permission schemes and grants ### + * + * A permission scheme is a collection of permission grants. A permission grant consists of a `holder` and a `permission`. + * + * #### Holder object #### + * + * The `holder` object contains information about the user or group being granted the permission. For example, the *Administer projects* permission is granted to a group named *Teams in space administrators*. In this case, the type is `"type": "group"`, and the parameter is the group name, `"parameter": "Teams in space administrators"` and the value is group ID, `"value": "ca85fac0-d974-40ca-a615-7af99c48d24f"`. + * + * The `holder` object is defined by the following properties: + * + * * `type` Identifies the user or group (see the list of types below). + * * `parameter` As a group's name can change, use of `value` is recommended. The value of this property depends on the `type`. For example, if the `type` is a group, then you need to specify the group name. + * * `value` The value of this property depends on the `type`. If the `type` is a group, then you need to specify the group ID. For other `type` it has the same value as `parameter` + * + * The following `types` are available. The expected values for `parameter` and `value` are given in parentheses (some types may not have a `parameter` or `value`): + * + * * `anyone` Grant for anonymous users. + * * `applicationRole` Grant for users with access to the specified application (application name, application name). See [Update product access settings](https://confluence.atlassian.com/x/3YxjL) for more information. + * * `assignee` Grant for the user currently assigned to an issue. + * * `group` Grant for the specified group (`parameter` : group name, `value` : group ID). + * * `groupCustomField` Grant for a user in the group selected in the specified custom field (`parameter` : custom field ID, `value` : custom field ID). + * * `projectLead` Grant for a project lead. + * * `projectRole` Grant for the specified project role (`parameter` :project role ID, `value` : project role ID). + * * `reporter` Grant for the user who reported the issue. + * * `sd.customer.portal.only` Jira Service Desk only. Grants customers permission to access the customer portal but not Jira. See [Customizing Jira Service Desk permissions](https://confluence.atlassian.com/x/24dKLg) for more information. + * * `user` Grant for the specified user (`parameter` : user ID - historically this was the userkey but that is deprecated and the account ID should be used, `value` : user ID). + * * `userCustomField` Grant for a user selected in the specified custom field (`parameter` : custom field ID, `value` : custom field ID). + * + * #### Built-in permissions #### + * + * The [built-in Jira permissions](https://confluence.atlassian.com/x/yodKLg) are listed below. Apps can also define custom permissions. See the [project permission](https://developer.atlassian.com/cloud/jira/platform/modules/project-permission/) and [global permission](https://developer.atlassian.com/cloud/jira/platform/modules/global-permission/) module documentation for more information. + * + * **Project permissions** + * + * * `ADMINISTER_PROJECTS` + * * `BROWSE_PROJECTS` + * * `MANAGE_SPRINTS_PERMISSION` (Jira Software only) + * * `SERVICEDESK_AGENT` (Jira Service Desk only) + * * `VIEW_DEV_TOOLS` (Jira Software only) + * * `VIEW_READONLY_WORKFLOW` + * + * **Issue permissions** + * + * * `ASSIGNABLE_USER` + * * `ASSIGN_ISSUES` + * * `CLOSE_ISSUES` + * * `CREATE_ISSUES` + * * `DELETE_ISSUES` + * * `EDIT_ISSUES` + * * `LINK_ISSUES` + * * `MODIFY_REPORTER` + * * `MOVE_ISSUES` + * * `RESOLVE_ISSUES` + * * `SCHEDULE_ISSUES` + * * `SET_ISSUE_SECURITY` + * * `TRANSITION_ISSUES` + * + * **Voters and watchers permissions** + * + * * `MANAGE_WATCHERS` + * * `VIEW_VOTERS_AND_WATCHERS` + * + * **Comments permissions** + * + * * `ADD_COMMENTS` + * * `DELETE_ALL_COMMENTS` + * * `DELETE_OWN_COMMENTS` + * * `EDIT_ALL_COMMENTS` + * * `EDIT_OWN_COMMENTS` + * + * **Attachments permissions** + * + * * `CREATE_ATTACHMENTS` + * * `DELETE_ALL_ATTACHMENTS` + * * `DELETE_OWN_ATTACHMENTS` + * + * **Time tracking permissions** + * + * * `DELETE_ALL_WORKLOGS` + * * `DELETE_OWN_WORKLOGS` + * * `EDIT_ALL_WORKLOGS` + * * `EDIT_OWN_WORKLOGS` + * * `WORK_ON_ISSUES` + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getAllPermissionSchemes"]; + /** + * Create permission scheme + * @description Creates a new permission scheme. You can create a permission scheme with or without defining a set of permission grants. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createPermissionScheme"]; + }; + "/rest/api/3/permissionscheme/{schemeId}": { + /** + * Get permission scheme + * @description Returns a permission scheme. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getPermissionScheme"]; + /** + * Update permission scheme + * @description Updates a permission scheme. Below are some important things to note when using this resource: + * + * * If a permissions list is present in the request, then it is set in the permission scheme, overwriting *all existing* grants. + * * If you want to update only the name and description, then do not send a permissions list in the request. + * * Sending an empty list will remove all permission grants from the permission scheme. + * + * If you want to add or delete a permission grant instead of updating the whole list, see [Create permission grant](#api-rest-api-3-permissionscheme-schemeId-permission-post) or [Delete permission scheme entity](#api-rest-api-3-permissionscheme-schemeId-permission-permissionId-delete). + * + * See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more details. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updatePermissionScheme"]; + /** + * Delete permission scheme + * @description Deletes a permission scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deletePermissionScheme"]; + }; + "/rest/api/3/permissionscheme/{schemeId}/permission": { + /** + * Get permission scheme grants + * @description Returns all permission grants for a permission scheme. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getPermissionSchemeGrants"]; + /** + * Create permission grant + * @description Creates a permission grant in a permission scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createPermissionGrant"]; + }; + "/rest/api/3/permissionscheme/{schemeId}/permission/{permissionId}": { + /** + * Get permission scheme grant + * @description Returns a permission grant. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getPermissionSchemeGrant"]; + /** + * Delete permission scheme grant + * @description Deletes a permission grant from a permission scheme. See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more details. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deletePermissionSchemeEntity"]; + }; + "/rest/api/3/priority": { + /** + * Get priorities + * @deprecated + * @description Returns the list of all issue priorities. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getPriorities"]; + /** + * Create priority + * @description Creates an issue priority. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createPriority"]; + }; + "/rest/api/3/priority/default": { + /** + * Set default priority + * @description Sets default issue priority. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setDefaultPriority"]; + }; + "/rest/api/3/priority/move": { + /** + * Move priorities + * @description Changes the order of issue priorities. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["movePriorities"]; + }; + "/rest/api/3/priority/search": { + /** + * Search priorities + * @description Returns a [paginated](#pagination) list of priorities. The list can contain all priorities or a subset determined by any combination of these criteria: + * + * * a list of priority IDs. Any invalid priority IDs are ignored. + * * a list of project IDs. Only priorities that are available in these projects will be returned. Any invalid project IDs are ignored. + * * whether the field configuration is a default. This returns priorities from company-managed (classic) projects only, as there is no concept of default priorities in team-managed projects. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["searchPriorities"]; + }; + "/rest/api/3/priority/{id}": { + /** + * Get priority + * @description Returns an issue priority. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getPriority"]; + /** + * Update priority + * @description Updates an issue priority. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updatePriority"]; + /** + * Delete priority + * @deprecated + * @description *Deprecated: please refer to the* [changelog](https://developer.atlassian.com/changelog/#CHANGE-1066) *for more details.* + * + * Deletes an issue priority. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deletePriority"]; + }; + "/rest/api/3/project": { + /** + * Get all projects + * @deprecated + * @description Returns all projects visible to the user. Deprecated, use [ Get projects paginated](#api-rest-api-3-project-search-get) that supports search and pagination. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Projects are returned only where the user has *Browse Projects* or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getAllProjects"]; + /** + * Create project + * @description Creates a project based on a project type template, as shown in the following table: + * + * | Project Type Key | Project Template Key | + * |--|--| + * | `business` | `com.atlassian.jira-core-project-templates:jira-core-simplified-content-management`, `com.atlassian.jira-core-project-templates:jira-core-simplified-document-approval`, `com.atlassian.jira-core-project-templates:jira-core-simplified-lead-tracking`, `com.atlassian.jira-core-project-templates:jira-core-simplified-process-control`, `com.atlassian.jira-core-project-templates:jira-core-simplified-procurement`, `com.atlassian.jira-core-project-templates:jira-core-simplified-project-management`, `com.atlassian.jira-core-project-templates:jira-core-simplified-recruitment`, `com.atlassian.jira-core-project-templates:jira-core-simplified-task-tracking` | + * | `service_desk` | `com.atlassian.servicedesk:simplified-it-service-management`, `com.atlassian.servicedesk:simplified-general-service-desk-it`, `com.atlassian.servicedesk:simplified-general-service-desk-business`, `com.atlassian.servicedesk:simplified-external-service-desk`, `com.atlassian.servicedesk:simplified-hr-service-desk`, `com.atlassian.servicedesk:simplified-facilities-service-desk`, `com.atlassian.servicedesk:simplified-legal-service-desk`, `com.atlassian.servicedesk:simplified-analytics-service-desk`, `com.atlassian.servicedesk:simplified-marketing-service-desk`, `com.atlassian.servicedesk:simplified-design-service-desk`, `com.atlassian.servicedesk:simplified-sales-service-desk`, `com.atlassian.servicedesk:simplified-blank-project-business`, `com.atlassian.servicedesk:simplified-blank-project-it`, `com.atlassian.servicedesk:simplified-finance-service-desk`, `com.atlassian.servicedesk:next-gen-it-service-desk`, `com.atlassian.servicedesk:next-gen-hr-service-desk`, `com.atlassian.servicedesk:next-gen-legal-service-desk`, `com.atlassian.servicedesk:next-gen-marketing-service-desk`, `com.atlassian.servicedesk:next-gen-facilities-service-desk`, `com.atlassian.servicedesk:next-gen-general-it-service-desk`, `com.atlassian.servicedesk:next-gen-general-business-service-desk`, `com.atlassian.servicedesk:next-gen-analytics-service-desk`, `com.atlassian.servicedesk:next-gen-finance-service-desk`, `com.atlassian.servicedesk:next-gen-design-service-desk`, `com.atlassian.servicedesk:next-gen-sales-service-desk` | + * | `software` | `com.pyxis.greenhopper.jira:gh-simplified-agility-kanban`, `com.pyxis.greenhopper.jira:gh-simplified-agility-scrum`, `com.pyxis.greenhopper.jira:gh-simplified-basic`, `com.pyxis.greenhopper.jira:gh-simplified-kanban-classic`, `com.pyxis.greenhopper.jira:gh-simplified-scrum-classic` | + * The project types are available according to the installed Jira features as follows: + * + * * Jira Core, the default, enables `business` projects. + * * Jira Service Management enables `service_desk` projects. + * * Jira Software enables `software` projects. + * + * To determine which features are installed, go to **Jira settings** > **Apps** > **Manage apps** and review the System Apps list. To add Jira Software or Jira Service Management into a JIRA instance, use **Jira settings** > **Apps** > **Finding new apps**. For more information, see [ Managing add-ons](https://confluence.atlassian.com/x/S31NLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createProject"]; + }; + "/rest/api/3/project/recent": { + /** + * Get recent projects + * @description Returns a list of up to 20 projects recently viewed by the user that are still visible to the user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Projects are returned only where the user has one of: + * + * * *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getRecent"]; + }; + "/rest/api/3/project/search": { + /** + * Get projects paginated + * @description Returns a [paginated](#pagination) list of projects visible to the user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Projects are returned only where the user has one of: + * + * * *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["searchProjects"]; + }; + "/rest/api/3/project/type": { + /** + * Get all project types + * @description Returns all [project types](https://confluence.atlassian.com/x/Var1Nw), whether or not the instance has a valid license for each type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAllProjectTypes"]; + }; + "/rest/api/3/project/type/accessible": { + /** + * Get licensed project types + * @description Returns all [project types](https://confluence.atlassian.com/x/Var1Nw) with a valid license. + */ + get: operations["getAllAccessibleProjectTypes"]; + }; + "/rest/api/3/project/type/{projectTypeKey}": { + /** + * Get project type by key + * @description Returns a [project type](https://confluence.atlassian.com/x/Var1Nw). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getProjectTypeByKey"]; + }; + "/rest/api/3/project/type/{projectTypeKey}/accessible": { + /** + * Get accessible project type by key + * @description Returns a [project type](https://confluence.atlassian.com/x/Var1Nw) if it is accessible to the user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getAccessibleProjectTypeByKey"]; + }; + "/rest/api/3/project/{projectIdOrKey}": { + /** + * Get project + * @description Returns the [project details](https://confluence.atlassian.com/x/ahLpNw) for a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProject"]; + /** + * Update project + * @description Updates the [project details](https://confluence.atlassian.com/x/ahLpNw) of a project. + * + * All parameters are optional in the body of the request. Schemes will only be updated if they are included in the request, any omitted schemes will be left unchanged. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). is only needed when changing the schemes or project key. Otherwise you will only need *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) + */ + put: operations["updateProject"]; + /** + * Delete project + * @description Deletes a project. + * + * You can't delete a project if it's archived. To delete an archived project, restore the project and then delete it. To restore a project, use the Jira UI. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteProject"]; + }; + "/rest/api/3/project/{projectIdOrKey}/archive": { + /** + * Archive project + * @description Archives a project. You can't delete a project if it's archived. To delete an archived project, restore the project and then delete it. To restore a project, use the Jira UI. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["archiveProject"]; + }; + "/rest/api/3/project/{projectIdOrKey}/avatar": { + /** + * Set project avatar + * @description Sets the avatar displayed for a project. + * + * Use [Load project avatar](#api-rest-api-3-project-projectIdOrKey-avatar2-post) to store avatars against the project, before using this operation to set the displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + put: operations["updateProjectAvatar"]; + }; + "/rest/api/3/project/{projectIdOrKey}/avatar/{id}": { + /** + * Delete project avatar + * @description Deletes a custom avatar from a project. Note that system avatars cannot be deleted. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + delete: operations["deleteProjectAvatar"]; + }; + "/rest/api/3/project/{projectIdOrKey}/avatar2": { + /** + * Load project avatar + * @description Loads an avatar for a project. + * + * Specify the avatar's local file location in the body of the request. Also, include the following headers: + * + * * `X-Atlassian-Token: no-check` To prevent XSRF protection blocking the request, for more information see [Special Headers](#special-request-headers). + * * `Content-Type: image/image type` Valid image types are JPEG, GIF, or PNG. + * + * For example: + * `curl --request POST ` + * + * `--user email@example.com: ` + * + * `--header 'X-Atlassian-Token: no-check' ` + * + * `--header 'Content-Type: image/< image_type>' ` + * + * `--data-binary "<@/path/to/file/with/your/avatar>" ` + * + * `--url 'https://your-domain.atlassian.net/rest/api/3/project/{projectIdOrKey}/avatar2'` + * + * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of the image. The length of the square's sides is set to the smaller of the height or width of the image. + * + * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size. + * + * After creating the avatar use [Set project avatar](#api-rest-api-3-project-projectIdOrKey-avatar-put) to set it as the project's displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + post: operations["createProjectAvatar"]; + }; + "/rest/api/3/project/{projectIdOrKey}/avatars": { + /** + * Get all project avatars + * @description Returns all project avatars, grouped by system and custom avatars. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getAllProjectAvatars"]; + }; + "/rest/api/3/project/{projectIdOrKey}/component": { + /** + * Get project components paginated + * @description Returns a [paginated](#pagination) list of all components in a project. See the [Get project components](#api-rest-api-3-project-projectIdOrKey-components-get) resource if you want to get a full list of versions without pagination. + * + * If your project uses Compass components, this API will return a list of Compass components that are linked to issues in that project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectComponentsPaginated"]; + }; + "/rest/api/3/project/{projectIdOrKey}/components": { + /** + * Get project components + * @description Returns all components in a project. See the [Get project components paginated](#api-rest-api-3-project-projectIdOrKey-component-get) resource if you want to get a full list of components with pagination. + * + * If your project uses Compass components, this API will return a paginated list of Compass components that are linked to issues in that project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectComponents"]; + }; + "/rest/api/3/project/{projectIdOrKey}/delete": { + /** + * Delete project asynchronously + * @description Deletes a project asynchronously. + * + * This operation is: + * + * * transactional, that is, if part of the delete fails the project is not deleted. + * * [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["deleteProjectAsynchronously"]; + }; + "/rest/api/3/project/{projectIdOrKey}/features": { + /** + * Get project features + * @description Returns the list of features for a project. + */ + get: operations["getFeaturesForProject"]; + }; + "/rest/api/3/project/{projectIdOrKey}/features/{featureKey}": { + /** + * Set project feature state + * @description Sets the state of a project feature. + */ + put: operations["toggleFeatureForProject"]; + }; + "/rest/api/3/project/{projectIdOrKey}/properties": { + /** + * Get project property keys + * @description Returns all [project property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties) keys for the project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectPropertyKeys"]; + }; + "/rest/api/3/project/{projectIdOrKey}/properties/{propertyKey}": { + /** + * Get project property + * @description Returns the value of a [project property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property. + */ + get: operations["getProjectProperty"]; + /** + * Set project property + * @description Sets the value of the [project property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). You can use project properties to store custom data against the project. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the property is created. + */ + put: operations["setProjectProperty"]; + /** + * Delete project property + * @description Deletes the [property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties) from a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property. + */ + delete: operations["deleteProjectProperty"]; + }; + "/rest/api/3/project/{projectIdOrKey}/restore": { + /** + * Restore deleted or archived project + * @description Restores a project that has been archived or placed in the Jira recycle bin. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg)for Company managed projects. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project for Team managed projects. + */ + post: operations["restore"]; + }; + "/rest/api/3/project/{projectIdOrKey}/role": { + /** + * Get project roles for project + * @description Returns a list of [project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) for the project returning the name and self URL for each role. + * + * Note that all project roles are shared with all projects in Jira Cloud. See [Get all project roles](#api-rest-api-3-role-get) for more information. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for any project on the site or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getProjectRoles"]; + }; + "/rest/api/3/project/{projectIdOrKey}/role/{id}": { + /** + * Get project role for project + * @description Returns a project role's details and actors associated with the project. The list of actors is sorted by display name. + * + * To check whether a user belongs to a role based on their group memberships, use [Get user](#api-rest-api-3-user-get) with the `groups` expand parameter selected. Then check whether the user keys and groups match with the actors returned for the project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getProjectRole"]; + /** + * Set actors for project role + * @description Sets the actors for a project role for a project, replacing all existing actors. + * + * To add actors to the project without overwriting the existing list, use [Add actors to project role](#api-rest-api-3-project-projectIdOrKey-role-id-post). + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setActors"]; + /** + * Add actors to project role + * @description Adds actors to a project role for the project. + * + * To replace all actors for the project, use [Set actors for project role](#api-rest-api-3-project-projectIdOrKey-role-id-put). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["addActorUsers"]; + /** + * Delete actors from project role + * @description Deletes actors from a project role for the project. + * + * To remove default actors from the project role, use [Delete default actors from project role](#api-rest-api-3-role-id-actors-delete). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteActor"]; + }; + "/rest/api/3/project/{projectIdOrKey}/roledetails": { + /** + * Get project role details + * @description Returns all [project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) and the details for each role. Note that the list of project roles is common to all projects. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectRoleDetails"]; + }; + "/rest/api/3/project/{projectIdOrKey}/statuses": { + /** + * Get all statuses for project + * @description Returns the valid statuses for a project. The statuses are grouped by issue type, as each project has a set of valid issue types and each issue type has a set of valid statuses. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getAllStatuses"]; + }; + "/rest/api/3/project/{projectIdOrKey}/version": { + /** + * Get project versions paginated + * @description Returns a [paginated](#pagination) list of all versions in a project. See the [Get project versions](#api-rest-api-3-project-projectIdOrKey-versions-get) resource if you want to get a full list of versions without pagination. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectVersionsPaginated"]; + }; + "/rest/api/3/project/{projectIdOrKey}/versions": { + /** + * Get project versions + * @description Returns all versions in a project. The response is not paginated. Use [Get project versions paginated](#api-rest-api-3-project-projectIdOrKey-version-get) if you want to get the versions in a project with pagination. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectVersions"]; + }; + "/rest/api/3/project/{projectId}/email": { + /** + * Get project's sender email + * @description Returns the [project's sender email address](https://confluence.atlassian.com/x/dolKLg). + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getProjectEmail"]; + /** + * Set project's sender email + * @description Sets the [project's sender email address](https://confluence.atlassian.com/x/dolKLg). + * + * If `emailAddress` is an empty string, the default email address is restored. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + put: operations["updateProjectEmail"]; + }; + "/rest/api/3/project/{projectId}/hierarchy": { + /** + * Get project issue type hierarchy + * @deprecated + * @description Get the issue type hierarchy for a next-gen project. + * + * The issue type hierarchy for a project consists of: + * + * * *Epic* at level 1 (optional). + * * One or more issue types at level 0 such as *Story*, *Task*, or *Bug*. Where the issue type *Epic* is defined, these issue types are used to break down the content of an epic. + * * *Subtask* at level -1 (optional). This issue type enables level 0 issue types to be broken down into components. Issues based on a level -1 issue type must have a parent issue. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + get: operations["getHierarchy"]; + }; + "/rest/api/3/project/{projectKeyOrId}/issuesecuritylevelscheme": { + /** + * Get project issue security scheme + * @description Returns the [issue security scheme](https://confluence.atlassian.com/x/J4lKLg) associated with the project. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or the *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + get: operations["getProjectIssueSecurityScheme"]; + }; + "/rest/api/3/project/{projectKeyOrId}/notificationscheme": { + /** + * Get project notification scheme + * @description Gets a [notification scheme](https://confluence.atlassian.com/x/8YdKLg) associated with the project. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + get: operations["getNotificationSchemeForProject"]; + }; + "/rest/api/3/project/{projectKeyOrId}/permissionscheme": { + /** + * Get assigned permission scheme + * @description Gets the [permission scheme](https://confluence.atlassian.com/x/yodKLg) associated with the project. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + get: operations["getAssignedPermissionScheme"]; + /** + * Assign permission scheme + * @description Assigns a permission scheme with a project. See [Managing project permissions](https://confluence.atlassian.com/x/yodKLg) for more information about permission schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) + */ + put: operations["assignPermissionScheme"]; + }; + "/rest/api/3/project/{projectKeyOrId}/securitylevel": { + /** + * Get project issue security levels + * @description Returns all [issue security](https://confluence.atlassian.com/x/J4lKLg) levels for the project that the user has access to. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project, however, issue security levels are only returned for authenticated user with *Set Issue Security* [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project. + */ + get: operations["getSecurityLevelsForProject"]; + }; + "/rest/api/3/projectCategory": { + /** + * Get all project categories + * @description Returns all project categories. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getAllProjectCategories"]; + /** + * Create project category + * @description Creates a project category. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createProjectCategory"]; + }; + "/rest/api/3/projectCategory/{id}": { + /** + * Get project category by ID + * @description Returns a project category. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getProjectCategoryById"]; + /** + * Update project category + * @description Updates a project category. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateProjectCategory"]; + /** + * Delete project category + * @description Deletes a project category. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["removeProjectCategory"]; + }; + "/rest/api/3/projectvalidate/key": { + /** + * Validate project key + * @description Validates a project key by confirming the key is a valid string and not in use. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["validateProjectKey"]; + }; + "/rest/api/3/projectvalidate/validProjectKey": { + /** + * Get valid project key + * @description Validates a project key and, if the key is invalid or in use, generates a valid random string for the project key. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getValidProjectKey"]; + }; + "/rest/api/3/projectvalidate/validProjectName": { + /** + * Get valid project name + * @description Checks that a project name isn't in use. If the name isn't in use, the passed string is returned. If the name is in use, this operation attempts to generate a valid project name based on the one supplied, usually by adding a sequence number. If a valid project name cannot be generated, a 404 response is returned. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getValidProjectName"]; + }; + "/rest/api/3/resolution": { + /** + * Get resolutions + * @deprecated + * @description Returns a list of all issue resolution values. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getResolutions"]; + /** + * Create resolution + * @description Creates an issue resolution. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createResolution"]; + }; + "/rest/api/3/resolution/default": { + /** + * Set default resolution + * @description Sets default issue resolution. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setDefaultResolution"]; + }; + "/rest/api/3/resolution/move": { + /** + * Move resolutions + * @description Changes the order of issue resolutions. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["moveResolutions"]; + }; + "/rest/api/3/resolution/search": { + /** + * Search resolutions + * @description Returns a [paginated](#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](#permissions) required:** Permission to access Jira. + */ + get: operations["searchResolutions"]; + }; + "/rest/api/3/resolution/{id}": { + /** + * Get resolution + * @description Returns an issue resolution value. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getResolution"]; + /** + * Update resolution + * @description Updates an issue resolution. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateResolution"]; + /** + * Delete resolution + * @description Deletes an issue resolution. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteResolution"]; + }; + "/rest/api/3/role": { + /** + * Get all project roles + * @description Gets a list of all project roles, complete with project role details and default actors. + * + * ### About project roles ### + * + * [Project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) are a flexible way to to associate users and groups with projects. In Jira Cloud, the list of project roles is shared globally with all projects, but each project can have a different set of actors associated with it (unlike groups, which have the same membership throughout all Jira applications). + * + * Project roles are used in [permission schemes](#api-rest-api-3-permissionscheme-get), [email notification schemes](#api-rest-api-3-notificationscheme-get), [issue security levels](#api-rest-api-3-issuesecurityschemes-get), [comment visibility](#api-rest-api-3-comment-list-post), and workflow conditions. + * + * #### Members and actors #### + * + * In the Jira REST API, a member of a project role is called an *actor*. An *actor* is a group or user associated with a project role. + * + * Actors may be set as [default members](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/#Specifying-'default-members'-for-a-project-role) of the project role or set at the project level: + * + * * Default actors: Users and groups that are assigned to the project role for all newly created projects. The default actors can be removed at the project level later if desired. + * * Actors: Users and groups that are associated with a project role for a project, which may differ from the default actors. This enables you to assign a user to different roles in different projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllProjectRoles"]; + /** + * Create project role + * @description Creates a new project role with no [default actors](#api-rest-api-3-resolution-get). You can use the [Add default actors to project role](#api-rest-api-3-role-id-actors-post) operation to add default actors to the project role after creating it. + * + * *Note that although a new project role is available to all projects upon creation, any default actors that are associated with the project role are not added to projects that existed prior to the role being created.*< + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createProjectRole"]; + }; + "/rest/api/3/role/{id}": { + /** + * Get project role by ID + * @description Gets the project role details and the default actors associated with the role. The list of default actors is sorted by display name. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getProjectRoleById"]; + /** + * Fully update project role + * @description Updates the project role's name and description. You must include both a name and a description in the request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["fullyUpdateProjectRole"]; + /** + * Partial update project role + * @description Updates either the project role's name or its description. + * + * You cannot update both the name and description at the same time using this operation. If you send a request with a name and a description only the name is updated. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["partialUpdateProjectRole"]; + /** + * Delete project role + * @description Deletes a project role. You must specify a replacement project role if you wish to delete a project role that is in use. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteProjectRole"]; + }; + "/rest/api/3/role/{id}/actors": { + /** + * Get default actors for project role + * @description Returns the [default actors](#api-rest-api-3-resolution-get) for the project role. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getProjectRoleActorsForRole"]; + /** + * Add default actors to project role + * @description Adds [default actors](#api-rest-api-3-resolution-get) to a role. You may add groups or users, but you cannot add groups and users in the same request. + * + * Changing a project role's default actors does not affect project role members for projects already created. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["addProjectRoleActorsToRole"]; + /** + * Delete default actors from project role + * @description Deletes the [default actors](#api-rest-api-3-resolution-get) from a project role. You may delete a group or user, but you cannot delete a group and a user in the same request. + * + * Changing a project role's default actors does not affect project role members for projects already created. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteProjectRoleActorsFromRole"]; + }; + "/rest/api/3/screens": { + /** + * Get screens + * @description Returns a [paginated](#pagination) list of all screens or those specified by one or more screen IDs. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getScreens"]; + /** + * Create screen + * @description Creates a screen with a default field tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createScreen"]; + }; + "/rest/api/3/screens/addToDefault/{fieldId}": { + /** + * Add field to default screen + * @description Adds a field to the default tab of the default screen. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["addFieldToDefaultScreen"]; + }; + "/rest/api/3/screens/tabs": { + /** + * Get bulk screen tabs + * @description Returns the list of tabs for a bulk of screens. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getBulkScreenTabs"]; + }; + "/rest/api/3/screens/{screenId}": { + /** + * Update screen + * @description Updates a screen. Only screens used in classic projects can be updated. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateScreen"]; + /** + * Delete screen + * @description Deletes a screen. A screen cannot be deleted if it is used in a screen scheme, workflow, or workflow draft. + * + * Only screens used in classic projects can be deleted. + */ + delete: operations["deleteScreen"]; + }; + "/rest/api/3/screens/{screenId}/availableFields": { + /** + * Get available screen fields + * @description Returns the fields that can be added to a tab on a screen. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAvailableScreenFields"]; + }; + "/rest/api/3/screens/{screenId}/tabs": { + /** + * Get all screen tabs + * @description Returns the list of tabs for a screen. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen Scheme. + */ + get: operations["getAllScreenTabs"]; + /** + * Create screen tab + * @description Creates a tab for a screen. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["addScreenTab"]; + }; + "/rest/api/3/screens/{screenId}/tabs/{tabId}": { + /** + * Update screen tab + * @description Updates the name of a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["renameScreenTab"]; + /** + * Delete screen tab + * @description Deletes a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteScreenTab"]; + }; + "/rest/api/3/screens/{screenId}/tabs/{tabId}/fields": { + /** + * Get all screen tab fields + * @description Returns all fields for a screen tab. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen Scheme. + */ + get: operations["getAllScreenTabFields"]; + /** + * Add screen tab field + * @description Adds a field to a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["addScreenTabField"]; + }; + "/rest/api/3/screens/{screenId}/tabs/{tabId}/fields/{id}": { + /** + * Remove screen tab field + * @description Removes a field from a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["removeScreenTabField"]; + }; + "/rest/api/3/screens/{screenId}/tabs/{tabId}/fields/{id}/move": { + /** + * Move screen tab field + * @description Moves a screen tab field. + * + * If `after` and `position` are provided in the request, `position` is ignored. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["moveScreenTabField"]; + }; + "/rest/api/3/screens/{screenId}/tabs/{tabId}/move/{pos}": { + /** + * Move screen tab + * @description Moves a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["moveScreenTab"]; + }; + "/rest/api/3/screenscheme": { + /** + * Get screen schemes + * @description Returns a [paginated](#pagination) list of screen schemes. + * + * Only screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getScreenSchemes"]; + /** + * Create screen scheme + * @description Creates a screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createScreenScheme"]; + }; + "/rest/api/3/screenscheme/{screenSchemeId}": { + /** + * Update screen scheme + * @description Updates a screen scheme. Only screen schemes used in classic projects can be updated. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateScreenScheme"]; + /** + * Delete screen scheme + * @description Deletes a screen scheme. A screen scheme cannot be deleted if it is used in an issue type screen scheme. + * + * Only screens schemes used in classic projects can be deleted. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteScreenScheme"]; + }; + "/rest/api/3/search": { + /** + * Search for issues using JQL (GET) + * @description Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). + * + * If the JQL query expression is too large to be encoded as a query parameter, use the [POST](#api-rest-api-3-search-post) version of this resource. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Issues are included in the response where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + get: operations["searchForIssuesUsingJql"]; + /** + * Search for issues using JQL (POST) + * @description Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). + * + * There is a [GET](#api-rest-api-3-search-get) version of this resource that can be used for smaller JQL query expressions. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Issues are included in the response where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + post: operations["searchForIssuesUsingJqlPost"]; + }; + "/rest/api/3/securitylevel/{id}": { + /** + * Get issue security level + * @description Returns details of an issue security level. + * + * Use [Get issue security scheme](#api-rest-api-3-issuesecurityschemes-id-get) to obtain the IDs of issue security levels associated with the issue security scheme. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getIssueSecurityLevel"]; + }; + "/rest/api/3/serverInfo": { + /** + * Get Jira instance info + * @description Returns information about the Jira instance. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getServerInfo"]; + }; + "/rest/api/3/settings/columns": { + /** + * Get issue navigator default columns + * @description Returns the default issue navigator columns. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getIssueNavigatorDefaultColumns"]; + /** + * Set issue navigator default columns + * @description Sets the default issue navigator columns. + * + * The `columns` parameter accepts a navigable field value and is expressed as HTML form data. To specify multiple columns, pass multiple `columns` parameters. For example, in curl: + * + * `curl -X PUT -d columns=summary -d columns=description https://your-domain.atlassian.net/rest/api/3/settings/columns` + * + * If no column details are sent, then all default columns are removed. + * + * A navigable field is one that can be used as a column on the issue navigator. Find details of navigable issue columns using [Get fields](#api-rest-api-3-field-get). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setIssueNavigatorDefaultColumns"]; + }; + "/rest/api/3/status": { + /** + * Get all statuses + * @description Returns a list of all statuses associated with active workflows. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getStatuses"]; + }; + "/rest/api/3/status/{idOrName}": { + /** + * Get status + * @description Returns a status. The status must be associated with an active workflow to be returned. + * + * If a name is used on more than one status, only the status found first is returned. Therefore, identifying the status by its ID may be preferable. + * + * This operation can be accessed anonymously. + * + * [Permissions](#permissions) required: None. + */ + get: operations["getStatus"]; + }; + "/rest/api/3/statuscategory": { + /** + * Get all status categories + * @description Returns a list of all status categories. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getStatusCategories"]; + }; + "/rest/api/3/statuscategory/{idOrKey}": { + /** + * Get status category + * @description Returns a status category. Status categories provided a mechanism for categorizing [statuses](#api-rest-api-3-status-idOrName-get). + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getStatusCategory"]; + }; + "/rest/api/3/statuses": { + /** + * Bulk get statuses + * @description Returns a list of the statuses specified by one or more status IDs. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + get: operations["getStatusesById"]; + /** + * Bulk update statuses + * @description Updates statuses by ID. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + put: operations["updateStatuses"]; + /** + * Bulk create statuses + * @description Creates statuses for a global or project scope. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + post: operations["createStatuses"]; + /** + * Bulk delete Statuses + * @description Deletes statuses by ID. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + delete: operations["deleteStatusesById"]; + }; + "/rest/api/3/statuses/search": { + /** + * Search statuses paginated + * @description Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of statuses that match a search on name or project. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + get: operations["search"]; + }; + "/rest/api/3/task/{taskId}": { + /** + * Get task + * @description Returns the status of a [long-running asynchronous task](#async). + * + * When a task has finished, this operation returns the JSON blob applicable to the task. See the documentation of the operation that created the task for details. Task details are not permanently retained. As of September 2019, details are retained for 14 days although this period may change without notice. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024. + * + * * `read:jira-work` + * + * **[Permissions](#permissions) required:** either of: + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * Creator of the task. + */ + get: operations["getTask"]; + }; + "/rest/api/3/task/{taskId}/cancel": { + /** + * Cancel task + * @description Cancels a task. + * + * **[Permissions](#permissions) required:** either of: + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * Creator of the task. + */ + post: operations["cancelTask"]; + }; + "/rest/api/3/uiModifications": { + /** + * Get UI modifications + * @description Gets UI modifications. UI modifications can only be retrieved by Forge apps. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getUiModifications"]; + /** + * Create UI modification + * @description Creates a UI modification. UI modification can only be created by Forge apps. + * + * Each app can define up to 3000 UI modifications. Each UI modification can define up to 1000 contexts. The same context can be assigned to maximum 100 UI modifications. + * + * **[Permissions](#permissions) required:** + * + * * *None* if the UI modification is created without contexts. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the UI modification is created with contexts. + */ + post: operations["createUiModification"]; + }; + "/rest/api/3/uiModifications/{uiModificationId}": { + /** + * Update UI modification + * @description Updates a UI modification. UI modification can only be updated by Forge apps. + * + * Each UI modification can define up to 1000 contexts. The same context can be assigned to maximum 100 UI modifications. + * + * **[Permissions](#permissions) required:** + * + * * *None* if the UI modification is created without contexts. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the UI modification is created with contexts. + */ + put: operations["updateUiModification"]; + /** + * Delete UI modification + * @description Deletes a UI modification. All the contexts that belong to the UI modification are deleted too. UI modification can only be deleted by Forge apps. + * + * **[Permissions](#permissions) required:** None. + */ + delete: operations["deleteUiModification"]; + }; + "/rest/api/3/universal_avatar/type/{type}/owner/{entityId}": { + /** + * Get avatars + * @description Returns the system and custom avatars for a project or issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * for custom project avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the avatar belongs to. + * * for custom issue type avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the issue type is used in. + * * for system avatars, none. + */ + get: operations["getAvatars"]; + /** + * Load avatar + * @description Loads a custom avatar for a project or issue type. + * + * Specify the avatar's local file location in the body of the request. Also, include the following headers: + * + * * `X-Atlassian-Token: no-check` To prevent XSRF protection blocking the request, for more information see [Special Headers](#special-request-headers). + * * `Content-Type: image/image type` Valid image types are JPEG, GIF, or PNG. + * + * For example: + * `curl --request POST ` + * + * `--user email@example.com: ` + * + * `--header 'X-Atlassian-Token: no-check' ` + * + * `--header 'Content-Type: image/< image_type>' ` + * + * `--data-binary "<@/path/to/file/with/your/avatar>" ` + * + * `--url 'https://your-domain.atlassian.net/rest/api/3/universal_avatar/type/{type}/owner/{entityId}'` + * + * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of the image. The length of the square's sides is set to the smaller of the height or width of the image. + * + * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size. + * + * After creating the avatar use: + * + * * [Update issue type](#api-rest-api-3-issuetype-id-put) to set it as the issue type's displayed avatar. + * * [Set project avatar](#api-rest-api-3-project-projectIdOrKey-avatar-put) to set it as the project's displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["storeAvatar"]; + }; + "/rest/api/3/universal_avatar/type/{type}/owner/{owningObjectId}/avatar/{id}": { + /** + * Delete avatar + * @description Deletes an avatar from a project or issue type. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteAvatar"]; + }; + "/rest/api/3/universal_avatar/view/type/{type}": { + /** + * Get avatar image by type + * @description Returns the default project or issue type avatar image. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["getAvatarImageByType"]; + }; + "/rest/api/3/universal_avatar/view/type/{type}/avatar/{id}": { + /** + * Get avatar image by ID + * @description Returns a project or issue type avatar image by ID. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * For system avatars, none. + * * For custom project avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the avatar belongs to. + * * For custom issue type avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the issue type is used in. + */ + get: operations["getAvatarImageByID"]; + }; + "/rest/api/3/universal_avatar/view/type/{type}/owner/{entityId}": { + /** + * Get avatar image by owner + * @description Returns the avatar image for a project or issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * For system avatars, none. + * * For custom project avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the avatar belongs to. + * * For custom issue type avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the issue type is used in. + */ + get: operations["getAvatarImageByOwner"]; + }; + "/rest/api/3/user": { + /** + * Get user + * @description Returns a user. + * + * Privacy controls are applied to the response based on the user's preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getUser"]; + /** + * Create user + * @description Creates a user. This resource is retained for legacy compatibility. As soon as a more suitable alternative is available this resource will be deprecated. + * + * If the user exists and has access to Jira, the operation returns a 201 status. If the user exists but does not have access to Jira, the operation returns a 400 status. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createUser"]; + /** + * Delete user + * @description Deletes a user. If the operation completes successfully then the user is removed from Jira's user base. This operation does not delete the user's Atlassian account. + * + * **[Permissions](#permissions) required:** Site administration (that is, membership of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + delete: operations["removeUser"]; + }; + "/rest/api/3/user/assignable/multiProjectSearch": { + /** + * Find users assignable to projects + * @description Returns a list of users who can be assigned issues in one or more projects. The list may be restricted to users whose attributes match a string. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that can be assigned issues in the projects. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who can be assigned issues in the projects, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + get: operations["findBulkAssignableUsers"]; + }; + "/rest/api/3/user/assignable/search": { + /** + * Find users assignable to issues + * @description Returns a list of users that can be assigned to an issue. Use this operation to find the list of users who can be assigned to: + * + * * a new issue, by providing the `projectKeyOrId`. + * * an updated issue, by providing the `issueKey`. + * * to an issue during a transition (workflow action), by providing the `issueKey` and the transition id in `actionDescriptorId`. You can obtain the IDs of an issue's valid transitions using the `transitions` option in the `expand` parameter of [ Get issue](#api-rest-api-3-issue-issueIdOrKey-get). + * + * In all these cases, you can pass an account ID to determine if a user can be assigned to an issue. The user is returned in the response if they can be assigned to the issue or issue transition. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that can be assigned the issue. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who can be assigned the issue, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Assign issues* [project permission](https://confluence.atlassian.com/x/yodKLg) + */ + get: operations["findAssignableUsers"]; + }; + "/rest/api/3/user/bulk": { + /** + * Bulk get users + * @description Returns a [paginated](#pagination) list of the users specified by one or more account IDs. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["bulkGetUsers"]; + }; + "/rest/api/3/user/bulk/migration": { + /** + * Get account IDs for users + * @description Returns the account IDs for the users specified in the `key` or `username` parameters. Note that multiple `key` or `username` parameters can be specified. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["bulkGetUsersMigration"]; + }; + "/rest/api/3/user/columns": { + /** + * Get user default columns + * @description Returns the default [issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If `accountId` is not passed in the request, the calling user's details are returned. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLgl), to get the column details for any user. + * * Permission to access Jira, to get the calling user's column details. + */ + get: operations["getUserDefaultColumns"]; + /** + * Set user default columns + * @description Sets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If an account ID is not passed, the calling user's default columns are set. If no column details are sent, then all default columns are removed. + * + * The parameters for this resource are expressed as HTML form data. For example, in curl: + * + * `curl -X PUT -d columns=summary -d columns=description https://your-domain.atlassian.net/rest/api/3/user/columns?accountId=5b10ac8d82e05b22cc7d4ef5'` + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user. + * * Permission to access Jira, to set the calling user's columns. + */ + put: operations["setUserColumns"]; + /** + * Reset user default columns + * @description Resets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user to the system default. If `accountId` is not passed, the calling user's default columns are reset. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user. + * * Permission to access Jira, to set the calling user's columns. + */ + delete: operations["resetUserColumns"]; + }; + "/rest/api/3/user/email": { + /** + * Get user email + * @description Returns a user's email address. This API is only available to apps approved by Atlassian, according to these [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603). + */ + get: operations["getUserEmail"]; + }; + "/rest/api/3/user/email/bulk": { + /** + * Get user email bulk + * @description Returns a user's email address. This API is only available to apps approved by Atlassian, according to these [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603). + */ + get: operations["getUserEmailBulk"]; + }; + "/rest/api/3/user/groups": { + /** + * Get user groups + * @description Returns the groups to which a user belongs. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getUserGroups"]; + }; + "/rest/api/3/user/permission/search": { + /** + * Find users with permissions + * @description Returns a list of users who fulfill these criteria: + * + * * their user attributes match a search string. + * * they have a set of permissions for a project or issue. + * + * If no search string is provided, a list of all users with the permissions is returned. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the search string and have permission for the project or issue. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the search string and have permission for the project or issue, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to get users for any project. + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project, to get users for that project. + */ + get: operations["findUsersWithAllPermissions"]; + }; + "/rest/api/3/user/picker": { + /** + * Find users for picker + * @description Returns a list of users whose attributes match the query term. The returned object includes the `html` field where the matched query term is highlighted with the HTML strong tag. A list of account IDs can be provided to exclude users from the results. + * + * This operation takes the users in the range defined by `maxResults`, up to the thousandth user, and then returns only the users from that range that match the query term. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the query term, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by users without the required permission return search results for an exact name match only. + */ + get: operations["findUsersForPicker"]; + }; + "/rest/api/3/user/properties": { + /** + * Get user property keys + * @description Returns the keys of all properties for a user. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to access the property keys on any user. + * * Access to Jira, to access the calling user's property keys. + */ + get: operations["getUserPropertyKeys"]; + }; + "/rest/api/3/user/properties/{propertyKey}": { + /** + * Get user property + * @description Returns the value of a user's property. If no property key is provided [Get user property keys](#api-rest-api-3-user-properties-get) is called. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to get a property from any user. + * * Access to Jira, to get a property from the calling user's record. + */ + get: operations["getUserProperty"]; + /** + * Set user property + * @description Sets the value of a user's property. Use this resource to store custom data against a user. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to set a property on any user. + * * Access to Jira, to set a property on the calling user's record. + */ + put: operations["setUserProperty"]; + /** + * Delete user property + * @description Deletes a property from a user. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to delete a property from any user. + * * Access to Jira, to delete a property from the calling user's record. + */ + delete: operations["deleteUserProperty"]; + }; + "/rest/api/3/user/search": { + /** + * Find users + * @description Returns a list of active users that match the search string and property. + * + * This operation first applies a filter to match the search string and property, and then takes the filtered users in the range defined by `startAt` and `maxResults`, up to the thousandth user. To get all the users who match the search string and property, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * This operation can be accessed anonymously. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls or calls by users without the required permission return empty search results. + */ + get: operations["findUsers"]; + }; + "/rest/api/3/user/search/query": { + /** + * Find users by query + * @description Finds users with a structured query and returns a [paginated](#pagination) list of user details. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the structured query. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * + * The query statements are: + * + * * `is assignee of PROJ` Returns the users that are assignees of at least one issue in project *PROJ*. + * * `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues *PROJ-1* or *PROJ-2*. + * * `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues *PROJ-1* or *PROJ-2*. + * * `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues *PROJ-1* or *PROJ-2*. + * * `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues *PROJ-1* or *PROJ-2*. + * * `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues *PROJ-1* or *PROJ-2*. + * * `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues *PROJ-1* or *PROJ-2*. + * * `[propertyKey].entity.property.path is "property value"` Returns users with the entity property value. + * + * The list of issues can be extended as needed, as in *(PROJ-1, PROJ-2, ... PROJ-n)*. Statements can be combined using the `AND` and `OR` operators to form more complex queries. For example: + * + * `is assignee of PROJ AND [propertyKey].entity.property.path is "property value"` + */ + get: operations["findUsersByQuery"]; + }; + "/rest/api/3/user/search/query/key": { + /** + * Find user keys by query + * @description Finds users with a structured query and returns a [paginated](#pagination) list of user keys. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the structured query. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * + * The query statements are: + * + * * `is assignee of PROJ` Returns the users that are assignees of at least one issue in project *PROJ*. + * * `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues *PROJ-1* or *PROJ-2*. + * * `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues *PROJ-1* or *PROJ-2*. + * * `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues *PROJ-1* or *PROJ-2*. + * * `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues *PROJ-1* or *PROJ-2*. + * * `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues *PROJ-1* or *PROJ-2*. + * * `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues *PROJ-1* or *PROJ-2*. + * * `[propertyKey].entity.property.path is "property value"` Returns users with the entity property value. + * + * The list of issues can be extended as needed, as in *(PROJ-1, PROJ-2, ... PROJ-n)*. Statements can be combined using the `AND` and `OR` operators to form more complex queries. For example: + * + * `is assignee of PROJ AND [propertyKey].entity.property.path is "property value"` + */ + get: operations["findUserKeysByQuery"]; + }; + "/rest/api/3/user/viewissue/search": { + /** + * Find users with browse permission + * @description Returns a list of users who fulfill these criteria: + * + * * their user attributes match a search string. + * * they have permission to browse issues. + * + * Use this resource to find users who can browse: + * + * * an issue, by providing the `issueKey`. + * * any issue in a project, by providing the `projectKey`. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the search string and have permission to browse issues. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the search string and have permission to browse issues, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by users without the required permission return empty search results. + */ + get: operations["findUsersWithBrowsePermission"]; + }; + "/rest/api/3/users": { + /** + * Get all users default + * @description Returns a list of all users, including active users, inactive users and previously deleted users that have an Atlassian account. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllUsersDefault"]; + }; + "/rest/api/3/users/search": { + /** + * Get all users + * @description Returns a list of all users, including active users, inactive users and previously deleted users that have an Atlassian account. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllUsers"]; + }; + "/rest/api/3/version": { + /** + * Create version + * @description Creates a project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the version is added to. + */ + post: operations["createVersion"]; + }; + "/rest/api/3/version/{id}": { + /** + * Get version + * @description Returns a project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version. + */ + get: operations["getVersion"]; + /** + * Update version + * @description Updates a project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + put: operations["updateVersion"]; + /** + * Delete version + * @deprecated + * @description Deletes a project version. + * + * Deprecated, use [ Delete and replace version](#api-rest-api-3-version-id-removeAndSwap-post) that supports swapping version values in custom fields, in addition to the swapping for `fixVersion` and `affectedVersion` provided in this resource. + * + * Alternative versions can be provided to update issues that use the deleted version in `fixVersion` or `affectedVersion`. If alternatives are not provided, occurrences of `fixVersion` and `affectedVersion` that contain the deleted version are cleared. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + delete: operations["deleteVersion"]; + }; + "/rest/api/3/version/{id}/mergeto/{moveIssuesTo}": { + /** + * Merge versions + * @description Merges two project versions. The merge is completed by deleting the version specified in `id` and replacing any occurrences of its ID in `fixVersion` with the version ID specified in `moveIssuesTo`. + * + * Consider using [ Delete and replace version](#api-rest-api-3-version-id-removeAndSwap-post) instead. This resource supports swapping version values in `fixVersion`, `affectedVersion`, and custom fields. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + put: operations["mergeVersions"]; + }; + "/rest/api/3/version/{id}/move": { + /** + * Move version + * @description Modifies the version's sequence within the project, which affects the display order of the versions in Jira. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* project permission for the project that contains the version. + */ + post: operations["moveVersion"]; + }; + "/rest/api/3/version/{id}/relatedIssueCounts": { + /** + * Get version's related issues count + * @description Returns the following counts for a version: + * + * * Number of issues where the `fixVersion` is set to the version. + * * Number of issues where the `affectedVersion` is set to the version. + * * Number of issues where a version custom field is set to the version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* project permission for the project that contains the version. + */ + get: operations["getVersionRelatedIssues"]; + }; + "/rest/api/3/version/{id}/relatedwork": { + /** + * Get related work + * @description Returns related work items for the given version id. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version. + */ + get: operations["getRelatedWork"]; + /** + * Update related work + * @description Updates the given related work. You can only update generic link related works via Rest APIs. Any archived version related works can't be edited. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Resolve issues:* and *Edit issues* [Managing project permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the project that contains the version. + */ + put: operations["updateRelatedWork"]; + /** + * Create related work + * @description Creates a related work for the given version. You can only create a generic link type of related works via this API. relatedWorkId will be auto-generated UUID, that does not need to be provided. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Resolve issues:* and *Edit issues* [Managing project permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the project that contains the version. + */ + post: operations["createRelatedWork"]; + }; + "/rest/api/3/version/{id}/removeAndSwap": { + /** + * Delete and replace version + * @description Deletes a project version. + * + * Alternative versions can be provided to update issues that use the deleted version in `fixVersion`, `affectedVersion`, or any version picker custom fields. If alternatives are not provided, occurrences of `fixVersion`, `affectedVersion`, and any version picker custom field, that contain the deleted version, are cleared. Any replacement version must be in the same project as the version being deleted and cannot be the version being deleted. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + post: operations["deleteAndReplaceVersion"]; + }; + "/rest/api/3/version/{id}/unresolvedIssueCount": { + /** + * Get version's unresolved issues count + * @description Returns counts of the issues and unresolved issues for the project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* project permission for the project that contains the version. + */ + get: operations["getVersionUnresolvedIssues"]; + }; + "/rest/api/3/version/{versionId}/relatedwork/{relatedWorkId}": { + /** + * Delete related work + * @description Deletes the given related work for the given version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Resolve issues:* and *Edit issues* [Managing project permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the project that contains the version. + */ + delete: operations["deleteRelatedWork"]; + }; + "/rest/api/3/webhook": { + /** + * Get dynamic webhooks for app + * @description Returns a [paginated](#pagination) list of the webhooks registered by the calling app. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + get: operations["getDynamicWebhooksForApp"]; + /** + * Register dynamic webhooks + * @description Registers webhooks. + * + * **NOTE:** for non-public OAuth apps, webhooks are delivered only if there is a match between the app owner and the user who registered a dynamic webhook. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + post: operations["registerDynamicWebhooks"]; + /** + * Delete webhooks by ID + * @description Removes webhooks by ID. Only webhooks registered by the calling app are removed. If webhooks created by other apps are specified, they are ignored. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + delete: operations["deleteWebhookById"]; + }; + "/rest/api/3/webhook/failed": { + /** + * Get failed webhooks + * @description Returns webhooks that have recently failed to be delivered to the requesting app after the maximum number of retries. + * + * After 72 hours the failure may no longer be returned by this operation. + * + * The oldest failure is returned first. + * + * This method uses a cursor-based pagination. To request the next page use the failure time of the last webhook on the list as the `failedAfter` value or use the URL provided in `next`. + * + * **[Permissions](#permissions) required:** Only [Connect apps](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) can use this operation. + */ + get: operations["getFailedWebhooks"]; + }; + "/rest/api/3/webhook/refresh": { + /** + * Extend webhook life + * @description Extends the life of webhook. Webhooks registered through the REST API expire after 30 days. Call this operation to keep them alive. + * + * Unrecognized webhook IDs (those that are not found or belong to other apps) are ignored. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + put: operations["refreshWebhooks"]; + }; + "/rest/api/3/workflow": { + /** + * Get all workflows + * @deprecated + * @description Returns all workflows in Jira or a workflow. Deprecated, use [Get workflows paginated](#api-rest-api-3-workflow-search-get). + * + * If the `workflowName` parameter is specified, the workflow is returned as an object (not in an array). Otherwise, an array of workflow objects is returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllWorkflows"]; + /** + * Create workflow + * @deprecated + * @description Creates a workflow. You can define transition rules using the shapes detailed in the following sections. If no transitional rules are specified the default system transition rules are used. Note: This only applies to company-managed scoped workflows. Use [bulk create workflows](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflows/#api-rest-api-3-workflows-create-post) to create both team and company-managed scoped workflows. + * + * #### Conditions #### + * + * Conditions enable workflow rules that govern whether a transition can execute. + * + * ##### Always false condition ##### + * + * A condition that always fails. + * + * { + * "type": "AlwaysFalseCondition" + * } + * + * ##### Block transition until approval ##### + * + * A condition that blocks issue transition if there is a pending approval. + * + * { + * "type": "BlockInProgressApprovalCondition" + * } + * + * ##### Compare number custom field condition ##### + * + * A condition that allows transition if a comparison between a number custom field and a value is true. + * + * { + * "type": "CompareNumberCFCondition", + * "configuration": { + * "comparator": "=", + * "fieldId": "customfield_10029", + * "fieldValue": 2 + * } + * } + * + * * `comparator` One of the supported comparator: `=`, `>`, and `<`. + * * `fieldId` The custom numeric field ID. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:float` + * * `com.pyxis.greenhopper.jira:jsw-story-points` + * * `fieldValue` The value for comparison. + * + * ##### Hide from user condition ##### + * + * A condition that hides a transition from users. The transition can only be triggered from a workflow function or REST API operation. + * + * { + * "type": "RemoteOnlyCondition" + * } + * + * ##### Only assignee condition ##### + * + * A condition that allows only the assignee to execute a transition. + * + * { + * "type": "AllowOnlyAssignee" + * } + * + * ##### Only Bamboo notifications workflow condition (deprecated) ##### + * + * A condition that makes the transition available only to Bamboo build notifications. + * + * { + * "type": "OnlyBambooNotificationsCondition" + * } + * + * ##### Only reporter condition ##### + * + * A condition that allows only the reporter to execute a transition. + * + * { + * "type": "AllowOnlyReporter" + * } + * + * ##### Permission condition ##### + * + * A condition that allows only users with a permission to execute a transition. + * + * { + * "type": "PermissionCondition", + * "configuration": { + * "permissionKey": "BROWSE_PROJECTS" + * } + * } + * + * * `permissionKey` The permission required to perform the transition. Allowed values: [built-in](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions) or app defined permissions. + * + * ##### Previous status condition ##### + * + * A condition that allows a transition based on whether an issue has or has not transitioned through a status. + * + * { + * "type": "PreviousStatusCondition", + * "configuration": { + * "ignoreLoopTransitions": true, + * "includeCurrentStatus": true, + * "mostRecentStatusOnly": true, + * "reverseCondition": true, + * "previousStatus": { + * "id": "5" + * } + * } + * } + * + * By default this condition allows the transition if the status, as defined by its ID in the `previousStatus` object, matches any previous issue status, unless: + * + * * `ignoreLoopTransitions` is `true`, then loop transitions (from and to the same status) are ignored. + * * `includeCurrentStatus` is `true`, then the current issue status is also checked. + * * `mostRecentStatusOnly` is `true`, then only the issue's preceding status (the one immediately before the current status) is checked. + * * `reverseCondition` is `true`, then the status must not be present. + * + * ##### Separation of duties condition ##### + * + * A condition that prevents a user to perform the transition, if the user has already performed a transition on the issue. + * + * { + * "type": "SeparationOfDutiesCondition", + * "configuration": { + * "fromStatus": { + * "id": "5" + * }, + * "toStatus": { + * "id": "6" + * } + * } + * } + * + * * `fromStatus` OPTIONAL. An object containing the ID of the source status of the transition that is blocked. If omitted any transition to `toStatus` is blocked. + * * `toStatus` An object containing the ID of the target status of the transition that is blocked. + * + * ##### Subtask blocking condition ##### + * + * A condition that blocks transition on a parent issue if any of its subtasks are in any of one or more statuses. + * + * { + * "type": "SubTaskBlockingCondition", + * "configuration": { + * "statuses": [ + * { + * "id": "1" + * }, + * { + * "id": "3" + * } + * ] + * } + * } + * + * * `statuses` A list of objects containing status IDs. + * + * ##### User is in any group condition ##### + * + * A condition that allows users belonging to any group from a list of groups to execute a transition. + * + * { + * "type": "UserInAnyGroupCondition", + * "configuration": { + * "groups": [ + * "administrators", + * "atlassian-addons-admin" + * ] + * } + * } + * + * * `groups` A list of group names. + * + * ##### User is in any project role condition ##### + * + * A condition that allows only users with at least one project roles from a list of project roles to execute a transition. + * + * { + * "type": "InAnyProjectRoleCondition", + * "configuration": { + * "projectRoles": [ + * { + * "id": "10002" + * }, + * { + * "id": "10003" + * }, + * { + * "id": "10012" + * }, + * { + * "id": "10013" + * } + * ] + * } + * } + * + * * `projectRoles` A list of objects containing project role IDs. + * + * ##### User is in custom field condition ##### + * + * A condition that allows only users listed in a given custom field to execute the transition. + * + * { + * "type": "UserIsInCustomFieldCondition", + * "configuration": { + * "allowUserInField": false, + * "fieldId": "customfield_10010" + * } + * } + * + * * `allowUserInField` If `true` only a user who is listed in `fieldId` can perform the transition, otherwise, only a user who is not listed in `fieldId` can perform the transition. + * * `fieldId` The ID of the field containing the list of users. + * + * ##### User is in group condition ##### + * + * A condition that allows users belonging to a group to execute a transition. + * + * { + * "type": "UserInGroupCondition", + * "configuration": { + * "group": "administrators" + * } + * } + * + * * `group` The name of the group. + * + * ##### User is in group custom field condition ##### + * + * A condition that allows users belonging to a group specified in a custom field to execute a transition. + * + * { + * "type": "InGroupCFCondition", + * "configuration": { + * "fieldId": "customfield_10012" + * } + * } + * + * * `fieldId` The ID of the field. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:multigrouppicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:grouppicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:select` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multiselect` + * * `com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes` + * * `com.pyxis.greenhopper.jira:gh-epic-status` + * + * ##### User is in project role condition ##### + * + * A condition that allows users with a project role to execute a transition. + * + * { + * "type": "InProjectRoleCondition", + * "configuration": { + * "projectRole": { + * "id": "10002" + * } + * } + * } + * + * * `projectRole` An object containing the ID of a project role. + * + * ##### Value field condition ##### + * + * A conditions that allows a transition to execute if the value of a field is equal to a constant value or simply set. + * + * { + * "type": "ValueFieldCondition", + * "configuration": { + * "fieldId": "assignee", + * "fieldValue": "qm:6e1ecee6-8e64-4db6-8c85-916bb3275f51:54b56885-2bd2-4381-8239-78263442520f", + * "comparisonType": "NUMBER", + * "comparator": "=" + * } + * } + * + * * `fieldId` The ID of a field used in the comparison. + * * `fieldValue` The expected value of the field. + * * `comparisonType` The type of the comparison. Allowed values: `STRING`, `NUMBER`, `DATE`, `DATE_WITHOUT_TIME`, or `OPTIONID`. + * * `comparator` One of the supported comparator: `>`, `>=`, `=`, `<=`, `<`, `!=`. + * + * **Notes:** + * + * * If you choose the comparison type `STRING`, only `=` and `!=` are valid options. + * * You may leave `fieldValue` empty when comparison type is `!=` to indicate that a value is required in the field. + * * For date fields without time format values as `yyyy-MM-dd`, and for those with time as `yyyy-MM-dd HH:mm`. For example, for July 16 2021 use `2021-07-16`, for 8:05 AM use `2021-07-16 08:05`, and for 4 PM: `2021-07-16 16:00`. + * + * #### Validators #### + * + * Validators check that any input made to the transition is valid before the transition is performed. + * + * ##### Date field validator ##### + * + * A validator that compares two dates. + * + * { + * "type": "DateFieldValidator", + * "configuration": { + * "comparator": ">", + * "date1": "updated", + * "date2": "created", + * "expression": "1d", + * "includeTime": true + * } + * } + * + * * `comparator` One of the supported comparator: `>`, `>=`, `=`, `<=`, `<`, or `!=`. + * * `date1` The date field to validate. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `date2` The second date field. Required, if `expression` is not passed. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `expression` An expression specifying an offset. Required, if `date2` is not passed. Offsets are built with a number, with `-` as prefix for the past, and one of these time units: `d` for day, `w` for week, `m` for month, or `y` for year. For example, -2d means two days into the past and 1w means one week into the future. The `now` keyword enables a comparison with the current date. + * * `includeTime` If `true`, then the time part of the data is included for the comparison. If the field doesn't have a time part, 00:00:00 is used. + * + * ##### Windows date validator ##### + * + * A validator that checks that a date falls on or after a reference date and before or on the reference date plus a number of days. + * + * { + * "type": "WindowsDateValidator", + * "configuration": { + * "date1": "customfield_10009", + * "date2": "created", + * "windowsDays": 5 + * } + * } + * + * * `date1` The date field to validate. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `date2` The reference date. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `windowsDays` A positive integer indicating a number of days. + * + * ##### Field required validator ##### + * + * A validator that checks fields are not empty. By default, if a field is not included in the current context it's ignored and not validated. + * + * { + * "type": "FieldRequiredValidator", + * "configuration": { + * "ignoreContext": true, + * "errorMessage": "Hey", + * "fieldIds": [ + * "versions", + * "customfield_10037", + * "customfield_10003" + * ] + * } + * } + * + * * `ignoreContext` If `true`, then the context is ignored and all the fields are validated. + * * `errorMessage` OPTIONAL. The error message displayed when one or more fields are empty. A default error message is shown if an error message is not provided. + * * `fieldIds` The list of fields to validate. + * + * ##### Field changed validator ##### + * + * A validator that checks that a field value is changed. However, this validation can be ignored for users from a list of groups. + * + * { + * "type": "FieldChangedValidator", + * "configuration": { + * "fieldId": "comment", + * "errorMessage": "Hey", + * "exemptedGroups": [ + * "administrators", + * "atlassian-addons-admin" + * ] + * } + * } + * + * * `fieldId` The ID of a field. + * * `errorMessage` OPTIONAL. The error message displayed if the field is not changed. A default error message is shown if the error message is not provided. + * * `exemptedGroups` OPTIONAL. The list of groups. + * + * ##### Field has single value validator ##### + * + * A validator that checks that a multi-select field has only one value. Optionally, the validation can ignore values copied from subtasks. + * + * { + * "type": "FieldHasSingleValueValidator", + * "configuration": { + * "fieldId": "attachment, + * "excludeSubtasks": true + * } + * } + * + * * `fieldId` The ID of a field. + * * `excludeSubtasks` If `true`, then values copied from subtasks are ignored. + * + * ##### Parent status validator ##### + * + * A validator that checks the status of the parent issue of a subtask. Ìf the issue is not a subtask, no validation is performed. + * + * { + * "type": "ParentStatusValidator", + * "configuration": { + * "parentStatuses": [ + * { + * "id":"1" + * }, + * { + * "id":"2" + * } + * ] + * } + * } + * + * * `parentStatus` The list of required parent issue statuses. + * + * ##### Permission validator ##### + * + * A validator that checks the user has a permission. + * + * { + * "type": "PermissionValidator", + * "configuration": { + * "permissionKey": "ADMINISTER_PROJECTS" + * } + * } + * + * * `permissionKey` The permission required to perform the transition. Allowed values: [built-in](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions) or app defined permissions. + * + * ##### Previous status validator ##### + * + * A validator that checks if the issue has held a status. + * + * { + * "type": "PreviousStatusValidator", + * "configuration": { + * "mostRecentStatusOnly": false, + * "previousStatus": { + * "id": "15" + * } + * } + * } + * + * * `mostRecentStatusOnly` If `true`, then only the issue's preceding status (the one immediately before the current status) is checked. + * * `previousStatus` An object containing the ID of an issue status. + * + * ##### Regular expression validator ##### + * + * A validator that checks the content of a field against a regular expression. + * + * { + * "type": "RegexpFieldValidator", + * "configuration": { + * "regExp": "[0-9]", + * "fieldId": "customfield_10029" + * } + * } + * + * * `regExp`A regular expression. + * * `fieldId` The ID of a field. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:select` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multiselect` + * * `com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes` + * * `com.atlassian.jira.plugin.system.customfieldtypes:textarea` + * * `com.atlassian.jira.plugin.system.customfieldtypes:textfield` + * * `com.atlassian.jira.plugin.system.customfieldtypes:url` + * * `com.atlassian.jira.plugin.system.customfieldtypes:float` + * * `com.pyxis.greenhopper.jira:jsw-story-points` + * * `com.pyxis.greenhopper.jira:gh-epic-status` + * * `description` + * * `summary` + * + * ##### User permission validator ##### + * + * A validator that checks if a user has a permission. Obsolete. You may encounter this validator when getting transition rules and can pass it when updating or creating rules, for example, when you want to duplicate the rules from a workflow on a new workflow. + * + * { + * "type": "UserPermissionValidator", + * "configuration": { + * "permissionKey": "BROWSE_PROJECTS", + * "nullAllowed": false, + * "username": "TestUser" + * } + * } + * + * * `permissionKey` The permission to be validated. Allowed values: [built-in](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions) or app defined permissions. + * * `nullAllowed` If `true`, allows the transition when `username` is empty. + * * `username` The username to validate against the `permissionKey`. + * + * #### Post functions #### + * + * Post functions carry out any additional processing required after a Jira workflow transition is executed. + * + * ##### Fire issue event function ##### + * + * A post function that fires an event that is processed by the listeners. + * + * { + * "type": "FireIssueEventFunction", + * "configuration": { + * "event": { + * "id":"1" + * } + * } + * } + * + * **Note:** If provided, this post function overrides the default `FireIssueEventFunction`. Can be included once in a transition. + * + * * `event` An object containing the ID of the issue event. + * + * ##### Update issue status ##### + * + * A post function that sets issue status to the linked status of the destination workflow status. + * + * { + * "type": "UpdateIssueStatusFunction" + * } + * + * **Note:** This post function is a default function in global and directed transitions. It can only be added to the initial transition and can only be added once. + * + * ##### Create comment ##### + * + * A post function that adds a comment entered during the transition to an issue. + * + * { + * "type": "CreateCommentFunction" + * } + * + * **Note:** This post function is a default function in global and directed transitions. It can only be added to the initial transition and can only be added once. + * + * ##### Store issue ##### + * + * A post function that stores updates to an issue. + * + * { + * "type": "IssueStoreFunction" + * } + * + * **Note:** This post function can only be added to the initial transition and can only be added once. + * + * ##### Assign to current user function ##### + * + * A post function that assigns the issue to the current user if the current user has the `ASSIGNABLE_USER` permission. + * + * { + * "type": "AssignToCurrentUserFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Assign to lead function ##### + * + * A post function that assigns the issue to the project or component lead developer. + * + * { + * "type": "AssignToLeadFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Assign to reporter function ##### + * + * A post function that assigns the issue to the reporter. + * + * { + * "type": "AssignToReporterFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Clear field value function ##### + * + * A post function that clears the value from a field. + * + * { + * "type": "ClearFieldValuePostFunction", + * "configuration": { + * "fieldId": "assignee" + * } + * } + * + * * `fieldId` The ID of the field. + * + * ##### Copy value from other field function ##### + * + * A post function that copies the value of one field to another, either within an issue or from parent to subtask. + * + * { + * "type": "CopyValueFromOtherFieldPostFunction", + * "configuration": { + * "sourceFieldId": "assignee", + * "destinationFieldId": "creator", + * "copyType": "same" + * } + * } + * + * * `sourceFieldId` The ID of the source field. + * * `destinationFieldId` The ID of the destination field. + * * `copyType` Use `same` to copy the value from a field inside the issue, or `parent` to copy the value from the parent issue. + * + * ##### Create Crucible review workflow function (deprecated) ##### + * + * A post function that creates a Crucible review for all unreviewed code for the issue. + * + * { + * "type": "CreateCrucibleReviewWorkflowFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Set issue security level based on user's project role function ##### + * + * A post function that sets the issue's security level if the current user has a project role. + * + * { + * "type": "SetIssueSecurityFromRoleFunction", + * "configuration": { + * "projectRole": { + * "id":"10002" + * }, + * "issueSecurityLevel": { + * "id":"10000" + * } + * } + * } + * + * * `projectRole` An object containing the ID of the project role. + * * `issueSecurityLevel` OPTIONAL. The object containing the ID of the security level. If not passed, then the security level is set to `none`. + * + * ##### Trigger a webhook function ##### + * + * A post function that triggers a webhook. + * + * { + * "type": "TriggerWebhookFunction", + * "configuration": { + * "webhook": { + * "id": "1" + * } + * } + * } + * + * * `webhook` An object containing the ID of the webhook listener to trigger. + * + * ##### Update issue custom field function ##### + * + * A post function that updates the content of an issue custom field. + * + * { + * "type": "UpdateIssueCustomFieldPostFunction", + * "configuration": { + * "mode": "append", + * "fieldId": "customfield_10003", + * "fieldValue": "yikes" + * } + * } + * + * * `mode` Use `replace` to override the field content with `fieldValue` or `append` to add `fieldValue` to the end of the field content. + * * `fieldId` The ID of the field. + * * `fieldValue` The update content. + * + * ##### Update issue field function ##### + * + * A post function that updates a simple issue field. + * + * { + * "type": "UpdateIssueFieldFunction", + * "configuration": { + * "fieldId": "assignee", + * "fieldValue": "5f0c277e70b8a90025a00776" + * } + * } + * + * * `fieldId` The ID of the field. Allowed field types: + * + * * `assignee` + * * `description` + * * `environment` + * * `priority` + * * `resolution` + * * `summary` + * * `timeoriginalestimate` + * * `timeestimate` + * * `timespent` + * * `fieldValue` The update value. + * * If the `fieldId` is `assignee`, the `fieldValue` should be one of these values: + * + * * an account ID. + * * `automatic`. + * * a blank string, which sets the value to `unassigned`. + * + * #### Connect rules #### + * + * Connect rules are conditions, validators, and post functions of a transition that are registered by Connect apps. To create a rule registered by the app, the app must be enabled and the rule's module must exist. + * + * { + * "type": "appKey__moduleKey", + * "configuration": { + * "value":"{\"isValid\":\"true\"}" + * } + * } + * + * * `type` A Connect rule key in a form of `appKey__moduleKey`. + * * `value` The stringified JSON configuration of a Connect rule. + * + * #### Forge rules #### + * + * Forge transition rules are not yet supported. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createWorkflow"]; + }; + "/rest/api/3/workflow/rule/config": { + /** + * Get workflow transition rule configurations + * @description Returns a [paginated](#pagination) list of workflows with transition rules. The workflows can be filtered to return only those containing workflow transition rules: + * + * * of one or more transition rule types, such as [workflow post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/). + * * matching one or more transition rule keys. + * + * Only workflows containing transition rules created by the calling [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app are returned. + * + * Due to server-side optimizations, workflows with an empty list of rules may be returned; these workflows can be ignored. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation. + */ + get: operations["getWorkflowTransitionRuleConfigurations"]; + /** + * Update workflow transition rule configurations + * @description Updates configuration of workflow transition rules. The following rule types are supported: + * + * * [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/) + * * [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/) + * * [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/) + * + * Only rules created by the calling [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app can be updated. + * + * To assist with app migration, this operation can be used to: + * + * * Disable a rule. + * * Add a `tag`. Use this to filter rules in the [Get workflow transition rule configurations](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-transition-rules/#api-rest-api-3-workflow-rule-config-get). + * + * Rules are enabled if the `disabled` parameter is not provided. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation. + */ + put: operations["updateWorkflowTransitionRuleConfigurations"]; + }; + "/rest/api/3/workflow/rule/config/delete": { + /** + * Delete workflow transition rule configurations + * @description Deletes workflow transition rules from one or more workflows. These rule types are supported: + * + * * [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/) + * * [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/) + * * [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/) + * + * Only rules created by the calling Connect app can be deleted. + * + * **[Permissions](#permissions) required:** Only Connect apps can use this operation. + */ + put: operations["deleteWorkflowTransitionRuleConfigurations"]; + }; + "/rest/api/3/workflow/search": { + /** + * Get workflows paginated + * @description Returns a [paginated](#pagination) list of published classic workflows. When workflow names are specified, details of those workflows are returned. Otherwise, all published classic workflows are returned. + * + * This operation does not return next-gen workflows. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowsPaginated"]; + }; + "/rest/api/3/workflow/transitions/{transitionId}/properties": { + /** + * Get workflow transition properties + * @description Returns the properties on a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowTransitionProperties"]; + /** + * Update workflow transition property + * @description Updates a workflow transition by changing the property value. Trying to update a property that does not exist results in a new property being added to the transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateWorkflowTransitionProperty"]; + /** + * Create workflow transition property + * @description Adds a property to a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createWorkflowTransitionProperty"]; + /** + * Delete workflow transition property + * @description Deletes a property from a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteWorkflowTransitionProperty"]; + }; + "/rest/api/3/workflow/{entityId}": { + /** + * Delete inactive workflow + * @description Deletes a workflow. + * + * The workflow cannot be deleted if it is: + * + * * an active workflow. + * * a system workflow. + * * associated with any workflow scheme. + * * associated with any draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteInactiveWorkflow"]; + }; + "/rest/api/3/workflows": { + /** + * Bulk get workflows + * @description Returns a list of workflows and related statuses by providing workflow names, workflow IDs, or project and issue types. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* global permission to access all, including project-scoped, workflows + * * At least one of the *Administer projects* and *View (read-only) workflow* project permissions to access project-scoped workflows + */ + post: operations["readWorkflows"]; + }; + "/rest/api/3/workflows/capabilities": { + /** + * Get available workflow capabilities + * @description Get the list of workflow capabilities for a specific workflow using either the workflow ID, or the project and issue type ID pair. The response includes the scope of the workflow, defined as global/project-based, and a list of project types that the workflow is scoped to. It also includes all rules organised into their broad categories (conditions, validators, actions, triggers, screens) as well as the source location (Atlassian-provided, Connect, Forge). + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to access all, including global-scoped, workflows + * * *Administer projects* project permissions to access project-scoped workflows + * + * The current list of Atlassian-provided rules: + * + * #### Validators #### + * + * A validator rule that checks if a user has the required permissions to execute the transition in the workflow. + * + * ##### Permission validator ##### + * + * A validator rule that checks if a user has the required permissions to execute the transition in the workflow. + * + * { + * "ruleKey": "system:check-permission-validator", + * "parameters": { + * "permissionKey": "ADMINISTER_PROJECTS" + * } + * } + * + * Parameters: + * + * * `permissionKey` The permission required to perform the transition. Allowed values: [built-in Jira permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions). + * + * ##### Parent or child blocking validator ##### + * + * A validator to block the child issue\\u2019s transition depending on the parent issue\\u2019s status. + * + * { + * "ruleKey" : "system:parent-or-child-blocking-validator" + * "parameters" : { + * "blocker" : "PARENT" + * "statusIds" : "1,2,3" + * } + * } + * + * Parameters: + * + * * `blocker` currently only supports `PARENT`. + * * `statusIds` a comma-separated list of status IDs. + * + * ##### Previous status validator ##### + * + * A validator that checks if an issue has transitioned through specified previous status(es) before allowing the current transition to occur. + * + * { + * "ruleKey": "system:previous-status-validator", + * "parameters": { + * "previousStatusIds": "10014", + * "mostRecentStatusOnly": "true" + * } + * } + * + * Parameters: + * + * * `previousStatusIds` a comma-separated list of status IDs, currently only support one ID. + * * `mostRecentStatusOnly` when `true` only considers the most recent status for the condition evaluation. Allowed values: `true`, `false`. + * + * ##### Validate a field value ##### + * + * A validation that ensures a specific field's value meets the defined criteria before allowing an issue to transition in the workflow. + * + * Depending on the rule type, the result will vary: + * + * ###### Field required ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldRequired", + * "fieldsRequired": "assignee", + * "ignoreContext": "true", + * "errorMessage": "An assignee must be set!" + * } + * } + * + * Parameters: + * + * * `fieldsRequired` the ID of the field that is required. For a custom field, it would look like `customfield_123`. + * * `ignoreContext` controls the impact of context settings on field validation. When set to `true`, the validator doesn't check a required field if its context isn't configured for the current issue. When set to `false`, the validator requires a field even if its context is invalid. Allowed values: `true`, `false`. + * * `errorMessage` is the error message to display if the user does not provide a value during the transition. A default error message will be shown if you don't provide one (Optional). + * + * ###### Field changed ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldChanged", + * "groupsExemptFromValidation": "6862ac20-8672-4f68-896d-4854f5efb79e", + * "fieldKey": "versions", + * "errorMessage": "Affect versions must be modified before transition" + * } + * } + * + * Parameters: + * + * * `groupsExemptFromValidation` a comma-separated list of group IDs to be exempt from the validation. + * * `fieldKey` the ID of the field that has changed. For a custom field, it would look like `customfield_123`. + * * `errorMessage` the error message to display if the user does not provide a value during the transition. A default error message will be shown if you don't provide one (Optional). + * + * ###### Field has a single value ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldHasSingleValue", + * "fieldKey": "created", + * "excludeSubtasks": "true" + * } + * } + * + * Parameters: + * + * * `fieldKey` the ID of the field to validate. For a custom field, it would look like `customfield_123`. + * * `excludeSubtasks` Option to exclude values copied from sub-tasks. Allowed values: `true`, `false`. + * + * ###### Field matches regular expression ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldMatchesRegularExpression", + * "regexp": "[0-9]{4}", + * "fieldKey": "description" + * } + * } + * + * Parameters: + * + * * `regexp` the regular expression used to validate the field\\u2019s content. + * * `fieldKey` the ID of the field to validate. For a custom field, it would look like `customfield_123`. + * + * ###### Date field comparison ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "dateFieldComparison", + * "date1FieldKey": "duedate", + * "date2FieldKey": "customfield_10054", + * "includeTime": "true", + * "conditionSelected": ">=" + * } + * } + * + * Parameters: + * + * * `date1FieldKey` the ID of the first field to compare. For a custom field, it would look like `customfield_123`. + * * `date2FieldKey` the ID of the second field to compare. For a custom field, it would look like `customfield_123`. + * * `includeTime` if `true`, compares both date and time. Allowed values: `true`, `false`. + * * `conditionSelected` the condition to compare with. Allowed values: `>`, `>=`, `=`, `<=`, `<`, `!=`. + * + * ###### Date range comparison ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "windowDateComparison", + * "date1FieldKey": "customfield_10009", + * "date2FieldKey": "customfield_10054", + * "numberOfDays": "3" + * } + * } + * + * Parameters: + * + * * `date1FieldKey` the ID of the first field to compare. For a custom field, it would look like `customfield_123`. + * * `date2FieldKey` the ID of the second field to compare. For a custom field, it would look like `customfield_123`. + * * `numberOfDays` maximum number of days past the reference date (`date2FieldKey`) to pass validation. + * + * This rule is composed by aggregating the following legacy rules: + * + * * FieldRequiredValidator + * * FieldChangedValidator + * * FieldHasSingleValueValidator + * * RegexpFieldValidator + * * DateFieldValidator + * * WindowsDateValidator + * + * ##### Proforma: Forms attached validator ##### + * + * Validates that one or more forms are attached to the issue. + * + * { + * "ruleKey" : "system:proforma-forms-attached" + * "parameters" : {} + * } + * + * ##### Proforma: Forms submitted validator ##### + * + * Validates that all forms attached to the issue have been submitted. + * + * { + * "ruleKey" : "system:proforma-forms-submitted" + * "parameters" : {} + * } + * + * #### Conditions #### + * + * Conditions enable workflow rules that govern whether a transition can execute. + * + * ##### Check field value ##### + * + * A condition rule evaluates as true if a specific field's value meets the defined criteria. This rule ensures that an issue can only transition to the next step in the workflow if the field's value matches the desired condition. + * + * { + * "ruleKey": "system:check-field-value", + * "parameters": { + * "fieldId": "description", + * "fieldValue": "[\"Done\"]", + * "comparator": "=", + * "comparisonType": "STRING" + * } + * } + * + * Parameters: + * + * * `fieldId` The ID of the field to check the value of. For non-system fields, it will look like `customfield_123`. Note: `fieldId` is used interchangeably with the idea of `fieldKey` here, they refer to the same field. + * * `fieldValue` the list of values to check against the field\\u2019s value. + * * `comparator` The comparison logic. Allowed values: `>`, `>=`, `=`, `<=`, `<`, `!=`. + * * `comparisonType` The type of data being compared. Allowed values: `STRING`, `NUMBER`, `DATE`, `DATE_WITHOUT_TIME`, `OPTIONID`. + * + * ##### Restrict issue transition ##### + * + * This rule ensures that issue transitions are restricted based on user accounts, roles, group memberships, and permissions, maintaining control over who can transition an issue. This condition evaluates as `true` if any of the following criteria is met. + * + * { + * "ruleKey": "system:restrict-issue-transition", + * "parameters": { + * "accountIds": "allow-reporter,5e68ac137d64450d01a77fa0", + * "roleIds": "10002,10004", + * "groupIds": "703ff44a-7dc8-4f4b-9aa6-a65bf3574fa4", + * "permissionKeys": "ADMINISTER_PROJECTS", + * "groupCustomFields": "customfield_10028", + * "allowUserCustomFields": "customfield_10072,customfield_10144,customfield_10007", + * "denyUserCustomFields": "customfield_10107" + * } + * } + * + * Parameters: + * + * * `accountIds` a comma-separated list of the user account IDs. It also allows generic values like: `allow-assignee`, `allow-reporter`, and `accountIds` Note: This is only supported in team-managed projects + * * `roleIds` a comma-separated list of role IDs. + * * `groupIds` a comma-separated list of group IDs. + * * `permissionKeys` a comma-separated list of permission keys. Allowed values: [built-in Jira permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions). + * * `groupCustomFields` a comma-separated list of group custom field IDs. + * * `allowUserCustomFields` a comma-separated list of user custom field IDs to allow for issue transition. + * * `denyUserCustomFields` a comma-separated list of user custom field IDs to deny for issue transition. + * + * This rule is composed by aggregating the following legacy rules: + * + * * AllowOnlyAssignee + * * AllowOnlyReporter + * * InAnyProjectRoleCondition + * * InProjectRoleCondition + * * UserInAnyGroupCondition + * * UserInGroupCondition + * * PermissionCondtion + * * InGroupCFCondition + * * UserIsInCustomFieldCondition + * + * ##### Previous status condition ##### + * + * A condition that evaluates based on an issue's previous status(es) and specific criteria. + * + * { + * "ruleKey" : "system:previous-status-condition" + * "parameters" : { + * "previousStatusIds" : "10004", + * "not": "true", + * "mostRecentStatusOnly" : "true", + * "includeCurrentStatus": "true", + * "ignoreLoopTransitions": "true" + * } + * } + * + * Parameters: + * + * * `previousStatusIds` a comma-separated list of status IDs, current only support one ID. + * * `not` indicates if the condition should be reversed. When `true` it checks that the issue has not been in the selected statuses. Allowed values: `true`, `false`. + * * `mostRecentStatusOnly` when true only considers the most recent status for the condition evaluation. Allowed values: `true`, `false`. + * * `includeCurrentStatus` includes the current status when evaluating if the issue has been through the selected statuses. Allowed values: `true`, `false`. + * * `ignoreLoopTransitions` ignore loop transitions. Allowed values: `true`, `false`. + * + * ##### Parent or child blocking condition ##### + * + * A condition to block the parent\\u2019s issue transition depending on the child\\u2019s issue status. + * + * { + * "ruleKey" : "system:parent-or-child-blocking-condition" + * "parameters" : { + * "blocker" : "CHILD", + * "statusIds" : "1,2,3" + * } + * } + * + * Parameters: + * + * * `blocker` currently only supports `CHILD`. + * * `statusIds` a comma-separated list of status IDs. + * + * ##### Separation of duties ##### + * + * A condition preventing the user from performing, if the user has already performed a transition on the issue. + * + * { + * "ruleKey": "system:separation-of-duties", + * "parameters": { + * "fromStatusId": "10161", + * "toStatusId": "10160" + * } + * } + * + * Parameters: + * + * * `fromStatusId` represents the status ID from which the issue is transitioning. It ensures that the user performing the current transition has not performed any actions when the issue was in the specified status. + * * `toStatusId` represents the status ID to which the issue is transitioning. It ensures that the user performing the current transition is not the same user who has previously transitioned the issue. + * + * ##### Restrict transitions ##### + * + * A condition preventing all users from transitioning the issue can also optionally include APIs as well. + * + * { + * "ruleKey": "system:restrict-from-all-users", + * "parameters": { + * "restrictMode": "users" + * } + * } + * + * Parameters: + * + * * `restrictMode` restricts the issue transition including/excluding APIs. Allowed values: `"users"`, `"usersAndAPI"`. + * + * ##### Jira Service Management block until approved ##### + * + * Block an issue transition until approval. Note: This is only supported in team-managed projects. + * + * { + * "ruleKey": "system:jsd-approvals-block-until-approved", + * "parameters": { + * "approvalConfigurationJson": "{"statusExternalUuid...}" + * } + * } + * + * Parameters: + * + * * `approvalConfigurationJson` a stringified JSON holding the Jira Service Management approval configuration. + * + * ##### Jira Service Management block until rejected ##### + * + * Block an issue transition until rejected. Note: This is only supported in team-managed projects. + * + * { + * "ruleKey": "system:jsd-approvals-block-until-rejected", + * "parameters": { + * "approvalConfigurationJson": "{"statusExternalUuid...}" + * } + * } + * + * Parameters: + * + * * `approvalConfigurationJson` a stringified JSON holding the Jira Service Management approval configuration. + * + * ##### Block in progress approval ##### + * + * Condition to block issue transition if there is pending approval. Note: This is only supported in company-managed projects. + * + * { + * "ruleKey": "system:block-in-progress-approval", + * "parameters": {} + * } + * + * #### Post functions #### + * + * Post functions carry out any additional processing required after a workflow transition is executed. + * + * ##### Change assignee ##### + * + * A post function rule that changes the assignee of an issue after a transition. + * + * { + * "ruleKey": "system:change-assignee", + * "parameters": { + * "type": "to-selected-user", + * "accountId": "example-account-id" + * } + * } + * + * Parameters: + * + * * `type` the parameter used to determine the new assignee. Allowed values: `to-selected-user`, `to-unassigned`, `to-current-user`, `to-current-user`, `to-default-user`, `to-default-user` + * * `accountId` the account ID of the user to assign the issue to. This parameter is required only when the type is `"to-selected-user"`. + * + * ##### Copy field value ##### + * + * A post function that automates the process of copying values between fields during a specific transition, ensuring data consistency and reducing manual effort. + * + * { + * "ruleKey": "system:copy-value-from-other-field", + * "parameters": { + * "sourceFieldKey": "description", + * "targetFieldKey": "components", + * "issueSource": "SAME" + * } + * } + * + * Parameters: + * + * * `sourceFieldKey` the field key to copy from. For a custom field, it would look like `customfield_123` + * * `targetFieldKey` the field key to copy to. For a custom field, it would look like `customfield_123` + * * `issueSource` `SAME` or `PARENT`. Defaults to `SAME` if no value is provided. + * + * ##### Update field ##### + * + * A post function that updates or appends a specific field with the given value. + * + * { + * "ruleKey": "system:update-field", + * "parameters": { + * "field": "customfield_10056", + * "value": "asdf", + * "mode": "append" + * } + * } + * + * Parameters: + * + * * `field` the ID of the field to update. For a custom field, it would look like `customfield_123` + * * `value` the value to update the field with. + * * `mode` `append` or `replace`. Determines if a value will be appended to the current value, or if the current value will be replaced. + * + * ##### Trigger webhook ##### + * + * A post function that automatically triggers a predefined webhook when a transition occurs in the workflow. + * + * { + * "ruleKey": "system:trigger-webhook", + * "parameters": { + * "webhookId": "1" + * } + * } + * + * Parameters: + * + * * `webhookId` the ID of the webhook. + * + * #### Screen #### + * + * ##### Remind people to update fields ##### + * + * A screen rule that prompts users to update a specific field when they interact with an issue screen during a transition. This rule is useful for ensuring that users provide or modify necessary information before moving an issue to the next step in the workflow. + * + * { + * "ruleKey": "system:remind-people-to-update-fields", + * "params": { + * "remindingFieldIds": "assignee,customfield_10025", + * "remindingMessage": "The message", + * "remindingAlwaysAsk": "true" + * } + * } + * + * Parameters: + * + * * `remindingFieldIds` a comma-separated list of field IDs. Note: `fieldId` is used interchangeably with the idea of `fieldKey` here, they refer to the same field. + * * `remindingMessage` the message to display when prompting the users to update the fields. + * * `remindingAlwaysAsk` always remind to update fields. Allowed values: `true`, `false`. + * + * ##### Shared transition screen ##### + * + * A common screen that is shared between transitions in a workflow. + * + * { + * "ruleKey": "system:transition-screen", + * "params": { + * "screenId": "3" + * } + * } + * + * Parameters: + * + * * `screenId` the ID of the screen. + * + * #### Connect & Forge #### + * + * ##### Connect rules ##### + * + * Validator/Condition/Post function for Connect app. + * + * { + * "ruleKey": "connect:expression-validator", + * "parameters": { + * "appKey": "com.atlassian.app", + * "config": "", + * "id": "90ce590f-e90c-4cd3-8281-165ce41f2ac3", + * "disabled": "false", + * "tag": "" + * } + * } + * + * Parameters: + * + * * `ruleKey` Validator: `connect:expression-validator`, Condition: `connect:expression-condition`, and Post function: `connect:remote-workflow-function` + * * `appKey` the reference to the Connect app + * * `config` a JSON payload string describing the configuration + * * `id` the ID of the rule + * * `disabled` determine if the Connect app is disabled. Allowed values: `true`, `false`. + * * `tag` additional tags for the Connect app + * + * ##### Forge rules ##### + * + * Validator/Condition/Post function for Forge app. + * + * { + * "ruleKey": "forge:expression-validator", + * "parameters": { + * "key": "ari:cloud:ecosystem::extension/{appId}/{environmentId}/static/{moduleKey}", + * "config": "{"searchString":"workflow validator"}", + * "id": "a865ddf6-bb3f-4a7b-9540-c2f8b3f9f6c2" + * } + * } + * + * Parameters: + * + * * `ruleKey` Validator: `forge:expression-validator`, Condition: `forge:expression-condition`, and Post function: `forge:workflow-post-function` + * * `key` the identifier for the Forge app + * * `config` the persistent stringified JSON configuration for the Forge rule + * * `id` the ID of the Forge rule + */ + get: operations["workflowCapabilities"]; + }; + "/rest/api/3/workflows/create": { + /** + * Bulk create workflows + * @description Create workflows and related statuses. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + post: operations["createWorkflows"]; + }; + "/rest/api/3/workflows/create/validation": { + /** + * Validate create workflows + * @description Validate the payload for bulk create workflows. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + post: operations["validateCreateWorkflows"]; + }; + "/rest/api/3/workflows/update": { + /** + * Bulk update workflows + * @description Update workflows and related statuses. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + post: operations["updateWorkflows"]; + }; + "/rest/api/3/workflows/update/validation": { + /** + * Validate update workflows + * @description Validate the payload for bulk update workflows. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + post: operations["validateUpdateWorkflows"]; + }; + "/rest/api/3/workflowscheme": { + /** + * Get all workflow schemes + * @description Returns a [paginated](#pagination) list of all workflow schemes, not including draft workflow schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getAllWorkflowSchemes"]; + /** + * Create workflow scheme + * @description Creates a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createWorkflowScheme"]; + }; + "/rest/api/3/workflowscheme/project": { + /** + * Get workflow scheme project associations + * @description Returns a list of the workflow schemes associated with a list of projects. Each returned workflow scheme includes a list of the requested projects associated with it. Any team-managed or non-existent projects in the request are ignored and no errors are returned. + * + * If the project is associated with the `Default Workflow Scheme` no ID is returned. This is because the way the `Default Workflow Scheme` is stored means it has no ID. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowSchemeProjectAssociations"]; + /** + * Assign workflow scheme to project + * @description Assigns a workflow scheme to a project. This operation is performed only when there are no issues in the project. + * + * Workflow schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["assignSchemeToProject"]; + }; + "/rest/api/3/workflowscheme/read": { + /** + * Bulk get workflow schemes + * @description Returns a list of workflow schemes by providing workflow scheme IDs or project IDs. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* global permission to access all, including project-scoped, workflow schemes + * * *Administer projects* project permissions to access project-scoped workflow schemes + */ + post: operations["readWorkflowSchemes"]; + }; + "/rest/api/3/workflowscheme/update": { + /** + * Update workflow scheme + * @description Updates company-managed and team-managed project workflow schemes. This API doesn't have a concept of draft, so any changes made to a workflow scheme are immediately available. When changing the available statuses for issue types, an [asynchronous task](#async) migrates the issues as defined in the provided mappings. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to update all, including global-scoped, workflow schemes. + * * *Administer projects* project permission to update project-scoped workflow schemes. + */ + post: operations["updateSchemes"]; + }; + "/rest/api/3/workflowscheme/update/mappings": { + /** + * Get required status mappings for workflow scheme update + * @description Gets the required status mappings for the desired changes to a workflow scheme. The results are provided per issue type and workflow. When updating a workflow scheme, status mappings can be provided per issue type, per workflow, or both. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* permission to update all, including global-scoped, workflow schemes. + * * *Administer projects* project permission to update project-scoped workflow schemes. + */ + post: operations["updateWorkflowSchemeMappings"]; + }; + "/rest/api/3/workflowscheme/{id}": { + /** + * Get workflow scheme + * @description Returns a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowScheme"]; + /** + * Classic update workflow scheme + * @description Updates a company-manged project workflow scheme, including the name, default workflow, issue type to project mappings, and more. If the workflow scheme is active (that is, being used by at least one project), then a draft workflow scheme is created or updated instead, provided that `updateDraftIfNeeded` is set to `true`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateWorkflowScheme"]; + /** + * Delete workflow scheme + * @description Deletes a workflow scheme. Note that a workflow scheme cannot be deleted if it is active (that is, being used by at least one project). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteWorkflowScheme"]; + }; + "/rest/api/3/workflowscheme/{id}/createdraft": { + /** + * Create draft workflow scheme + * @description Create a draft workflow scheme from an active workflow scheme, by copying the active workflow scheme. Note that an active workflow scheme can only have one draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["createWorkflowSchemeDraftFromParent"]; + }; + "/rest/api/3/workflowscheme/{id}/default": { + /** + * Get default workflow + * @description Returns the default workflow for a workflow scheme. The default workflow is the workflow that is assigned any issue types that have not been mapped to any other workflow. The default workflow has *All Unassigned Issue Types* listed in its issue types for the workflow scheme in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getDefaultWorkflow"]; + /** + * Update default workflow + * @description Sets the default workflow for a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` in the request object and a draft workflow scheme is created or updated with the new default workflow. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateDefaultWorkflow"]; + /** + * Delete default workflow + * @description Resets the default workflow for a workflow scheme. That is, the default workflow is set to Jira's system workflow (the *jira* workflow). + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` and a draft workflow scheme is created or updated with the default workflow reset. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteDefaultWorkflow"]; + }; + "/rest/api/3/workflowscheme/{id}/draft": { + /** + * Get draft workflow scheme + * @description Returns the draft workflow scheme for an active workflow scheme. Draft workflow schemes allow changes to be made to the active workflow schemes: When an active workflow scheme is updated, a draft copy is created. The draft is modified, then the changes in the draft are copied back to the active workflow scheme. See [Configuring workflow schemes](https://confluence.atlassian.com/x/tohKLg) for more information. + * Note that: + * + * * Only active workflow schemes can have draft workflow schemes. + * * An active workflow scheme can only have one draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowSchemeDraft"]; + /** + * Update draft workflow scheme + * @description Updates a draft workflow scheme. If a draft workflow scheme does not exist for the active workflow scheme, then a draft is created. Note that an active workflow scheme can only have one draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateWorkflowSchemeDraft"]; + /** + * Delete draft workflow scheme + * @description Deletes a draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteWorkflowSchemeDraft"]; + }; + "/rest/api/3/workflowscheme/{id}/draft/default": { + /** + * Get draft default workflow + * @description Returns the default workflow for a workflow scheme's draft. The default workflow is the workflow that is assigned any issue types that have not been mapped to any other workflow. The default workflow has *All Unassigned Issue Types* listed in its issue types for the workflow scheme in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getDraftDefaultWorkflow"]; + /** + * Update draft default workflow + * @description Sets the default workflow for a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateDraftDefaultWorkflow"]; + /** + * Delete draft default workflow + * @description Resets the default workflow for a workflow scheme's draft. That is, the default workflow is set to Jira's system workflow (the *jira* workflow). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteDraftDefaultWorkflow"]; + }; + "/rest/api/3/workflowscheme/{id}/draft/issuetype/{issueType}": { + /** + * Get workflow for issue type in draft workflow scheme + * @description Returns the issue type-workflow mapping for an issue type in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowSchemeDraftIssueType"]; + /** + * Set workflow for issue type in draft workflow scheme + * @description Sets the workflow for an issue type in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setWorkflowSchemeDraftIssueType"]; + /** + * Delete workflow for issue type in draft workflow scheme + * @description Deletes the issue type-workflow mapping for an issue type in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteWorkflowSchemeDraftIssueType"]; + }; + "/rest/api/3/workflowscheme/{id}/draft/publish": { + /** + * Publish draft workflow scheme + * @description Publishes a draft workflow scheme. + * + * Where the draft workflow includes new workflow statuses for an issue type, mappings are provided to update issues with the original workflow status to the new workflow status. + * + * This operation is [asynchronous](#async). 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 updates. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + post: operations["publishDraftWorkflowScheme"]; + }; + "/rest/api/3/workflowscheme/{id}/draft/workflow": { + /** + * Get issue types for workflows in draft workflow scheme + * @description Returns the workflow-issue type mappings for a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getDraftWorkflow"]; + /** + * Set issue types for workflow in workflow scheme + * @description Sets the issue types for a workflow in a workflow scheme's draft. The workflow can also be set as the default workflow for the draft workflow scheme. Unmapped issues types are mapped to the default workflow. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateDraftWorkflowMapping"]; + /** + * Delete issue types for workflow in draft workflow scheme + * @description Deletes the workflow-issue type mapping for a workflow in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteDraftWorkflowMapping"]; + }; + "/rest/api/3/workflowscheme/{id}/issuetype/{issueType}": { + /** + * Get workflow for issue type in workflow scheme + * @description Returns the issue type-workflow mapping for an issue type in a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflowSchemeIssueType"]; + /** + * Set workflow for issue type in workflow scheme + * @description Sets the workflow for an issue type in a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` in the request body and a draft workflow scheme is created or updated with the new issue type-workflow mapping. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["setWorkflowSchemeIssueType"]; + /** + * Delete workflow for issue type in workflow scheme + * @description Deletes the issue type-workflow mapping for an issue type in a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` and a draft workflow scheme is created or updated with the issue type-workflow mapping deleted. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteWorkflowSchemeIssueType"]; + }; + "/rest/api/3/workflowscheme/{id}/workflow": { + /** + * Get issue types for workflows in workflow scheme + * @description Returns the workflow-issue type mappings for a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + get: operations["getWorkflow"]; + /** + * Set issue types for workflow in workflow scheme + * @description Sets the issue types for a workflow in a workflow scheme. The workflow can also be set as the default workflow for the workflow scheme. Unmapped issues types are mapped to the default workflow. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` in the request body and a draft workflow scheme is created or updated with the new workflow-issue types mappings. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + put: operations["updateWorkflowMapping"]; + /** + * Delete issue types for workflow in workflow scheme + * @description Deletes the workflow-issue type mapping for a workflow in a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` and a draft workflow scheme is created or updated with the workflow-issue type mapping deleted. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + delete: operations["deleteWorkflowMapping"]; + }; + "/rest/api/3/worklog/deleted": { + /** + * Get IDs of deleted worklogs + * @description Returns a list of IDs and delete timestamps for worklogs deleted after a date and time. + * + * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set to true on the last page of worklogs. + * + * This resource does not return worklogs deleted during the minute preceding the request. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + get: operations["getIdsOfWorklogsDeletedSince"]; + }; + "/rest/api/3/worklog/list": { + /** + * Get worklogs + * @description Returns worklog details for a list of worklog IDs. + * + * The returned list of worklogs is limited to 1000 items. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, worklogs are only returned where either of the following is true: + * + * * the worklog is set as *Viewable by All Users*. + * * the user is a member of a project role or group with permission to view the worklog. + */ + post: operations["getWorklogsForIds"]; + }; + "/rest/api/3/worklog/updated": { + /** + * Get IDs of updated worklogs + * @description Returns a list of IDs and update timestamps for worklogs updated after a date and time. + * + * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set to true on the last page of worklogs. + * + * This resource does not return worklogs updated during the minute preceding the request. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, worklogs are only returned where either of the following is true: + * + * * the worklog is set as *Viewable by All Users*. + * * the user is a member of a project role or group with permission to view the worklog. + */ + get: operations["getIdsOfWorklogsModifiedSince"]; + }; + "/rest/atlassian-connect/1/addons/{addonKey}/properties": { + /** + * Get app properties + * @description Gets all the properties of an app. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + * Additionally, Forge apps published on the Marketplace can access properties of Connect apps they were [migrated from](https://developer.atlassian.com/platform/forge/build-a-connect-on-forge-app/). + */ + get: operations["AddonPropertiesResource.getAddonProperties_get"]; + }; + "/rest/atlassian-connect/1/addons/{addonKey}/properties/{propertyKey}": { + /** + * Get app property + * @description Returns the key and value of an app's property. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + * Additionally, Forge apps published on the Marketplace can access properties of Connect apps they were [migrated from](https://developer.atlassian.com/platform/forge/build-a-connect-on-forge-app/). + */ + get: operations["AddonPropertiesResource.getAddonProperty_get"]; + /** + * Set app property + * @description Sets the value of an app's property. Use this resource to store custom data for your app. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + */ + put: operations["AddonPropertiesResource.putAddonProperty_put"]; + /** + * Delete app property + * @description Deletes an app's property. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + */ + delete: operations["AddonPropertiesResource.deleteAddonProperty_delete"]; + }; + "/rest/atlassian-connect/1/app/module/dynamic": { + /** + * Get modules + * @description Returns all modules registered dynamically by the calling app. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request. + */ + get: operations["DynamicModulesResource.getModules_get"]; + /** + * Register modules + * @description Registers a list of modules. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request. + */ + post: operations["DynamicModulesResource.registerModules_post"]; + /** + * Remove modules + * @description Remove all or a list of modules registered by the calling app. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request. + */ + delete: operations["DynamicModulesResource.removeModules_delete"]; + }; + "/rest/atlassian-connect/1/migration/field": { + /** + * Bulk update custom field value + * @description Updates the value of a custom field added by Connect apps on one or more issues. + * The values of up to 200 custom fields can be updated. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request + */ + put: operations["AppIssueFieldValueUpdateResource.updateIssueFields_put"]; + }; + "/rest/atlassian-connect/1/migration/properties/{entityType}": { + /** + * Bulk update entity properties + * @description Updates the values of multiple entity properties for an object, up to 50 updates per request. This operation is for use by Connect apps during app migration. + */ + put: operations["MigrationResource.updateEntityPropertiesValue_put"]; + }; + "/rest/atlassian-connect/1/migration/workflow/rule/search": { + /** + * Get workflow transition rule configurations + * @description Returns configurations for workflow transition rules migrated from server to cloud and owned by the calling Connect app. + */ + post: operations["MigrationResource.workflowRuleSearch_post"]; + }; + "/rest/atlassian-connect/1/service-registry": { + /** + * Retrieve the attributes of service registries + * @description Retrieve the attributes of given service registries. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request and the servicesIds belong to the tenant you are requesting + */ + get: operations["ServiceRegistryResource.services_get"]; + }; + "/rest/forge/1/app/properties/{propertyKey}": { + /** + * Set app property (Forge) + * @description Sets the value of a Forge app's property. + * These values can be retrieved in [Jira expressions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) + * through the `app` [context variable](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#context-variables). + * + * For other use cases, use the [Storage API](https://developer.atlassian.com/platform/forge/runtime-reference/storage-api/). + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** Only Forge apps can make this request. + */ + put: operations["AddonPropertiesResource.putAppProperty_put"]; + /** + * Delete app property (Forge) + * @description Deletes a Forge app's property. + * + * **[Permissions](#permissions) required:** Only Forge apps can make this request. + */ + delete: operations["AddonPropertiesResource.deleteAppProperty_delete"]; + }; +} + +export type webhooks = Record; + +export interface components { + schemas: { + ActorInputBean: { + /** @description The name of the group to add as a default actor. This parameter cannot be used with the `groupId` parameter. As a group's name can change,use of `groupId` is recommended. This parameter accepts a comma-separated list. For example, `"group":["project-admin", "jira-developers"]`. */ + group?: string[]; + /** @description The ID of the group to add as a default actor. This parameter cannot be used with the `group` parameter This parameter accepts a comma-separated list. For example, `"groupId":["77f6ab39-e755-4570-a6ae-2d7a8df0bcb8", "0c011f85-69ed-49c4-a801-3b18d0f771bc"]`. */ + groupId?: string[]; + /** @description The account IDs of the users to add as default actors. This parameter accepts a comma-separated list. For example, `"user":["5b10a2844c20165700ede21g", "5b109f2e9729b51b54dc274d"]`. */ + user?: string[]; + }; + ActorsMap: { + /** @description The name of the group to add. This parameter cannot be used with the `groupId` parameter. As a group's name can change, use of `groupId` is recommended. */ + group?: string[]; + /** @description The ID of the group to add. This parameter cannot be used with the `group` parameter. */ + groupId?: string[]; + /** @description The user account ID of the user to add. */ + user?: string[]; + }; + AddFieldBean: { + /** @description The ID of the field to add. */ + fieldId: string; + }; + AddGroupBean: { + /** @description The name of the group. */ + name: string; + [key: string]: unknown; + }; + /** @description Details of notifications which should be added to the notification scheme. */ + AddNotificationsDetails: { + /** @description The list of notifications which should be added to the notification scheme. */ + notificationSchemeEvents: components["schemas"]["NotificationSchemeEventDetails"][]; + [key: string]: unknown; + }; + AddSecuritySchemeLevelsRequestBean: { + /** @description The list of scheme levels which should be added to the security scheme. */ + levels?: components["schemas"]["SecuritySchemeLevelBean"][]; + }; + /** @description Announcement banner configuration. */ + AnnouncementBannerConfiguration: { + /** @description Hash of the banner data. The client detects updates by comparing hash IDs. */ + hashId?: string; + /** @description Flag indicating if the announcement banner can be dismissed by the user. */ + isDismissible?: boolean; + /** @description Flag indicating if the announcement banner is enabled or not. */ + isEnabled?: boolean; + /** @description The text on the announcement banner. */ + message?: string; + /** + * @description Visibility of the announcement banner. + * @enum {string} + */ + visibility?: "PUBLIC" | "PRIVATE"; + }; + /** @description Configuration of the announcement banner. */ + AnnouncementBannerConfigurationUpdate: { + /** @description Flag indicating if the announcement banner can be dismissed by the user. */ + isDismissible?: boolean; + /** @description Flag indicating if the announcement banner is enabled or not. */ + isEnabled?: boolean; + /** @description The text on the announcement banner. */ + message?: string; + /** @description Visibility of the announcement banner. Can be public or private. */ + visibility?: string; + }; + /** @description A workflow transition rule. */ + AppWorkflowTransitionRule: { + configuration: components["schemas"]["RuleConfiguration"]; + /** @description The ID of the transition rule. */ + id: string; + /** @description The key of the rule, as defined in the Connect or the Forge app descriptor. */ + key: string; + transition?: components["schemas"]["WorkflowTransition"]; + }; + /** @description The application the linked item is in. */ + Application: { + /** @description The name of the application. Used in conjunction with the (remote) object icon title to display a tooltip for the link's icon. The tooltip takes the format "\[application name\] icon title". Blank items are excluded from the tooltip title. If both items are blank, the icon tooltop displays as "Web Link". Grouping and sorting of links may place links without an application name last. */ + name?: string; + /** @description The name-spaced type of the application, used by registered rendering apps. */ + type?: string; + [key: string]: unknown; + }; + /** @description Details of an application property. */ + ApplicationProperty: { + /** @description The allowed values, if applicable. */ + allowedValues?: string[]; + /** @description The default value of the application property. */ + defaultValue?: string; + /** @description The description of the application property. */ + desc?: string; + example?: string; + /** @description The ID of the application property. The ID and key are the same. */ + id?: string; + /** @description The key of the application property. The ID and key are the same. */ + key?: string; + /** @description The name of the application property. */ + name?: string; + /** @description The data type of the application property. */ + type?: string; + /** @description The new value. */ + value?: string; + }; + /** @description Details of an application role. */ + ApplicationRole: { + /** @description The groups that are granted default access for this application role. As a group's name can change, use of `defaultGroupsDetails` is recommended to identify a groups. */ + defaultGroups?: string[]; + /** @description The groups that are granted default access for this application role. */ + defaultGroupsDetails?: components["schemas"]["GroupName"][]; + /** @description Deprecated. */ + defined?: boolean; + /** @description The groups associated with the application role. */ + groupDetails?: components["schemas"]["GroupName"][]; + /** @description The groups associated with the application role. As a group's name can change, use of `groupDetails` is recommended to identify a groups. */ + groups?: string[]; + hasUnlimitedSeats?: boolean; + /** @description The key of the application role. */ + key?: string; + /** @description The display name of the application role. */ + name?: string; + /** + * Format: int32 + * @description The maximum count of users on your license. + */ + numberOfSeats?: number; + /** @description Indicates if the application role belongs to Jira platform (`jira-core`). */ + platform?: boolean; + /** + * Format: int32 + * @description The count of users remaining on your license. + */ + remainingSeats?: number; + /** @description Determines whether this application role should be selected by default on user creation. */ + selectedByDefault?: boolean; + /** + * Format: int32 + * @description The number of users counting against your license. + */ + userCount?: number; + /** @description The [type of users](https://confluence.atlassian.com/x/lRW3Ng) being counted against your license. */ + userCountDescription?: string; + }; + ArchiveIssueAsyncRequest: { + jql?: string; + }; + /** @description Details of a filter for exporting archived issues. */ + ArchivedIssuesFilterRequest: { + /** @description List archived issues archived by a specified account ID. */ + archivedBy?: string[]; + archivedDateRange?: components["schemas"]["DateRangeFilterRequest"]; + /** @description List archived issues with a specified issue type ID. */ + issueTypes?: string[]; + /** @description List archived issues with a specified project key. */ + projects?: string[]; + /** @description List archived issues where the reporter is a specified account ID. */ + reporters?: string[]; + [key: string]: unknown; + }; + /** @description Details of a field configuration to issue type mappings. */ + AssociateFieldConfigurationsWithIssueTypesRequest: { + /** @description Field configuration to issue type mappings. */ + mappings: components["schemas"]["FieldConfigurationToIssueTypeMapping"][]; + }; + /** @description Issue security scheme, project, and remapping details. */ + AssociateSecuritySchemeWithProjectDetails: { + /** @description The list of scheme levels which should be remapped to new levels of the issue security scheme. */ + oldToNewSecurityLevelMappings?: components["schemas"]["OldToNewSecurityLevelMappingsBean"][]; + /** @description The ID of the project. */ + projectId: string; + /** @description The ID of the issue security scheme. Providing null will clear the association with the issue security scheme. */ + schemeId: string; + }; + /** @description Details of an item associated with the changed record. */ + AssociatedItemBean: { + /** @description The ID of the associated record. */ + id?: string; + /** @description The name of the associated record. */ + name?: string; + /** @description The ID of the associated parent record. */ + parentId?: string; + /** @description The name of the associated parent record. */ + parentName?: string; + /** @description The type of the associated record. */ + typeName?: string; + }; + /** @description Details about an attachment. */ + Attachment: { + /** @description Details of the user who added the attachment. */ + author?: components["schemas"]["UserDetails"]; + /** @description The content of the attachment. */ + content?: string; + /** + * Format: date-time + * @description The datetime the attachment was created. + */ + created?: string; + /** @description The file name of the attachment. */ + filename?: string; + /** @description The ID of the attachment. */ + id?: string; + /** @description The MIME type of the attachment. */ + mimeType?: string; + /** @description The URL of the attachment details response. */ + self?: string; + /** + * Format: int64 + * @description The size of the attachment. + */ + size?: number; + /** @description The URL of a thumbnail representing the attachment. */ + thumbnail?: string; + [key: string]: unknown; + }; + AttachmentArchive: { + entries?: components["schemas"]["AttachmentArchiveEntry"][]; + moreAvailable?: boolean; + /** Format: int32 */ + totalEntryCount?: number; + /** Format: int32 */ + totalNumberOfEntriesAvailable?: number; + }; + AttachmentArchiveEntry: { + abbreviatedName?: string; + /** Format: int64 */ + entryIndex?: number; + mediaType?: string; + name?: string; + /** Format: int64 */ + size?: number; + }; + AttachmentArchiveImpl: { + /** @description The list of the items included in the archive. */ + entries?: components["schemas"]["AttachmentArchiveEntry"][]; + /** + * Format: int32 + * @description The number of items in the archive. + */ + totalEntryCount?: number; + }; + /** @description Metadata for an item in an attachment archive. */ + AttachmentArchiveItemReadable: { + /** + * Format: int64 + * @description The position of the item within the archive. + */ + index?: number; + /** @description The label for the archive item. */ + label?: string; + /** @description The MIME type of the archive item. */ + mediaType?: string; + /** @description The path of the archive item. */ + path?: string; + /** @description The size of the archive item. */ + size?: string; + }; + /** @description Metadata for an archive (for example a zip) and its contents. */ + AttachmentArchiveMetadataReadable: { + /** @description The list of the items included in the archive. */ + entries?: readonly components["schemas"]["AttachmentArchiveItemReadable"][]; + /** + * Format: int64 + * @description The ID of the attachment. + */ + id?: number; + /** @description The MIME type of the attachment. */ + mediaType?: string; + /** @description The name of the archive file. */ + name?: string; + /** + * Format: int64 + * @description The number of items included in the archive. + */ + totalEntryCount?: number; + }; + /** @description Metadata for an issue attachment. */ + AttachmentMetadata: { + /** @description Details of the user who attached the file. */ + author?: components["schemas"]["User"]; + /** @description The URL of the attachment. */ + content?: string; + /** + * Format: date-time + * @description The datetime the attachment was created. + */ + created?: string; + /** @description The name of the attachment file. */ + filename?: string; + /** + * Format: int64 + * @description The ID of the attachment. + */ + id?: number; + /** @description The MIME type of the attachment. */ + mimeType?: string; + /** @description Additional properties of the attachment. */ + properties?: { + [key: string]: unknown; + }; + /** + * Format: uri + * @description The URL of the attachment metadata details. + */ + self?: string; + /** + * Format: int64 + * @description The size of the attachment. + */ + size?: number; + /** @description The URL of a thumbnail representing the attachment. */ + thumbnail?: string; + }; + /** @description Details of the instance's attachment settings. */ + AttachmentSettings: { + /** @description Whether the ability to add attachments is enabled. */ + enabled?: boolean; + /** + * Format: int64 + * @description The maximum size of attachments permitted, in bytes. + */ + uploadLimit?: number; + }; + /** @description An audit record. */ + AuditRecordBean: { + /** @description The list of items associated with the changed record. */ + associatedItems?: readonly components["schemas"]["AssociatedItemBean"][]; + /** @description Deprecated, use `authorAccountId` instead. The key of the user who created the audit record. */ + authorKey?: string; + /** @description The category of the audit record. For a list of these categories, see the help article [Auditing in Jira applications](https://confluence.atlassian.com/x/noXKM). */ + category?: string; + /** @description The list of values changed in the record event. */ + changedValues?: readonly components["schemas"]["ChangedValueBean"][]; + /** + * Format: date-time + * @description The date and time on which the audit record was created. + */ + created?: string; + /** @description The description of the audit record. */ + description?: string; + /** @description The event the audit record originated from. */ + eventSource?: string; + /** + * Format: int64 + * @description The ID of the audit record. + */ + id?: number; + objectItem?: components["schemas"]["AssociatedItemBean"]; + /** @description The URL of the computer where the creation of the audit record was initiated. */ + remoteAddress?: string; + /** @description The summary of the audit record. */ + summary?: string; + }; + /** @description Container for a list of audit records. */ + AuditRecords: { + /** + * Format: int32 + * @description The requested or default limit on the number of audit items to be returned. + */ + limit?: number; + /** + * Format: int32 + * @description The number of audit items skipped before the first item in this list. + */ + offset?: number; + /** @description The list of audit items. */ + records?: readonly components["schemas"]["AuditRecordBean"][]; + /** + * Format: int64 + * @description The total number of audit items returned. + */ + total?: number; + }; + /** @description A field auto-complete suggestion. */ + AutoCompleteSuggestion: { + /** @description The display name of a suggested item. If `fieldValue` or `predicateValue` are provided, the matching text is highlighted with the HTML bold tag. */ + displayName?: string; + /** @description The value of a suggested item. */ + value?: string; + }; + /** @description The results from a JQL query. */ + AutoCompleteSuggestions: { + /** @description The list of suggested item. */ + results?: components["schemas"]["AutoCompleteSuggestion"][]; + }; + /** @description The details of the available dashboard gadget. */ + AvailableDashboardGadget: { + /** @description The module key of the gadget type. */ + moduleKey?: string; + /** @description The title of the gadget. */ + title: string; + /** @description The URI of the gadget type. */ + uri?: string; + }; + /** @description The list of available gadgets. */ + AvailableDashboardGadgetsResponse: { + /** @description The list of available gadgets. */ + gadgets: readonly components["schemas"]["AvailableDashboardGadget"][]; + }; + /** @description The Connect provided ecosystem rules available. */ + AvailableWorkflowConnectRule: { + /** @description The add-on providing the rule. */ + addonKey?: string; + /** @description The URL creation path segment defined in the Connect module. */ + createUrl?: string; + /** @description The rule description. */ + description?: string; + /** @description The URL edit path segment defined in the Connect module. */ + editUrl?: string; + /** @description The module providing the rule. */ + moduleKey?: string; + /** @description The rule name. */ + name?: string; + /** @description The rule key. */ + ruleKey?: string; + /** + * @description The rule type. + * @enum {string} + */ + ruleType?: "Condition" | "Validator" | "Function" | "Screen"; + /** @description The URL view path segment defined in the Connect module. */ + viewUrl?: string; + }; + /** @description The Forge provided ecosystem rules available. */ + AvailableWorkflowForgeRule: { + /** @description The rule description. */ + description?: string; + /** @description The unique ARI of the forge rule type. */ + id?: string; + /** @description The rule name. */ + name?: string; + /** @description The rule key. */ + ruleKey?: string; + /** + * @description The rule type. + * @enum {string} + */ + ruleType?: "Condition" | "Validator" | "Function" | "Screen"; + }; + /** @description The Atlassian provided system rules available. */ + AvailableWorkflowSystemRule: { + /** @description The rule description. */ + description: string; + /** @description List of rules that conflict with this one. */ + incompatibleRuleKeys: string[]; + /** @description Whether the rule can be added added to an initial transition. */ + isAvailableForInitialTransition: boolean; + /** @description Whether the rule is visible. */ + isVisible: boolean; + /** @description The rule name. */ + name: string; + /** @description The rule key. */ + ruleKey: string; + /** + * @description The rule type. + * @enum {string} + */ + ruleType: "Condition" | "Validator" | "Function" | "Screen"; + }; + /** @description The list of available trigger types. */ + AvailableWorkflowTriggerTypes: { + /** @description The description of the trigger rule. */ + description?: string; + /** @description The name of the trigger rule. */ + name?: string; + /** @description The type identifier of trigger rule. */ + type?: string; + }; + /** @description The trigger rules available. */ + AvailableWorkflowTriggers: { + /** @description The list of available trigger types. */ + availableTypes: components["schemas"]["AvailableWorkflowTriggerTypes"][]; + /** @description The rule key of the rule. */ + ruleKey: string; + }; + /** @description Details of an avatar. */ + Avatar: { + /** @description The file name of the avatar icon. Returned for system avatars. */ + fileName?: string; + /** @description The ID of the avatar. */ + id: string; + /** @description Whether the avatar can be deleted. */ + isDeletable?: boolean; + /** @description Whether the avatar is used in Jira. For example, shown as a project's avatar. */ + isSelected?: boolean; + /** @description Whether the avatar is a system avatar. */ + isSystemAvatar?: boolean; + /** @description The owner of the avatar. For a system avatar the owner is null (and nothing is returned). For non-system avatars this is the appropriate identifier, such as the ID for a project or the account ID for a user. */ + owner?: string; + /** @description The list of avatar icon URLs. */ + urls?: { + [key: string]: string; + }; + [key: string]: unknown; + }; + AvatarUrlsBean: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + /** @description Details about system and custom avatars. */ + Avatars: { + /** @description Custom avatars list. */ + custom?: readonly components["schemas"]["Avatar"][]; + /** @description System avatars list. */ + system?: readonly components["schemas"]["Avatar"][]; + }; + /** @description Details for changing owners of shareable entities */ + BulkChangeOwnerDetails: { + /** @description Whether the name is fixed automatically if it's duplicated after changing owner. */ + autofixName: boolean; + /** @description The account id of the new owner. */ + newOwner: string; + }; + /** @description Details of the options to create for a custom field. */ + BulkCustomFieldOptionCreateRequest: { + /** @description Details of options to create. */ + options?: components["schemas"]["CustomFieldOptionCreate"][]; + }; + /** @description Details of the options to update for a custom field. */ + BulkCustomFieldOptionUpdateRequest: { + /** @description Details of the options to update. */ + options?: components["schemas"]["CustomFieldOptionUpdate"][]; + }; + /** @description Errors of bulk edit action. */ + BulkEditActionError: { + /** @description The error messages. */ + errorMessages: string[]; + /** @description The errors. */ + errors: { + [key: string]: string; + }; + }; + /** @description Details of a request to bulk edit shareable entity. */ + BulkEditShareableEntityRequest: { + /** + * @description Allowed action for bulk edit shareable entity + * @enum {string} + */ + action: "changeOwner" | "changePermission" | "addPermission" | "removePermission"; + /** @description The details of change owner action. */ + changeOwnerDetails?: components["schemas"]["BulkChangeOwnerDetails"]; + /** @description The id list of shareable entities to be changed. */ + entityIds: number[]; + /** @description Whether the actions are executed by users with Administer Jira global permission. */ + extendAdminPermissions?: boolean; + /** @description The permission details to be changed. */ + permissionDetails?: components["schemas"]["PermissionDetails"]; + }; + /** @description Details of a request to bulk edit shareable entity. */ + BulkEditShareableEntityResponse: { + /** + * @description Allowed action for bulk edit shareable entity + * @enum {string} + */ + action: "changeOwner" | "changePermission" | "addPermission" | "removePermission"; + /** @description The mapping dashboard id to errors if any. */ + entityErrors?: { + [key: string]: components["schemas"]["BulkEditActionError"]; + }; + }; + /** @description A container for the watch status of a list of issues. */ + BulkIssueIsWatching: { + /** @description The map of issue ID to boolean watch status. */ + issuesIsWatching?: { + [key: string]: boolean; + }; + }; + /** @description Bulk issue property update request details. */ + BulkIssuePropertyUpdateRequest: { + /** @description EXPERIMENTAL. The Jira expression to calculate the value of the property. The value of the expression must be an object that can be converted to JSON, such as a number, boolean, string, list, or map. The context variables available to the expression are `issue` and `user`. Issues for which the expression returns a value whose JSON representation is longer than 32768 characters are ignored. */ + expression?: string; + /** @description The bulk operation filter. */ + filter?: components["schemas"]["IssueFilterForBulkPropertySet"]; + /** @description The value of the property. The value must be a [valid](https://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. */ + value?: unknown; + }; + BulkOperationErrorResult: { + elementErrors?: components["schemas"]["ErrorCollection"]; + /** Format: int32 */ + failedElementNumber?: number; + /** Format: int32 */ + status?: number; + }; + /** @description Details of global and project permissions granted to the user. */ + BulkPermissionGrants: { + /** @description List of permissions granted to the user. */ + globalPermissions: string[]; + /** @description List of project permissions and the projects and issues those permissions provide access to. */ + projectPermissions: components["schemas"]["BulkProjectPermissionGrants"][]; + }; + /** @description Details of global permissions to look up and project permissions with associated projects and issues to look up. */ + BulkPermissionsRequestBean: { + /** @description The account ID of a user. */ + accountId?: string; + /** @description Global permissions to look up. */ + globalPermissions?: string[]; + /** @description Project permissions with associated projects and issues to look up. */ + projectPermissions?: components["schemas"]["BulkProjectPermissions"][]; + }; + /** @description List of project permissions and the projects and issues those permissions grant access to. */ + BulkProjectPermissionGrants: { + /** @description IDs of the issues the user has the permission for. */ + issues: number[]; + /** @description A project permission, */ + permission: string; + /** @description IDs of the projects the user has the permission for. */ + projects: number[]; + }; + /** @description Details of project permissions and associated issues and projects to look up. */ + BulkProjectPermissions: { + /** @description List of issue IDs. */ + issues?: number[]; + /** @description List of project permissions. */ + permissions: string[]; + /** @description List of project IDs. */ + projects?: number[]; + }; + /** @description A change item. */ + ChangeDetails: { + /** @description The name of the field changed. */ + field?: string; + /** @description The ID of the field changed. */ + fieldId?: string; + /** @description The type of the field changed. */ + fieldtype?: string; + /** @description The details of the original value. */ + from?: string; + /** @description The details of the original value as a string. */ + fromString?: string; + /** @description The details of the new value. */ + to?: string; + /** @description The details of the new value as a string. */ + toString?: string; + }; + /** @description The account ID of the new owner. */ + ChangeFilterOwner: { + /** @description The account ID of the new owner. */ + accountId: string; + }; + /** @description Details of names changed in the record event. */ + ChangedValueBean: { + /** @description The value of the field before the change. */ + changedFrom?: string; + /** @description The value of the field after the change. */ + changedTo?: string; + /** @description The name of the field changed. */ + fieldName?: string; + }; + /** @description Details of a changed worklog. */ + ChangedWorklog: { + /** @description Details of properties associated with the change. */ + properties?: readonly components["schemas"]["EntityProperty"][]; + /** + * Format: int64 + * @description The datetime of the change. + */ + updatedTime?: number; + /** + * Format: int64 + * @description The ID of the worklog. + */ + worklogId?: number; + }; + /** @description List of changed worklogs. */ + ChangedWorklogs: { + lastPage?: boolean; + /** + * Format: uri + * @description The URL of the next list of changed worklogs. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of this changed worklogs list. + */ + self?: string; + /** + * Format: int64 + * @description The datetime of the first worklog item in the list. + */ + since?: number; + /** + * Format: int64 + * @description The datetime of the last worklog item in the list. + */ + until?: number; + /** @description Changed worklog list. */ + values?: readonly components["schemas"]["ChangedWorklog"][]; + }; + /** @description A log of changes made to issue fields. Changelogs related to workflow associations are currently being deprecated. */ + Changelog: { + /** @description The user who made the change. */ + author?: components["schemas"]["UserDetails"]; + /** + * Format: date-time + * @description The date on which the change took place. + */ + created?: string; + /** @description The history metadata associated with the changed. */ + historyMetadata?: components["schemas"]["HistoryMetadata"]; + /** @description The ID of the changelog. */ + id?: string; + /** @description The list of items changed. */ + items?: readonly components["schemas"]["ChangeDetails"][]; + }; + /** @description Details of an issue navigator column item. */ + ColumnItem: { + /** @description The issue navigator column label. */ + label?: string; + /** @description The issue navigator column value. */ + value?: string; + }; + ColumnRequestBody: { + columns?: string[]; + }; + /** @description A comment. */ + Comment: { + /** @description The ID of the user who created the comment. */ + author?: components["schemas"]["UserDetails"]; + /** @description The comment text in [Atlassian Document Format](https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/). */ + body?: unknown; + /** + * Format: date-time + * @description The date and time at which the comment was created. + */ + created?: string; + /** @description The ID of the comment. */ + id?: string; + /** @description Whether the comment was added from an email sent by a person who is not part of the issue. See [Allow external emails to be added as comments on issues](https://support.atlassian.com/jira-service-management-cloud/docs/allow-external-emails-to-be-added-as-comments-on-issues/)for information on setting up this feature. */ + jsdAuthorCanSeeRequest?: boolean; + /** @description Whether the comment is visible in Jira Service Desk. Defaults to true when comments are created in the Jira Cloud Platform. This includes when the site doesn't use Jira Service Desk or the project isn't a Jira Service Desk project and, therefore, there is no Jira Service Desk for the issue to be visible on. To create a comment with its visibility in Jira Service Desk set to false, use the Jira Service Desk REST API [Create request comment](https://developer.atlassian.com/cloud/jira/service-desk/rest/#api-rest-servicedeskapi-request-issueIdOrKey-comment-post) operation. */ + jsdPublic?: boolean; + /** @description A list of comment properties. Optional on create and update. */ + properties?: components["schemas"]["EntityProperty"][]; + /** @description The rendered version of the comment. */ + renderedBody?: string; + /** @description The URL of the comment. */ + self?: string; + /** @description The ID of the user who updated the comment last. */ + updateAuthor?: components["schemas"]["UserDetails"]; + /** + * Format: date-time + * @description The date and time at which the comment was updated last. + */ + updated?: string; + /** @description The group or role to which this comment is visible. Optional on create and update. */ + visibility?: components["schemas"]["Visibility"]; + [key: string]: unknown; + }; + /** @description Count of issues assigned to a component. */ + ComponentIssuesCount: { + /** + * Format: int64 + * @description The count of issues assigned to a component. + */ + issueCount?: number; + /** + * Format: uri + * @description The URL for this count of issues for a component. + */ + self?: string; + }; + /** @description Details about a component with a count of the issues it contains. */ + ComponentWithIssueCount: { + /** @description The details of the user associated with `assigneeType`, if any. See `realAssignee` for details of the user assigned to issues created with this component. */ + assignee?: components["schemas"]["User"]; + /** + * @description The nominal user type used to determine the assignee for issues created with this component. See `realAssigneeType` for details on how the type of the user, and hence the user, assigned to issues is determined. Takes the following values: + * + * * `PROJECT_LEAD` the assignee to any issues created with this component is nominally the lead for the project the component is in. + * * `COMPONENT_LEAD` the assignee to any issues created with this component is nominally the lead for the component. + * * `UNASSIGNED` an assignee is not set for issues created with this component. + * * `PROJECT_DEFAULT` the assignee to any issues created with this component is nominally the default assignee for the project that the component is in. + * @enum {string} + */ + assigneeType?: "PROJECT_DEFAULT" | "COMPONENT_LEAD" | "PROJECT_LEAD" | "UNASSIGNED"; + /** @description The description for the component. */ + description?: string; + /** @description The unique identifier for the component. */ + id?: string; + /** @description Whether a user is associated with `assigneeType`. For example, if the `assigneeType` is set to `COMPONENT_LEAD` but the component lead is not set, then `false` is returned. */ + isAssigneeTypeValid?: boolean; + /** + * Format: int64 + * @description Count of issues for the component. + */ + issueCount?: number; + /** @description The user details for the component's lead user. */ + lead?: components["schemas"]["User"]; + /** @description The name for the component. */ + name?: string; + /** @description The key of the project to which the component is assigned. */ + project?: string; + /** + * Format: int64 + * @description Not used. + */ + projectId?: number; + /** @description The user assigned to issues created with this component, when `assigneeType` does not identify a valid assignee. */ + realAssignee?: components["schemas"]["User"]; + /** + * @description The type of the assignee that is assigned to issues created with this component, when an assignee cannot be set from the `assigneeType`. For example, `assigneeType` is set to `COMPONENT_LEAD` but no component lead is set. This property is set to one of the following values: + * + * * `PROJECT_LEAD` when `assigneeType` is `PROJECT_LEAD` and the project lead has permission to be assigned issues in the project that the component is in. + * * `COMPONENT_LEAD` when `assignee`Type is `COMPONENT_LEAD` and the component lead has permission to be assigned issues in the project that the component is in. + * * `UNASSIGNED` when `assigneeType` is `UNASSIGNED` and Jira is configured to allow unassigned issues. + * * `PROJECT_DEFAULT` when none of the preceding cases are true. + * @enum {string} + */ + realAssigneeType?: "PROJECT_DEFAULT" | "COMPONENT_LEAD" | "PROJECT_LEAD" | "UNASSIGNED"; + /** + * Format: uri + * @description The URL for this count of the issues contained in the component. + */ + self?: string; + }; + /** @description A JQL query clause that consists of nested clauses. For example, `(labels in (urgent, blocker) OR lastCommentedBy = currentUser()). Note that, where nesting is not defined, the parser nests JQL clauses based on the operator precedence. For example, "A OR B AND C" is parsed as "(A OR B) AND C". See Setting the precedence of operators for more information about precedence in JQL queries.` */ + CompoundClause: { + /** @description The list of nested clauses. */ + clauses: components["schemas"]["JqlQueryClause"][]; + /** + * @description The operator between the clauses. + * @enum {string} + */ + operator: "and" | "or" | "not"; + }; + /** @description The conditions group associated with the transition. */ + ConditionGroupConfiguration: { + /** @description The nested conditions of the condition group. */ + conditionGroups?: components["schemas"]["ConditionGroupConfiguration"][]; + /** @description The rules for this condition. */ + conditions?: components["schemas"]["WorkflowRuleConfiguration"][]; + /** + * @description Determines how the conditions in the group are evaluated. Accepts either `ANY` or `ALL`. If `ANY` is used, at least one condition in the group must be true for the group to evaluate to true. If `ALL` is used, all conditions in the group must be true for the group to evaluate to true. + * @enum {string} + */ + operation?: "ANY" | "ALL"; + } | null; + /** @description The conditions group associated with the transition. */ + ConditionGroupUpdate: { + /** @description The nested conditions of the condition group. */ + conditionGroups?: components["schemas"]["ConditionGroupUpdate"][]; + /** @description The rules for this condition. */ + conditions?: components["schemas"]["WorkflowRuleConfiguration"][]; + /** + * @description Determines how the conditions in the group are evaluated. Accepts either `ANY` or `ALL`. If `ANY` is used, at least one condition in the group must be true for the group to evaluate to true. If `ALL` is used, all conditions in the group must be true for the group to evaluate to true. + * @enum {string} + */ + operation: "ANY" | "ALL"; + } | null; + /** @description Details about the configuration of Jira. */ + Configuration: { + /** @description Whether the ability to add attachments to issues is enabled. */ + attachmentsEnabled?: boolean; + /** @description Whether the ability to link issues is enabled. */ + issueLinkingEnabled?: boolean; + /** @description Whether the ability to create subtasks for issues is enabled. */ + subTasksEnabled?: boolean; + /** @description The configuration of time tracking. */ + timeTrackingConfiguration?: components["schemas"]["TimeTrackingConfiguration"]; + /** @description Whether the ability to track time is enabled. This property is deprecated. */ + timeTrackingEnabled?: boolean; + /** @description Whether the ability to create unassigned issues is enabled. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. */ + unassignedIssuesAllowed?: boolean; + /** @description Whether the ability for users to vote on issues is enabled. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. */ + votingEnabled?: boolean; + /** @description Whether the ability for users to watch issues is enabled. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. */ + watchingEnabled?: boolean; + }; + /** @description A list of custom field details. */ + ConnectCustomFieldValue: { + /** + * @description The type of custom field. + * @enum {string} + */ + _type: + | "StringIssueField" + | "NumberIssueField" + | "RichTextIssueField" + | "SingleSelectIssueField" + | "MultiSelectIssueField" + | "TextIssueField"; + /** @description The custom field ID. */ + fieldID: number; + /** @description The issue ID. */ + issueID: number; + /** @description The value of number type custom field when `_type` is `NumberIssueField`. */ + number?: number; + /** @description The value of single select and multiselect custom field type when `_type` is `SingleSelectIssueField` or `MultiSelectIssueField`. */ + optionID?: string; + /** @description The value of richText type custom field when `_type` is `RichTextIssueField`. */ + richText?: string; + /** @description The value of string type custom field when `_type` is `StringIssueField`. */ + string?: string; + /** @description The value of of text custom field type when `_type` is `TextIssueField`. */ + text?: string; + }; + /** @description Details of updates for a custom field. */ + ConnectCustomFieldValues: { + /** @description The list of custom field update details. */ + updateValueList?: components["schemas"]["ConnectCustomFieldValue"][]; + }; + /** + * @description A [Connect module](https://developer.atlassian.com/cloud/jira/platform/about-jira-modules/) in the same format as in the + * [app descriptor](https://developer.atlassian.com/cloud/jira/platform/app-descriptor/). + * @example { + * "description": { + * "value": "field with team" + * }, + * "type": "single_select", + * "extractions": [ + * { + * "path": "category", + * "type": "text", + * "name": "categoryName" + * } + * ], + * "name": { + * "value": "Team" + * }, + * "key": "team-field" + * } + */ + ConnectModule: Record; + /** + * @example { + * "jiraEntityProperties": [ + * { + * "keyConfigurations": [ + * { + * "extractions": [ + * { + * "objectName": "extension", + * "type": "text", + * "alias": "attachmentExtension" + * } + * ], + * "propertyKey": "attachment" + * } + * ], + * "entityType": "issue", + * "name": { + * "value": "Attachment Index Document" + * }, + * "key": "dynamic-attachment-entity-property" + * } + * ], + * "jiraIssueFields": [ + * { + * "description": { + * "value": "A dynamically added single-select field" + * }, + * "type": "single_select", + * "extractions": [ + * { + * "path": "category", + * "type": "text", + * "name": "categoryName" + * } + * ], + * "name": { + * "value": "Dynamic single select" + * }, + * "key": "dynamic-select-field" + * } + * ] + * } + */ + ConnectModules: { + /** + * @description A list of app modules in the same format as the `modules` property in the + * [app descriptor](https://developer.atlassian.com/cloud/jira/platform/app-descriptor/). + */ + modules: components["schemas"]["ConnectModule"][]; + }; + /** @description A workflow transition rule. */ + ConnectWorkflowTransitionRule: { + configuration: components["schemas"]["RuleConfiguration"]; + /** + * @description The ID of the transition rule. + * @example 123 + */ + id: string; + /** + * @description The key of the rule, as defined in the Connect app descriptor. + * @example WorkflowKey + */ + key: string; + transition?: components["schemas"]["WorkflowTransition"]; + }; + /** @description The list of features on a project. */ + ContainerForProjectFeatures: { + /** @description The project features. */ + features?: components["schemas"]["ProjectFeature"][]; + }; + /** @description Container for a list of registered webhooks. Webhook details are returned in the same order as the request. */ + ContainerForRegisteredWebhooks: { + /** @description A list of registered webhooks. */ + webhookRegistrationResult?: components["schemas"]["RegisteredWebhook"][]; + }; + /** @description Container for a list of webhook IDs. */ + ContainerForWebhookIDs: { + /** @description A list of webhook IDs. */ + webhookIds: number[]; + }; + /** @description A container for a list of workflow schemes together with the projects they are associated with. */ + ContainerOfWorkflowSchemeAssociations: { + /** @description A list of workflow schemes together with projects they are associated with. */ + values: components["schemas"]["WorkflowSchemeAssociations"][]; + }; + /** @description A context. */ + Context: { + /** + * Format: int64 + * @description The ID of the context. + */ + id?: number; + /** @description The name of the context. */ + name?: string; + /** @description The scope of the context. */ + scope?: components["schemas"]["Scope"]; + }; + /** @description The project and issue type mapping with a matching custom field context. */ + ContextForProjectAndIssueType: { + /** @description The ID of the custom field context. */ + contextId: string; + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The ID of the project. */ + projectId: string; + }; + /** @description Details of the contextual configuration for a custom field. */ + ContextualConfiguration: { + /** @description The field configuration. */ + configuration?: unknown; + /** @description The ID of the field context the configuration is associated with. */ + fieldContextId: string; + /** @description The ID of the configuration. */ + id: string; + /** @description The field value schema. */ + schema?: unknown; + }; + /** @description The converted JQL queries. */ + ConvertedJQLQueries: { + /** @description List of queries containing user information that could not be mapped to an existing user */ + queriesWithUnknownUsers?: components["schemas"]["JQLQueryWithUnknownUsers"][]; + /** @description The list of converted query strings with account IDs in place of user identifiers. */ + queryStrings?: string[]; + }; + /** @description The details of a created custom field context. */ + CreateCustomFieldContext: { + /** @description The description of the context. */ + description?: string; + /** @description The ID of the context. */ + id?: string; + /** @description The list of issue types IDs for the context. If the list is empty, the context refers to all issue types. */ + issueTypeIds?: string[]; + /** @description The name of the context. */ + name: string; + /** @description The list of project IDs associated with the context. If the list is empty, the context is global. */ + projectIds?: string[]; + }; + /** @description Issue security scheme and it's details */ + CreateIssueSecuritySchemeDetails: { + /** @description The description of the issue security scheme. */ + description?: string; + /** @description The list of scheme levels which should be added to the security scheme. */ + levels?: components["schemas"]["SecuritySchemeLevelBean"][]; + /** @description The name of the issue security scheme. Must be unique (case-insensitive). */ + name: string; + [key: string]: unknown; + }; + /** @description Details of an notification scheme. */ + CreateNotificationSchemeDetails: { + /** @description The description of the notification scheme. */ + description?: string; + /** @description The name of the notification scheme. Must be unique (case-insensitive). */ + name: string; + /** @description The list of notifications which should be added to the notification scheme. */ + notificationSchemeEvents?: components["schemas"]["NotificationSchemeEventDetails"][]; + [key: string]: unknown; + }; + /** @description Details of an issue priority. */ + CreatePriorityDetails: { + /** @description The description of the priority. */ + description?: string; + /** + * @description The URL of an icon for the priority. Accepted protocols are HTTP and HTTPS. Built in icons can also be used. + * @enum {string} + */ + iconUrl?: + | "/images/icons/priorities/blocker.png" + | "/images/icons/priorities/critical.png" + | "/images/icons/priorities/high.png" + | "/images/icons/priorities/highest.png" + | "/images/icons/priorities/low.png" + | "/images/icons/priorities/lowest.png" + | "/images/icons/priorities/major.png" + | "/images/icons/priorities/medium.png" + | "/images/icons/priorities/minor.png" + | "/images/icons/priorities/trivial.png"; + /** @description The name of the priority. Must be unique. */ + name: string; + /** @description The status color of the priority in 3-digit or 6-digit hexadecimal format. */ + statusColor: string; + [key: string]: unknown; + }; + /** @description Details about the project. */ + CreateProjectDetails: { + /** + * @description The default assignee when creating issues for this project. + * @enum {string} + */ + assigneeType?: "PROJECT_LEAD" | "UNASSIGNED"; + /** + * Format: int64 + * @description An integer value for the project's avatar. + */ + avatarId?: number; + /** + * Format: int64 + * @description The ID of the project's category. A complete list of category IDs is found using the [Get all project categories](#api-rest-api-3-projectCategory-get) operation. + */ + categoryId?: number; + /** @description A brief description of the project. */ + description?: string; + /** + * Format: int64 + * @description The ID of the field configuration scheme for the project. Use the [Get all field configuration schemes](#api-rest-api-3-fieldconfigurationscheme-get) operation to get a list of field configuration scheme IDs. If you specify the field configuration scheme you cannot specify the project template key. + */ + fieldConfigurationScheme?: number; + /** + * Format: int64 + * @description The ID of the issue security scheme for the project, which enables you to control who can and cannot view issues. Use the [Get issue security schemes](#api-rest-api-3-issuesecurityschemes-get) resource to get all issue security scheme IDs. + */ + issueSecurityScheme?: number; + /** + * Format: int64 + * @description The ID of the issue type scheme for the project. Use the [Get all issue type schemes](#api-rest-api-3-issuetypescheme-get) operation to get a list of issue type scheme IDs. If you specify the issue type scheme you cannot specify the project template key. + */ + issueTypeScheme?: number; + /** + * Format: int64 + * @description The ID of the issue type screen scheme for the project. Use the [Get all issue type screen schemes](#api-rest-api-3-issuetypescreenscheme-get) operation to get a list of issue type screen scheme IDs. If you specify the issue type screen scheme you cannot specify the project template key. + */ + issueTypeScreenScheme?: number; + /** @description Project keys must be unique and start with an uppercase letter followed by one or more uppercase alphanumeric characters. The maximum length is 10 characters. */ + key: string; + /** @description This parameter is deprecated because of privacy changes. Use `leadAccountId` instead. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. The user name of the project lead. Either `lead` or `leadAccountId` must be set when creating a project. Cannot be provided with `leadAccountId`. */ + lead?: string; + /** @description The account ID of the project lead. Either `lead` or `leadAccountId` must be set when creating a project. Cannot be provided with `lead`. */ + leadAccountId?: string; + /** @description The name of the project. */ + name: string; + /** + * Format: int64 + * @description The ID of the notification scheme for the project. Use the [Get notification schemes](#api-rest-api-3-notificationscheme-get) resource to get a list of notification scheme IDs. + */ + notificationScheme?: number; + /** + * Format: int64 + * @description The ID of the permission scheme for the project. Use the [Get all permission schemes](#api-rest-api-3-permissionscheme-get) resource to see a list of all permission scheme IDs. + */ + permissionScheme?: number; + /** + * @description A predefined configuration for a project. The type of the `projectTemplateKey` must match with the type of the `projectTypeKey`. + * @enum {string} + */ + projectTemplateKey?: + | "com.pyxis.greenhopper.jira:gh-simplified-agility-kanban" + | "com.pyxis.greenhopper.jira:gh-simplified-agility-scrum" + | "com.pyxis.greenhopper.jira:gh-simplified-basic" + | "com.pyxis.greenhopper.jira:gh-simplified-kanban-classic" + | "com.pyxis.greenhopper.jira:gh-simplified-scrum-classic" + | "com.pyxis.greenhopper.jira:gh-cross-team-template" + | "com.pyxis.greenhopper.jira:gh-cross-team-planning-template" + | "com.atlassian.servicedesk:simplified-it-service-management" + | "com.atlassian.servicedesk:simplified-general-service-desk" + | "com.atlassian.servicedesk:simplified-general-service-desk-it" + | "com.atlassian.servicedesk:simplified-general-service-desk-business" + | "com.atlassian.servicedesk:simplified-internal-service-desk" + | "com.atlassian.servicedesk:simplified-external-service-desk" + | "com.atlassian.servicedesk:simplified-hr-service-desk" + | "com.atlassian.servicedesk:simplified-facilities-service-desk" + | "com.atlassian.servicedesk:simplified-legal-service-desk" + | "com.atlassian.servicedesk:simplified-marketing-service-desk" + | "com.atlassian.servicedesk:simplified-finance-service-desk" + | "com.atlassian.servicedesk:simplified-analytics-service-desk" + | "com.atlassian.servicedesk:simplified-design-service-desk" + | "com.atlassian.servicedesk:simplified-sales-service-desk" + | "com.atlassian.servicedesk:simplified-halp-service-desk" + | "com.atlassian.servicedesk:simplified-blank-project-it" + | "com.atlassian.servicedesk:simplified-blank-project-business" + | "com.atlassian.servicedesk:next-gen-it-service-desk" + | "com.atlassian.servicedesk:next-gen-hr-service-desk" + | "com.atlassian.servicedesk:next-gen-legal-service-desk" + | "com.atlassian.servicedesk:next-gen-marketing-service-desk" + | "com.atlassian.servicedesk:next-gen-facilities-service-desk" + | "com.atlassian.servicedesk:next-gen-general-service-desk" + | "com.atlassian.servicedesk:next-gen-general-it-service-desk" + | "com.atlassian.servicedesk:next-gen-general-business-service-desk" + | "com.atlassian.servicedesk:next-gen-analytics-service-desk" + | "com.atlassian.servicedesk:next-gen-finance-service-desk" + | "com.atlassian.servicedesk:next-gen-design-service-desk" + | "com.atlassian.servicedesk:next-gen-sales-service-desk" + | "com.atlassian.jira-core-project-templates:jira-core-simplified-content-management" + | "com.atlassian.jira-core-project-templates:jira-core-simplified-document-approval" + | "com.atlassian.jira-core-project-templates:jira-core-simplified-lead-tracking" + | "com.atlassian.jira-core-project-templates:jira-core-simplified-process-control" + | "com.atlassian.jira-core-project-templates:jira-core-simplified-procurement" + | "com.atlassian.jira-core-project-templates:jira-core-simplified-project-management" + | "com.atlassian.jira-core-project-templates:jira-core-simplified-recruitment" + | "com.atlassian.jira-core-project-templates:jira-core-simplified-task-"; + /** + * @description The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes), which defines the application-specific feature set. If you don't specify the project template you have to specify the project type. + * @enum {string} + */ + projectTypeKey?: "software" | "service_desk" | "business"; + /** @description A link to information about this project, such as project documentation */ + url?: string; + /** + * Format: int64 + * @description The ID of the workflow scheme for the project. Use the [Get all workflow schemes](#api-rest-api-3-workflowscheme-get) operation to get a list of workflow scheme IDs. If you specify the workflow scheme you cannot specify the project template key. + */ + workflowScheme?: number; + }; + /** @description Details of an issue resolution. */ + CreateResolutionDetails: { + /** @description The description of the resolution. */ + description?: string; + /** @description The name of the resolution. Must be unique (case-insensitive). */ + name: string; + [key: string]: unknown; + }; + /** @description The details of a UI modification. */ + CreateUiModificationDetails: { + /** @description List of contexts of the UI modification. The maximum number of contexts is 1000. */ + contexts?: components["schemas"]["UiModificationContextDetails"][]; + /** @description The data of the UI modification. The maximum size of the data is 50000 characters. */ + data?: string; + /** @description The description of the UI modification. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the UI modification. The maximum length is 255 characters. */ + name: string; + }; + CreateUpdateRoleRequestBean: { + /** @description A description of the project role. Required when fully updating a project role. Optional when creating or partially updating a project role. */ + description?: string; + /** @description The name of the project role. Must be unique. Cannot begin or end with whitespace. The maximum length is 255 characters. Required when creating a project role. Optional when partially updating a project role. */ + name?: string; + }; + /** @description A workflow transition condition. */ + CreateWorkflowCondition: { + /** @description The list of workflow conditions. */ + conditions?: components["schemas"]["CreateWorkflowCondition"][]; + /** @description EXPERIMENTAL. The configuration of the transition rule. */ + configuration?: { + [key: string]: unknown; + }; + /** + * @description The compound condition operator. + * @enum {string} + */ + operator?: "AND" | "OR"; + /** @description The type of the transition rule. */ + type?: string; + }; + /** @description The details of a workflow. */ + CreateWorkflowDetails: { + /** @description The description of the workflow. The maximum length is 1000 characters. */ + description?: string; + /** @description The name of the workflow. The name must be unique. The maximum length is 255 characters. Characters can be separated by a whitespace but the name cannot start or end with a whitespace. */ + name: string; + /** @description The statuses of the workflow. Any status that does not include a transition is added to the workflow without a transition. */ + statuses: components["schemas"]["CreateWorkflowStatusDetails"][]; + /** + * @description The transitions of the workflow. For the request to be valid, these transitions must: + * + * * include one *initial* transition. + * * not use the same name for a *global* and *directed* transition. + * * have a unique name for each *global* transition. + * * have a unique 'to' status for each *global* transition. + * * have unique names for each transition from a status. + * * not have a 'from' status on *initial* and *global* transitions. + * * have a 'from' status on *directed* transitions. + * + * All the transition statuses must be included in `statuses`. + */ + transitions: components["schemas"]["CreateWorkflowTransitionDetails"][]; + }; + /** @description The details of a transition status. */ + CreateWorkflowStatusDetails: { + /** @description The ID of the status. */ + id: string; + /** @description The properties of the status. */ + properties?: { + [key: string]: string; + }; + }; + /** @description The details of a workflow transition. */ + CreateWorkflowTransitionDetails: { + /** @description The description of the transition. The maximum length is 1000 characters. */ + description?: string; + /** @description The statuses the transition can start from. */ + from?: string[]; + /** @description The name of the transition. The maximum length is 60 characters. */ + name: string; + /** @description The properties of the transition. */ + properties?: { + [key: string]: string; + }; + /** @description The rules of the transition. */ + rules?: components["schemas"]["CreateWorkflowTransitionRulesDetails"]; + /** @description The screen of the transition. */ + screen?: components["schemas"]["CreateWorkflowTransitionScreenDetails"]; + /** @description The status the transition goes to. */ + to: string; + /** + * @description The type of the transition. + * @enum {string} + */ + type: "global" | "initial" | "directed"; + }; + /** @description A workflow transition rule. */ + CreateWorkflowTransitionRule: { + /** @description EXPERIMENTAL. The configuration of the transition rule. */ + configuration?: { + [key: string]: unknown; + }; + /** @description The type of the transition rule. */ + type: string; + }; + /** @description The details of a workflow transition rules. */ + CreateWorkflowTransitionRulesDetails: { + /** @description The workflow conditions. */ + conditions?: components["schemas"]["CreateWorkflowCondition"]; + /** + * @description The workflow post functions. + * + * **Note:** The default post functions are always added to the *initial* transition, as in: + * + * "postFunctions": [ + * { + * "type": "IssueCreateFunction" + * }, + * { + * "type": "IssueReindexFunction" + * }, + * { + * "type": "FireIssueEventFunction", + * "configuration": { + * "event": { + * "id": "1", + * "name": "issue_created" + * } + * } + * } + * ] + * + * **Note:** The default post functions are always added to the *global* and *directed* transitions, as in: + * + * "postFunctions": [ + * { + * "type": "UpdateIssueStatusFunction" + * }, + * { + * "type": "CreateCommentFunction" + * }, + * { + * "type": "GenerateChangeHistoryFunction" + * }, + * { + * "type": "IssueReindexFunction" + * }, + * { + * "type": "FireIssueEventFunction", + * "configuration": { + * "event": { + * "id": "13", + * "name": "issue_generic" + * } + * } + * } + * ] + */ + postFunctions?: components["schemas"]["CreateWorkflowTransitionRule"][]; + /** + * @description The workflow validators. + * + * **Note:** The default permission validator is always added to the *initial* transition, as in: + * + * "validators": [ + * { + * "type": "PermissionValidator", + * "configuration": { + * "permissionKey": "CREATE_ISSUES" + * } + * } + * ] + */ + validators?: components["schemas"]["CreateWorkflowTransitionRule"][]; + }; + /** @description The details of a transition screen. */ + CreateWorkflowTransitionScreenDetails: { + /** @description The ID of the screen. */ + id: string; + }; + /** @description Details about a created issue or subtask. */ + CreatedIssue: { + /** @description The ID of the created issue or subtask. */ + id?: string; + /** @description The key of the created issue or subtask. */ + key?: string; + /** @description The URL of the created issue or subtask. */ + self?: string; + /** @description The response code and messages related to any requested transition. */ + transition?: components["schemas"]["NestedResponse"]; + /** @description The response code and messages related to any requested watchers. */ + watchers?: components["schemas"]["NestedResponse"]; + }; + /** @description Details about the issues created and the errors for requests that failed. */ + CreatedIssues: { + /** @description Error details for failed issue creation requests. */ + errors?: readonly components["schemas"]["BulkOperationErrorResult"][]; + /** @description Details of the issues created. */ + issues?: readonly components["schemas"]["CreatedIssue"][]; + }; + CustomContextVariable: { + /** @description Type of custom context variable. */ + type: string; + } & ( + | components["schemas"]["UserContextVariable"] + | components["schemas"]["IssueContextVariable"] + | components["schemas"]["JsonContextVariable"] + ); + /** @description Details of configurations for a custom field. */ + CustomFieldConfigurations: { + /** @description The list of custom field configuration details. */ + configurations: components["schemas"]["ContextualConfiguration"][]; + }; + /** @description The details of a custom field context. */ + CustomFieldContext: { + /** @description The description of the context. */ + description: string; + /** @description The ID of the context. */ + id: string; + /** @description Whether the context apply to all issue types. */ + isAnyIssueType: boolean; + /** @description Whether the context is global. */ + isGlobalContext: boolean; + /** @description The name of the context. */ + name: string; + }; + CustomFieldContextDefaultValue: + | components["schemas"]["CustomFieldContextDefaultValueCascadingOption"] + | components["schemas"]["CustomFieldContextDefaultValueMultipleOption"] + | components["schemas"]["CustomFieldContextDefaultValueSingleOption"] + | components["schemas"]["CustomFieldContextSingleUserPickerDefaults"] + | components["schemas"]["CustomFieldContextDefaultValueMultiUserPicker"] + | components["schemas"]["CustomFieldContextDefaultValueSingleGroupPicker"] + | components["schemas"]["CustomFieldContextDefaultValueMultipleGroupPicker"] + | components["schemas"]["CustomFieldContextDefaultValueDate"] + | components["schemas"]["CustomFieldContextDefaultValueDateTime"] + | components["schemas"]["CustomFieldContextDefaultValueURL"] + | components["schemas"]["CustomFieldContextDefaultValueProject"] + | components["schemas"]["CustomFieldContextDefaultValueFloat"] + | components["schemas"]["CustomFieldContextDefaultValueLabels"] + | components["schemas"]["CustomFieldContextDefaultValueTextField"] + | components["schemas"]["CustomFieldContextDefaultValueTextArea"] + | components["schemas"]["CustomFieldContextDefaultValueReadOnly"] + | components["schemas"]["CustomFieldContextDefaultValueSingleVersionPicker"] + | components["schemas"]["CustomFieldContextDefaultValueMultipleVersionPicker"] + | components["schemas"]["CustomFieldContextDefaultValueForgeStringField"] + | components["schemas"]["CustomFieldContextDefaultValueForgeMultiStringField"] + | components["schemas"]["CustomFieldContextDefaultValueForgeObjectField"] + | components["schemas"]["CustomFieldContextDefaultValueForgeDateTimeField"] + | components["schemas"]["CustomFieldContextDefaultValueForgeGroupField"] + | components["schemas"]["CustomFieldContextDefaultValueForgeMultiGroupField"] + | components["schemas"]["CustomFieldContextDefaultValueForgeNumberField"] + | components["schemas"]["CustomFieldContextDefaultValueForgeUserField"] + | components["schemas"]["CustomFieldContextDefaultValueForgeMultiUserField"]; + /** @description The default value for a cascading select custom field. */ + CustomFieldContextDefaultValueCascadingOption: { + /** @description The ID of the default cascading option. */ + cascadingOptionId?: string; + /** @description The ID of the context. */ + contextId: string; + /** @description The ID of the default option. */ + optionId: string; + type: string; + }; + /** @description The default value for a Date custom field. */ + CustomFieldContextDefaultValueDate: { + /** @description The default date in ISO format. Ignored if `useCurrent` is true. */ + date?: string; + type: string; + /** + * @description Whether to use the current date. + * @default false + */ + useCurrent?: boolean; + }; + /** @description The default value for a date time custom field. */ + CustomFieldContextDefaultValueDateTime: { + /** @description The default date-time in ISO format. Ignored if `useCurrent` is true. */ + dateTime?: string; + type: string; + /** + * @description Whether to use the current date. + * @default false + */ + useCurrent?: boolean; + }; + /** @description Default value for a float (number) custom field. */ + CustomFieldContextDefaultValueFloat: { + /** + * Format: double + * @description The default floating-point number. + */ + number: number; + type: string; + }; + /** @description The default value for a Forge date time custom field. */ + CustomFieldContextDefaultValueForgeDateTimeField: { + /** @description The ID of the context. */ + contextId: string; + /** @description The default date-time in ISO format. Ignored if `useCurrent` is true. */ + dateTime?: string; + type: string; + /** + * @description Whether to use the current date. + * @default false + */ + useCurrent?: boolean; + }; + /** @description The default value for a Forge group custom field. */ + CustomFieldContextDefaultValueForgeGroupField: { + /** @description The ID of the context. */ + contextId: string; + /** @description The ID of the the default group. */ + groupId: string; + type: string; + }; + /** @description The default value for a Forge collection of groups custom field. */ + CustomFieldContextDefaultValueForgeMultiGroupField: { + /** @description The ID of the context. */ + contextId: string; + /** @description The IDs of the default groups. */ + groupIds: string[]; + type: string; + }; + /** @description The default text for a Forge collection of strings custom field. */ + CustomFieldContextDefaultValueForgeMultiStringField: { + type: string; + /** @description List of string values. The maximum length for a value is 254 characters. */ + values?: string[]; + }; + /** @description Defaults for a Forge collection of users custom field. */ + CustomFieldContextDefaultValueForgeMultiUserField: { + /** @description The IDs of the default users. */ + accountIds: string[]; + /** @description The ID of the context. */ + contextId: string; + type: string; + }; + /** @description Default value for a Forge number custom field. */ + CustomFieldContextDefaultValueForgeNumberField: { + /** @description The ID of the context. */ + contextId: string; + /** + * Format: double + * @description The default floating-point number. + */ + number: number; + type: string; + }; + /** @description The default value for a Forge object custom field. */ + CustomFieldContextDefaultValueForgeObjectField: { + /** @description The default JSON object. */ + object?: Record; + type: string; + }; + /** @description The default text for a Forge string custom field. */ + CustomFieldContextDefaultValueForgeStringField: { + /** @description The ID of the context. */ + contextId: string; + /** @description The default text. The maximum length is 254 characters. */ + text?: string; + type: string; + }; + /** @description Defaults for a Forge user custom field. */ + CustomFieldContextDefaultValueForgeUserField: { + /** @description The ID of the default user. */ + accountId: string; + /** @description The ID of the context. */ + contextId: string; + type: string; + userFilter: components["schemas"]["UserFilter"]; + }; + /** @description Default value for a labels custom field. */ + CustomFieldContextDefaultValueLabels: { + /** @description The default labels value. */ + labels: string[]; + type: string; + }; + /** @description The default value for a User Picker (multiple) custom field. */ + CustomFieldContextDefaultValueMultiUserPicker: { + /** @description The IDs of the default users. */ + accountIds: string[]; + /** @description The ID of the context. */ + contextId: string; + type: string; + }; + /** @description The default value for a multiple group picker custom field. */ + CustomFieldContextDefaultValueMultipleGroupPicker: { + /** @description The ID of the context. */ + contextId: string; + /** @description The IDs of the default groups. */ + groupIds: string[]; + type: string; + }; + /** @description The default value for a multi-select custom field. */ + CustomFieldContextDefaultValueMultipleOption: { + /** @description The ID of the context. */ + contextId: string; + /** @description The list of IDs of the default options. */ + optionIds: string[]; + type: string; + }; + /** @description The default value for a multiple version picker custom field. */ + CustomFieldContextDefaultValueMultipleVersionPicker: { + type: string; + /** @description The IDs of the default versions. */ + versionIds: string[]; + /** @description The order the pickable versions are displayed in. If not provided, the released-first order is used. Available version orders are `"releasedFirst"` and `"unreleasedFirst"`. */ + versionOrder?: string; + }; + /** @description The default value for a project custom field. */ + CustomFieldContextDefaultValueProject: { + /** @description The ID of the context. */ + contextId: string; + /** @description The ID of the default project. */ + projectId: string; + type: string; + }; + /** @description The default text for a read only custom field. */ + CustomFieldContextDefaultValueReadOnly: { + /** @description The default text. The maximum length is 255 characters. */ + text?: string; + type: string; + }; + /** @description The default value for a group picker custom field. */ + CustomFieldContextDefaultValueSingleGroupPicker: { + /** @description The ID of the context. */ + contextId: string; + /** @description The ID of the the default group. */ + groupId: string; + type: string; + }; + /** @description The default value for a single select custom field. */ + CustomFieldContextDefaultValueSingleOption: { + /** @description The ID of the context. */ + contextId: string; + /** @description The ID of the default option. */ + optionId: string; + type: string; + }; + /** @description The default value for a version picker custom field. */ + CustomFieldContextDefaultValueSingleVersionPicker: { + type: string; + /** @description The ID of the default version. */ + versionId: string; + /** @description The order the pickable versions are displayed in. If not provided, the released-first order is used. Available version orders are `"releasedFirst"` and `"unreleasedFirst"`. */ + versionOrder?: string; + }; + /** @description The default text for a text area custom field. */ + CustomFieldContextDefaultValueTextArea: { + /** @description The default text. The maximum length is 32767 characters. */ + text?: string; + type: string; + }; + /** @description The default text for a text custom field. */ + CustomFieldContextDefaultValueTextField: { + /** @description The default text. The maximum length is 254 characters. */ + text?: string; + type: string; + }; + /** @description The default value for a URL custom field. */ + CustomFieldContextDefaultValueURL: { + /** @description The ID of the context. */ + contextId: string; + type: string; + /** @description The default URL. */ + url: string; + }; + /** @description Default values to update. */ + CustomFieldContextDefaultValueUpdate: { + defaultValues?: components["schemas"]["CustomFieldContextDefaultValue"][]; + }; + /** @description Details of the custom field options for a context. */ + CustomFieldContextOption: { + /** @description Whether the option is disabled. */ + disabled: boolean; + /** @description The ID of the custom field option. */ + id: string; + /** @description For cascading options, the ID of the custom field option containing the cascading option. */ + optionId?: string; + /** @description The value of the custom field option. */ + value: string; + }; + /** @description Details of a context to project association. */ + CustomFieldContextProjectMapping: { + /** @description The ID of the context. */ + contextId: string; + /** @description Whether context is global. */ + isGlobalContext?: boolean; + /** @description The ID of the project. */ + projectId?: string; + }; + /** @description Defaults for a User Picker (single) custom field. */ + CustomFieldContextSingleUserPickerDefaults: { + /** @description The ID of the default user. */ + accountId: string; + /** @description The ID of the context. */ + contextId: string; + type: string; + userFilter: components["schemas"]["UserFilter"]; + }; + /** @description Details of a custom field context. */ + CustomFieldContextUpdateDetails: { + /** @description The description of the custom field context. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the custom field context. The name must be unique. The maximum length is 255 characters. */ + name?: string; + }; + /** @description A list of custom field options for a context. */ + CustomFieldCreatedContextOptionsList: { + /** @description The created custom field options. */ + options?: components["schemas"]["CustomFieldContextOption"][]; + }; + CustomFieldDefinitionJsonBean: { + /** @description The description of the custom field, which is displayed in Jira. */ + description?: string; + /** @description The name of the custom field, which is displayed in Jira. This is not the unique identifier. */ + name: string; + /** + * @description The searcher defines the way the field is searched in Jira. For example, *com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher*. + * The search UI (basic search and JQL search) will display different operations and values for the field, based on the field searcher. You must specify a searcher that is valid for the field type, as listed below (abbreviated values shown): + * + * * `cascadingselect`: `cascadingselectsearcher` + * * `datepicker`: `daterange` + * * `datetime`: `datetimerange` + * * `float`: `exactnumber` or `numberrange` + * * `grouppicker`: `grouppickersearcher` + * * `importid`: `exactnumber` or `numberrange` + * * `labels`: `labelsearcher` + * * `multicheckboxes`: `multiselectsearcher` + * * `multigrouppicker`: `multiselectsearcher` + * * `multiselect`: `multiselectsearcher` + * * `multiuserpicker`: `userpickergroupsearcher` + * * `multiversion`: `versionsearcher` + * * `project`: `projectsearcher` + * * `radiobuttons`: `multiselectsearcher` + * * `readonlyfield`: `textsearcher` + * * `select`: `multiselectsearcher` + * * `textarea`: `textsearcher` + * * `textfield`: `textsearcher` + * * `url`: `exacttextsearcher` + * * `userpicker`: `userpickergroupsearcher` + * * `version`: `versionsearcher` + * + * If no searcher is provided, the field isn't searchable. However, [Forge custom fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/#jira-custom-field-type--beta-) have a searcher set automatically, so are always searchable. + * @enum {string} + */ + searcherKey?: + | "com.atlassian.jira.plugin.system.customfieldtypes:cascadingselectsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:daterange" + | "com.atlassian.jira.plugin.system.customfieldtypes:datetimerange" + | "com.atlassian.jira.plugin.system.customfieldtypes:exactnumber" + | "com.atlassian.jira.plugin.system.customfieldtypes:exacttextsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:labelsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:multiselectsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:numberrange" + | "com.atlassian.jira.plugin.system.customfieldtypes:projectsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:textsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:userpickergroupsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:versionsearcher"; + /** + * @description The type of the custom field. These built-in custom field types are available: + * + * * `cascadingselect`: Enables values to be selected from two levels of select lists (value: `com.atlassian.jira.plugin.system.customfieldtypes:cascadingselect`) + * * `datepicker`: Stores a date using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:datepicker`) + * * `datetime`: Stores a date with a time component (value: `com.atlassian.jira.plugin.system.customfieldtypes:datetime`) + * * `float`: Stores and validates a numeric (floating point) input (value: `com.atlassian.jira.plugin.system.customfieldtypes:float`) + * * `grouppicker`: Stores a user group using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:grouppicker`) + * * `importid`: A read-only field that stores the ID the issue had in the system it was imported from (value: `com.atlassian.jira.plugin.system.customfieldtypes:importid`) + * * `labels`: Stores labels (value: `com.atlassian.jira.plugin.system.customfieldtypes:labels`) + * * `multicheckboxes`: Stores multiple values using checkboxes (value: ``) + * * `multigrouppicker`: Stores multiple user groups using a picker control (value: ``) + * * `multiselect`: Stores multiple values using a select list (value: `com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes`) + * * `multiuserpicker`: Stores multiple users using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:multigrouppicker`) + * * `multiversion`: Stores multiple versions from the versions available in a project using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:multiversion`) + * * `project`: Stores a project from a list of projects that the user is permitted to view (value: `com.atlassian.jira.plugin.system.customfieldtypes:project`) + * * `radiobuttons`: Stores a value using radio buttons (value: `com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons`) + * * `readonlyfield`: Stores a read-only text value, which can only be populated via the API (value: `com.atlassian.jira.plugin.system.customfieldtypes:readonlyfield`) + * * `select`: Stores a value from a configurable list of options (value: `com.atlassian.jira.plugin.system.customfieldtypes:select`) + * * `textarea`: Stores a long text string using a multiline text area (value: `com.atlassian.jira.plugin.system.customfieldtypes:textarea`) + * * `textfield`: Stores a text string using a single-line text box (value: `com.atlassian.jira.plugin.system.customfieldtypes:textfield`) + * * `url`: Stores a URL (value: `com.atlassian.jira.plugin.system.customfieldtypes:url`) + * * `userpicker`: Stores a user using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:userpicker`) + * * `version`: Stores a version using a picker control (value: `com.atlassian.jira.plugin.system.customfieldtypes:version`) + * + * To create a field based on a [Forge custom field type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/#jira-custom-field-type--beta-), use the ID of the Forge custom field type as the value. For example, `ari:cloud:ecosystem::extension/e62f20a2-4b61-4dbe-bfb9-9a88b5e3ac84/548c5df1-24aa-4f7c-bbbb-3038d947cb05/static/my-cf-type-key`. + */ + type: string; + }; + /** @description Details of a custom option for a field. */ + CustomFieldOption: { + /** + * Format: uri + * @description The URL of these custom field option details. + */ + self?: string; + /** @description The value of the custom field option. */ + value?: string; + }; + /** @description Details of a custom field option to create. */ + CustomFieldOptionCreate: { + /** @description Whether the option is disabled. */ + disabled?: boolean; + /** @description For cascading options, the ID of the custom field object containing the cascading option. */ + optionId?: string; + /** @description The value of the custom field option. */ + value: string; + }; + /** @description Details of a custom field option for a context. */ + CustomFieldOptionUpdate: { + /** @description Whether the option is disabled. */ + disabled?: boolean; + /** @description The ID of the custom field option. */ + id: string; + /** @description The value of the custom field option. */ + value?: string; + }; + /** @description Details about the replacement for a deleted version. */ + CustomFieldReplacement: { + /** + * Format: int64 + * @description The ID of the custom field in which to replace the version number. + */ + customFieldId?: number; + /** + * Format: int64 + * @description The version number to use as a replacement for the deleted version. + */ + moveTo?: number; + }; + /** @description A list of custom field options for a context. */ + CustomFieldUpdatedContextOptionsList: { + /** @description The updated custom field options. */ + options?: components["schemas"]["CustomFieldOptionUpdate"][]; + }; + /** @description A list of issue IDs and the value to update a custom field to. */ + CustomFieldValueUpdate: { + /** @description The list of issue IDs. */ + issueIds: number[]; + /** + * @description The value for the custom field. The value must be compatible with the [custom field type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/#data-types) as follows: + * + * * `string` the value must be a string. + * * `number` the value must be a number. + * * `datetime` the value must be a string that represents a date in the ISO format or the simplified extended ISO format. For example, `"2023-01-18T12:00:00-03:00"` or `"2023-01-18T12:00:00.000Z"`. However, the milliseconds part is ignored. + * * `user` the value must be an object that contains the `accountId` field. + * * `group` the value must be an object that contains the group `name` or `groupId` field. Because group names can change, we recommend using `groupId`. + * + * A list of appropriate values must be provided if the field is of the `list` [collection type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/#collection-types). + */ + value: unknown; + }; + /** @description Details of updates for a custom field. */ + CustomFieldValueUpdateDetails: { + /** @description The list of custom field update details. */ + updates?: components["schemas"]["CustomFieldValueUpdate"][]; + }; + /** @description Details of a dashboard. */ + Dashboard: { + /** + * Format: int32 + * @description The automatic refresh interval for the dashboard in milliseconds. + */ + automaticRefreshMs?: number; + description?: string; + /** @description The details of any edit share permissions for the dashboard. */ + editPermissions?: readonly components["schemas"]["SharePermission"][]; + /** @description The ID of the dashboard. */ + id?: string; + /** @description Whether the dashboard is selected as a favorite by the user. */ + isFavourite?: boolean; + /** @description Whether the current user has permission to edit the dashboard. */ + isWritable?: boolean; + /** @description The name of the dashboard. */ + name?: string; + /** @description The owner of the dashboard. */ + owner?: components["schemas"]["UserBean"]; + /** + * Format: int64 + * @description The number of users who have this dashboard as a favorite. + */ + popularity?: number; + /** + * Format: int32 + * @description The rank of this dashboard. + */ + rank?: number; + /** + * Format: uri + * @description The URL of these dashboard details. + */ + self?: string; + /** @description The details of any view share permissions for the dashboard. */ + sharePermissions?: readonly components["schemas"]["SharePermission"][]; + /** @description Whether the current dashboard is system dashboard. */ + systemDashboard?: boolean; + /** @description The URL of the dashboard. */ + view?: string; + }; + /** @description Details of a dashboard. */ + DashboardDetails: { + /** @description The description of the dashboard. */ + description?: string; + /** @description The edit permissions for the dashboard. */ + editPermissions: components["schemas"]["SharePermission"][]; + /** @description The name of the dashboard. */ + name: string; + /** @description The share permissions for the dashboard. */ + sharePermissions: components["schemas"]["SharePermission"][]; + }; + /** @description Details of a gadget. */ + DashboardGadget: { + /** + * @description The color of the gadget. Should be one of `blue`, `red`, `yellow`, `green`, `cyan`, `purple`, `gray`, or `white`. + * @enum {string} + */ + color: "blue" | "red" | "yellow" | "green" | "cyan" | "purple" | "gray" | "white"; + /** + * Format: int64 + * @description The ID of the gadget instance. + */ + id: number; + /** @description The module key of the gadget type. */ + moduleKey?: string; + /** @description The position of the gadget. */ + position: components["schemas"]["DashboardGadgetPosition"]; + /** @description The title of the gadget. */ + title: string; + /** @description The URI of the gadget type. */ + uri?: string; + }; + /** @description Details of a gadget position. */ + DashboardGadgetPosition: { + /** Format: int32 */ + "The column position of the gadget.": number; + /** Format: int32 */ + "The row position of the gadget.": number; + }; + /** @description The list of gadgets on the dashboard. */ + DashboardGadgetResponse: { + /** @description The list of gadgets. */ + gadgets: readonly components["schemas"]["DashboardGadget"][]; + }; + /** @description Details of the settings for a dashboard gadget. */ + DashboardGadgetSettings: { + /** @description The color of the gadget. Should be one of `blue`, `red`, `yellow`, `green`, `cyan`, `purple`, `gray`, or `white`. */ + color?: string; + /** @description Whether to ignore the validation of module key and URI. For example, when a gadget is created that is a part of an application that isn't installed. */ + ignoreUriAndModuleKeyValidation?: boolean; + /** @description The module key of the gadget type. Can't be provided with `uri`. */ + moduleKey?: string; + /** @description The position of the gadget. When the gadget is placed into the position, other gadgets in the same column are moved down to accommodate it. */ + position?: components["schemas"]["DashboardGadgetPosition"]; + /** @description The title of the gadget. */ + title?: string; + /** @description The URI of the gadget type. Can't be provided with `moduleKey`. */ + uri?: string; + }; + /** @description The details of the gadget to update. */ + DashboardGadgetUpdateRequest: { + /** @description The color of the gadget. Should be one of `blue`, `red`, `yellow`, `green`, `cyan`, `purple`, `gray`, or `white`. */ + color?: string; + /** @description The position of the gadget. */ + position?: components["schemas"]["DashboardGadgetPosition"]; + /** @description The title of the gadget. */ + title?: string; + }; + /** @description List issues archived within a specified date range. */ + DateRangeFilterRequest: { + /** @description List issues archived after a specified date, passed in the YYYY-MM-DD format. */ + dateAfter: string; + /** @description List issues archived before a specified date provided in the YYYY-MM-DD format. */ + dateBefore: string; + }; + /** @description Details of scheme and new default level. */ + DefaultLevelValue: { + /** @description The ID of the issue security level to set as default for the specified scheme. Providing null will reset the default level. */ + defaultLevelId: string; + /** @description The ID of the issue security scheme to set default level for. */ + issueSecuritySchemeId: string; + [key: string]: unknown; + }; + /** @description Details of the scope of the default sharing for new filters and dashboards. */ + DefaultShareScope: { + /** + * @description The scope of the default sharing for new filters and dashboards: + * + * * `AUTHENTICATED` Shared with all logged-in users. + * * `GLOBAL` Shared with all logged-in users. This shows as `AUTHENTICATED` in the response. + * * `PRIVATE` Not shared with any users. + * @enum {string} + */ + scope: "GLOBAL" | "AUTHENTICATED" | "PRIVATE"; + }; + /** @description Details about the default workflow. */ + DefaultWorkflow: { + /** @description Whether a draft workflow scheme is created or updated when updating an active workflow scheme. The draft is updated with the new default workflow. Defaults to `false`. */ + updateDraftIfNeeded?: boolean; + /** @description The name of the workflow to set as the default workflow. */ + workflow: string; + }; + DeleteAndReplaceVersionBean: { + /** @description An array of custom field IDs (`customFieldId`) and version IDs (`moveTo`) to update when the fields contain the deleted version. */ + customFieldReplacementList?: components["schemas"]["CustomFieldReplacement"][]; + /** + * Format: int64 + * @description The ID of the version to update `affectedVersion` to when the field contains the deleted version. + */ + moveAffectedIssuesTo?: number; + /** + * Format: int64 + * @description The ID of the version to update `fixVersion` to when the field contains the deleted version. + */ + moveFixIssuesTo?: number; + }; + /** @description Details about a workflow. */ + DeprecatedWorkflow: { + default?: boolean; + /** @description The description of the workflow. */ + description?: string; + /** @description The datetime the workflow was last modified. */ + lastModifiedDate?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + lastModifiedUser?: string; + /** @description The account ID of the user that last modified the workflow. */ + lastModifiedUserAccountId?: string; + /** @description The name of the workflow. */ + name?: string; + /** @description The scope where this workflow applies */ + scope?: components["schemas"]["Scope"]; + /** + * Format: int32 + * @description The number of steps included in the workflow. + */ + steps?: number; + }; + DetailedErrorCollection: { + /** @description Map of objects representing additional details for an error */ + details?: { + [key: string]: unknown; + }; + /** @description The list of error messages produced by this operation. For example, "input parameter 'key' must be provided" */ + errorMessages?: string[]; + /** @description The list of errors by parameter returned by the operation. For example,"projectKey": "Project keys must start with an uppercase letter, followed by one or more uppercase alphanumeric characters." */ + errors?: { + [key: string]: string; + }; + }; + /** @description The current version details of this workflow scheme. */ + DocumentVersion: { + /** @description The version UUID. */ + id: string; + /** + * Format: int64 + * @description The version number. + */ + versionNumber: number; + }; + /** @description An entity property, for more information see [Entity properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/). */ + EntityProperty: { + /** @description The key of the property. Required on create and update. */ + key?: string; + /** @description The value of the property. Required on create and update. */ + value?: unknown; + }; + EntityPropertyDetails: { + /** + * @description The entity property ID. + * @example 123 + */ + entityId: number; + /** + * @description The entity property key. + * @example mykey + */ + key: string; + /** + * @description The new value of the entity property. + * @example newValue + */ + value: string; + }; + Error: { + /** Format: int64 */ + count?: number; + issueIdsOrKeys?: string[]; + message?: string; + }; + /** @description Error messages from an operation. */ + ErrorCollection: { + /** @description The list of error messages produced by this operation. For example, "input parameter 'key' must be provided" */ + errorMessages?: string[]; + /** @description The list of errors by parameter returned by the operation. For example,"projectKey": "Project keys must start with an uppercase letter, followed by one or more uppercase alphanumeric characters." */ + errors?: { + [key: string]: string; + }; + /** Format: int32 */ + status?: number; + }; + ErrorCollections: Record; + /** + * @example { + * "message": "The request is not from a Connect app." + * } + */ + ErrorMessage: { + /** @description The error message. */ + message: string; + }; + Errors: { + issueIsSubtask?: components["schemas"]["Error"]; + issuesInArchivedProjects?: components["schemas"]["Error"]; + issuesInUnlicensedProjects?: components["schemas"]["Error"]; + issuesNotFound?: components["schemas"]["Error"]; + }; + /** @description Details about a notification associated with an event. */ + EventNotification: { + /** @description The email address. */ + emailAddress?: string; + /** @description Expand options that include additional event notification details in the response. */ + expand?: string; + /** @description The custom user or group field. */ + field?: components["schemas"]["FieldDetails"]; + /** @description The specified group. */ + group?: components["schemas"]["GroupName"]; + /** + * Format: int64 + * @description The ID of the notification. + */ + id?: number; + /** + * @description Identifies the recipients of the notification. + * @enum {string} + */ + notificationType?: + | "CurrentAssignee" + | "Reporter" + | "CurrentUser" + | "ProjectLead" + | "ComponentLead" + | "User" + | "Group" + | "ProjectRole" + | "EmailAddress" + | "AllWatchers" + | "UserCustomField" + | "GroupCustomField"; + /** + * @description As a group's name can change, use of `recipient` is recommended. The identifier associated with the `notificationType` value that defines the receiver of the notification, where the receiver isn't implied by `notificationType` value. So, when `notificationType` is: + * + * * `User` The `parameter` is the user account ID. + * * `Group` The `parameter` is the group name. + * * `ProjectRole` The `parameter` is the project role ID. + * * `UserCustomField` The `parameter` is the ID of the custom field. + * * `GroupCustomField` The `parameter` is the ID of the custom field. + */ + parameter?: string; + /** @description The specified project role. */ + projectRole?: components["schemas"]["ProjectRole"]; + /** + * @description The identifier associated with the `notificationType` value that defines the receiver of the notification, where the receiver isn't implied by the `notificationType` value. So, when `notificationType` is: + * + * * `User`, `recipient` is the user account ID. + * * `Group`, `recipient` is the group ID. + * * `ProjectRole`, `recipient` is the project role ID. + * * `UserCustomField`, `recipient` is the ID of the custom field. + * * `GroupCustomField`, `recipient` is the ID of the custom field. + */ + recipient?: string; + /** @description The specified user. */ + user?: components["schemas"]["UserDetails"]; + }; + /** @description The response for status request for a running/completed export task. */ + ExportArchivedIssuesTaskProgressResponse: { + fileUrl?: string; + payload?: string; + /** Format: int64 */ + progress?: number; + status?: string; + /** Format: date-time */ + submittedTime?: string; + taskId?: string; + }; + /** @description Details about a failed webhook. */ + FailedWebhook: { + /** @description The webhook body. */ + body?: string; + /** + * Format: int64 + * @description The time the webhook was added to the list of failed webhooks (that is, the time of the last failed retry). + */ + failureTime: number; + /** @description The webhook ID, as sent in the `X-Atlassian-Webhook-Identifier` header with the webhook. */ + id: string; + /** @description The original webhook destination. */ + url: string; + }; + /** @description A page of failed webhooks. */ + FailedWebhooks: { + /** + * Format: int32 + * @description The maximum number of items on the page. If the list of values is shorter than this number, then there are no more pages. + */ + maxResults: number; + /** + * Format: uri + * @description The URL to the next page of results. Present only if the request returned at least one result.The next page may be empty at the time of receiving the response, but new failed webhooks may appear in time. You can save the URL to the next page and query for new results periodically (for example, every hour). + */ + next?: string; + /** @description The list of webhooks. */ + values: components["schemas"]["FailedWebhook"][]; + }; + /** @description Details of a field. */ + Field: { + /** + * Format: int64 + * @description Number of contexts where the field is used. + */ + contextsCount?: number; + /** @description The description of the field. */ + description?: string; + /** @description The ID of the field. */ + id: string; + /** @description Whether the field is locked. */ + isLocked?: boolean; + /** @description Whether the field is shown on screen or not. */ + isUnscreenable?: boolean; + /** @description The key of the field. */ + key?: string; + lastUsed?: components["schemas"]["FieldLastUsed"]; + /** @description The name of the field. */ + name: string; + /** + * Format: int64 + * @description Number of projects where the field is used. + */ + projectsCount?: number; + schema: components["schemas"]["JsonTypeBean"]; + /** + * Format: int64 + * @description Number of screens where the field is used. + */ + screensCount?: number; + /** @description The searcher key of the field. Returned for custom fields. */ + searcherKey?: string; + }; + /** @description A clause that asserts whether a field was changed. For example, `status CHANGED AFTER startOfMonth(-1M)`.See [CHANGED](https://confluence.atlassian.com/x/dgiiLQ#Advancedsearching-operatorsreference-CHANGEDCHANGED) for more information about the CHANGED operator. */ + FieldChangedClause: { + field: components["schemas"]["JqlQueryField"]; + /** + * @description The operator applied to the field. + * @enum {string} + */ + operator: "changed"; + /** @description The list of time predicates. */ + predicates: components["schemas"]["JqlQueryClauseTimePredicate"][]; + }; + /** @description Details of a field configuration. */ + FieldConfiguration: { + /** @description The description of the field configuration. */ + description: string; + /** + * Format: int64 + * @description The ID of the field configuration. + */ + id: number; + /** @description Whether the field configuration is the default. */ + isDefault?: boolean; + /** @description The name of the field configuration. */ + name: string; + }; + /** @description Details of a field configuration. */ + FieldConfigurationDetails: { + /** @description The description of the field configuration. */ + description?: string; + /** @description The name of the field configuration. Must be unique. */ + name: string; + }; + /** @description The field configuration for an issue type. */ + FieldConfigurationIssueTypeItem: { + /** @description The ID of the field configuration. */ + fieldConfigurationId: string; + /** @description The ID of the field configuration scheme. */ + fieldConfigurationSchemeId: string; + /** @description The ID of the issue type or *default*. When set to *default* this field configuration issue type item applies to all issue types without a field configuration. */ + issueTypeId: string; + }; + /** @description A field within a field configuration. */ + FieldConfigurationItem: { + /** @description The description of the field within the field configuration. */ + description?: string; + /** @description The ID of the field within the field configuration. */ + id: string; + /** @description Whether the field is hidden in the field configuration. */ + isHidden?: boolean; + /** @description Whether the field is required in the field configuration. */ + isRequired?: boolean; + /** @description The renderer type for the field within the field configuration. */ + renderer?: string; + }; + /** @description Details of field configuration items. */ + FieldConfigurationItemsDetails: { + /** @description Details of fields in a field configuration. */ + fieldConfigurationItems: components["schemas"]["FieldConfigurationItem"][]; + }; + /** @description Details of a field configuration scheme. */ + FieldConfigurationScheme: { + /** @description The description of the field configuration scheme. */ + description?: string; + /** @description The ID of the field configuration scheme. */ + id: string; + /** @description The name of the field configuration scheme. */ + name: string; + }; + /** @description Associated field configuration scheme and project. */ + FieldConfigurationSchemeProjectAssociation: { + /** @description The ID of the field configuration scheme. If the field configuration scheme ID is `null`, the operation assigns the default field configuration scheme. */ + fieldConfigurationSchemeId?: string; + /** @description The ID of the project. */ + projectId: string; + }; + /** @description Project list with assigned field configuration schema. */ + FieldConfigurationSchemeProjects: { + fieldConfigurationScheme?: components["schemas"]["FieldConfigurationScheme"]; + /** @description The IDs of projects using the field configuration scheme. */ + projectIds: string[]; + }; + /** @description The field configuration to issue type mapping. */ + FieldConfigurationToIssueTypeMapping: { + /** @description The ID of the field configuration. */ + fieldConfigurationId: string; + /** @description The ID of the issue type or *default*. When set to *default* this field configuration issue type item applies to all issue types without a field configuration. An issue type can be included only once in a request. */ + issueTypeId: string; + }; + /** @description The metadata describing an issue field for createmeta. */ + FieldCreateMetadata: { + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description The field id. */ + fieldId: string; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The key of the field. */ + key: string; + /** @description The name of the field. */ + name: string; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: components["schemas"]["JsonTypeBean"]; + }; + /** @description Details about a field. */ + FieldDetails: { + /** @description The names that can be used to reference the field in an advanced search. For more information, see [Advanced searching - fields reference](https://confluence.atlassian.com/x/gwORLQ). */ + clauseNames?: string[]; + /** @description Whether the field is a custom field. */ + custom?: boolean; + /** @description The ID of the field. */ + id?: string; + /** @description The key of the field. */ + key?: string; + /** @description The name of the field. */ + name?: string; + /** @description Whether the field can be used as a column on the issue navigator. */ + navigable?: boolean; + /** @description Whether the content of the field can be used to order lists. */ + orderable?: boolean; + /** @description The data schema for the field. */ + schema?: components["schemas"]["JsonTypeBean"]; + /** @description The scope of the field. */ + scope?: components["schemas"]["Scope"]; + /** @description Whether the content of the field can be searched. */ + searchable?: boolean; + }; + /** @description Information about the most recent use of a field. */ + FieldLastUsed: { + /** + * @description Last used value type: + * + * * *TRACKED*: field is tracked and a last used date is available. + * * *NOT\_TRACKED*: field is not tracked, last used date is not available. + * * *NO\_INFORMATION*: field is tracked, but no last used date is available. + * @enum {string} + */ + type?: "TRACKED" | "NOT_TRACKED" | "NO_INFORMATION"; + /** + * Format: date-time + * @description The date when the value of the field last changed. + */ + value?: string; + }; + /** @description The metadata describing an issue field. */ + FieldMetadata: { + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The key of the field. */ + key: string; + /** @description The name of the field. */ + name: string; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: components["schemas"]["JsonTypeBean"]; + }; + /** @description Details of a field that can be used in advanced searches. */ + FieldReferenceData: { + /** + * @description Whether the field provide auto-complete suggestions. + * @enum {string} + */ + auto?: "true" | "false"; + /** @description If the item is a custom field, the ID of the custom field. */ + cfid?: string; + /** + * @description Whether this field has been deprecated. + * @enum {string} + */ + deprecated?: "true" | "false"; + /** @description The searcher key of the field, only passed when the field is deprecated. */ + deprecatedSearcherKey?: string; + /** + * @description The display name contains the following: + * + * * for system fields, the field name. For example, `Summary`. + * * for collapsed custom fields, the field name followed by a hyphen and then the field name and field type. For example, `Component - Component[Dropdown]`. + * * for other custom fields, the field name followed by a hyphen and then the custom field ID. For example, `Component - cf[10061]`. + */ + displayName?: string; + /** @description The valid search operators for the field. */ + operators?: string[]; + /** + * @description Whether the field can be used in a query's `ORDER BY` clause. + * @enum {string} + */ + orderable?: "true" | "false"; + /** + * @description Whether the content of this field can be searched. + * @enum {string} + */ + searchable?: "true" | "false"; + /** @description The data types of items in the field. */ + types?: string[]; + /** @description The field identifier. */ + value?: string; + }; + /** @description Details of an operation to perform on a field. */ + FieldUpdateOperation: { + /** + * @description The value to add to the field. + * @example triaged + */ + add?: unknown; + /** + * @description The field value to copy from another issue. + * @example { + * "issuelinks": { + * "sourceIssues": [ + * { + * "key": "FP-5" + * } + * ] + * } + * } + */ + copy?: unknown; + /** + * @description The value to edit in the field. + * @example { + * "originalEstimate": "1w 1d", + * "remainingEstimate": "4d" + * } + */ + edit?: unknown; + /** + * @description The value to removed from the field. + * @example blocker + */ + remove?: unknown; + /** + * @description The value to set in the field. + * @example A new summary + */ + set?: unknown; + }; + /** @description A clause that asserts the current value of a field. For example, `summary ~ test`. */ + FieldValueClause: { + field: components["schemas"]["JqlQueryField"]; + operand: components["schemas"]["JqlQueryClauseOperand"]; + /** + * @description The operator between the field and operand. + * @enum {string} + */ + operator: "=" | "!=" | ">" | "<" | ">=" | "<=" | "in" | "not in" | "~" | "~=" | "is" | "is not"; + }; + /** @description A clause that asserts a previous value of a field. For example, `status WAS "Resolved" BY currentUser() BEFORE "2019/02/02"`. See [WAS](https://confluence.atlassian.com/x/dgiiLQ#Advancedsearching-operatorsreference-WASWAS) for more information about the WAS operator. */ + FieldWasClause: { + field: components["schemas"]["JqlQueryField"]; + operand: components["schemas"]["JqlQueryClauseOperand"]; + /** + * @description The operator between the field and operand. + * @enum {string} + */ + operator: "was" | "was in" | "was not in" | "was not"; + /** @description The list of time predicates. */ + predicates: components["schemas"]["JqlQueryClauseTimePredicate"][]; + }; + /** @description Key fields from the linked issue. */ + Fields: { + /** @description The assignee of the linked issue. */ + assignee?: components["schemas"]["UserDetails"]; + /** @description The type of the linked issue. */ + issueType?: components["schemas"]["IssueTypeDetails"]; + /** @description The type of the linked issue. */ + issuetype?: components["schemas"]["IssueTypeDetails"]; + /** @description The priority of the linked issue. */ + priority?: components["schemas"]["Priority"]; + /** @description The status of the linked issue. */ + status?: components["schemas"]["StatusDetails"]; + /** @description The summary description of the linked issue. */ + summary?: string; + /** @description The time tracking of the linked issue. */ + timetracking?: components["schemas"]["TimeTrackingDetails"]; + }; + /** @description Details about a filter. */ + Filter: { + /** @description A description of the filter. */ + description?: string; + /** @description The groups and projects that can edit the filter. */ + editPermissions?: components["schemas"]["SharePermission"][]; + /** @description Whether the filter is selected as a favorite. */ + favourite?: boolean; + /** + * Format: int64 + * @description The count of how many users have selected this filter as a favorite, including the filter owner. + */ + favouritedCount?: number; + /** @description The unique identifier for the filter. */ + id?: string; + /** @description The JQL query for the filter. For example, *project = SSP AND issuetype = Bug*. */ + jql?: string; + /** @description The name of the filter. Must be unique. */ + name: string; + /** @description The user who owns the filter. This is defaulted to the creator of the filter, however Jira administrators can change the owner of a shared filter in the admin settings. */ + owner?: components["schemas"]["User"]; + /** + * Format: uri + * @description A URL to view the filter results in Jira, using the [Search for issues using JQL](#api-rest-api-3-filter-search-get) operation with the filter's JQL string to return the filter results. For example, *https://your-domain.atlassian.net/rest/api/3/search?jql=project+%3D+SSP+AND+issuetype+%3D+Bug*. + */ + searchUrl?: string; + /** + * Format: uri + * @description The URL of the filter. + */ + self?: string; + /** @description The groups and projects that the filter is shared with. */ + sharePermissions?: components["schemas"]["SharePermission"][]; + /** @description A paginated list of the users that the filter is shared with. This includes users that are members of the groups or can browse the projects that the filter is shared with. */ + sharedUsers?: components["schemas"]["UserList"]; + /** @description A paginated list of the users that are subscribed to the filter. */ + subscriptions?: components["schemas"]["FilterSubscriptionsList"]; + /** + * Format: uri + * @description A URL to view the filter results in Jira, using the ID of the filter. For example, *https://your-domain.atlassian.net/issues/?filter=10100*. + */ + viewUrl?: string; + }; + /** @description Details of a filter. */ + FilterDetails: { + /** @description The description of the filter. */ + description?: string; + /** @description The groups and projects that can edit the filter. This can be specified when updating a filter, but not when creating a filter. */ + editPermissions?: components["schemas"]["SharePermission"][]; + /** @description Expand options that include additional filter details in the response. */ + expand?: string; + /** @description Whether the filter is selected as a favorite by any users, not including the filter owner. */ + favourite?: boolean; + /** + * Format: int64 + * @description The count of how many users have selected this filter as a favorite, including the filter owner. + */ + favouritedCount?: number; + /** @description The unique identifier for the filter. */ + id?: string; + /** @description The JQL query for the filter. For example, *project = SSP AND issuetype = Bug*. */ + jql?: string; + /** @description The name of the filter. */ + name: string; + /** @description The user who owns the filter. Defaults to the creator of the filter, however, Jira administrators can change the owner of a shared filter in the admin settings. */ + owner?: components["schemas"]["User"]; + /** + * Format: uri + * @description A URL to view the filter results in Jira, using the [Search for issues using JQL](#api-rest-api-3-filter-search-get) operation with the filter's JQL string to return the filter results. For example, *https://your-domain.atlassian.net/rest/api/3/search?jql=project+%3D+SSP+AND+issuetype+%3D+Bug*. + */ + searchUrl?: string; + /** + * Format: uri + * @description The URL of the filter. + */ + self?: string; + /** @description The groups and projects that the filter is shared with. This can be specified when updating a filter, but not when creating a filter. */ + sharePermissions?: components["schemas"]["SharePermission"][]; + /** @description The users that are subscribed to the filter. */ + subscriptions?: readonly components["schemas"]["FilterSubscription"][]; + /** + * Format: uri + * @description A URL to view the filter results in Jira, using the ID of the filter. For example, *https://your-domain.atlassian.net/issues/?filter=10100*. + */ + viewUrl?: string; + }; + /** @description Details of a user or group subscribing to a filter. */ + FilterSubscription: { + /** @description The group subscribing to filter. */ + group?: components["schemas"]["GroupName"]; + /** + * Format: int64 + * @description The ID of the filter subscription. + */ + id?: number; + /** @description The user subscribing to filter. */ + user?: components["schemas"]["User"]; + }; + /** @description A paginated list of subscriptions to a filter. */ + FilterSubscriptionsList: { + /** + * Format: int32 + * @description The index of the last item returned on the page. + */ + "end-index"?: number; + /** @description The list of items. */ + items?: readonly components["schemas"]["FilterSubscription"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + "max-results"?: number; + /** + * Format: int32 + * @description The number of items on the page. + */ + size?: number; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + "start-index"?: number; + }; + /** @description A group found in a search. */ + FoundGroup: { + /** @description The ID of the group, which uniquely identifies the group across all Atlassian products. For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*. */ + groupId?: string; + /** @description The group name with the matched query string highlighted with the HTML bold tag. */ + html?: string; + labels?: components["schemas"]["GroupLabel"][]; + /** @description The name of the group. The name of a group is mutable, to reliably identify a group use ``groupId`.` */ + name?: string; + }; + /** @description The list of groups found in a search, including header text (Showing X of Y matching groups) and total of matched groups. */ + FoundGroups: { + groups?: components["schemas"]["FoundGroup"][]; + /** @description Header text indicating the number of groups in the response and the total number of groups found in the search. */ + header?: string; + /** + * Format: int32 + * @description The total number of groups found in the search. + */ + total?: number; + }; + /** @description The list of users found in a search, including header text (Showing X of Y matching users) and total of matched users. */ + FoundUsers: { + /** @description Header text indicating the number of users in the response and the total number of users found in the search. */ + header?: string; + /** + * Format: int32 + * @description The total number of users found in the search. + */ + total?: number; + users?: components["schemas"]["UserPickerUser"][]; + }; + /** @description List of users and groups found in a search. */ + FoundUsersAndGroups: { + groups?: components["schemas"]["FoundGroups"]; + users?: components["schemas"]["FoundUsers"]; + }; + /** @description An operand that is a function. See [Advanced searching - functions reference](https://confluence.atlassian.com/x/dwiiLQ) for more information about JQL functions. */ + FunctionOperand: { + /** @description The list of function arguments. */ + arguments: string[]; + /** @description Encoded operand, which can be used directly in a JQL query. */ + encodedOperand?: string; + /** @description The name of the function. */ + function: string; + }; + /** @description Details of functions that can be used in advanced searches. */ + FunctionReferenceData: { + /** @description The display name of the function. */ + displayName?: string; + /** + * @description Whether the function can take a list of arguments. + * @enum {string} + */ + isList?: "true" | "false"; + /** + * @description Whether the function supports both single and list value operators. + * @enum {string} + */ + supportsListAndSingleValueOperators?: "true" | "false"; + /** @description The data types returned by the function. */ + types?: string[]; + /** @description The function identifier. */ + value?: string; + }; + GlobalScopeBean: { + /** @description Defines the behavior of the option in the global context.If notSelectable is set, the option cannot be set as the field's value. This is useful for archiving an option that has previously been selected but shouldn't be used anymore.If defaultValue is set, the option is selected by default. */ + attributes?: ("notSelectable" | "defaultValue")[]; + }; + Group: { + /** @description Expand options that include additional group details in the response. */ + expand?: string; + /** @description The ID of the group, which uniquely identifies the group across all Atlassian products. For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*. */ + groupId?: string | null; + /** @description The name of group. */ + name?: string; + /** + * Format: uri + * @description The URL for these group details. + */ + self?: string; + /** @description A paginated list of the users that are members of the group. A maximum of 50 users is returned in the list, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 50 users, use`?expand=users[51:100]`. */ + users?: components["schemas"]["PagedListUserDetailsApplicationUser"]; + }; + /** @description Details about a group. */ + GroupDetails: { + /** @description The ID of the group, which uniquely identifies the group across all Atlassian products. For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*. */ + groupId?: string | null; + /** @description The name of the group. */ + name?: string; + }; + /** @description A group label. */ + GroupLabel: { + /** @description The group label name. */ + text?: string; + /** @description The title of the group label. */ + title?: string; + /** + * @description The type of the group label. + * @enum {string} + */ + type?: "ADMIN" | "SINGLE" | "MULTIPLE"; + }; + /** @description Details about a group. */ + GroupName: { + /** @description The ID of the group, which uniquely identifies the group across all Atlassian products. For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*. */ + groupId?: string | null; + /** @description The name of group. */ + name?: string; + /** + * Format: uri + * @description The URL for these group details. + */ + self?: string; + }; + /** @description Jira instance health check results. Deprecated and no longer returned. */ + HealthCheckResult: { + /** @description The description of the Jira health check item. */ + description?: string; + /** @description The name of the Jira health check item. */ + name?: string; + /** @description Whether the Jira health check item passed or failed. */ + passed?: boolean; + }; + /** @description The project issue type hierarchy. */ + Hierarchy: { + /** + * Format: int64 + * @description The ID of the base level. This property is deprecated, see [Change notice: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + baseLevelId?: number; + /** @description Details about the hierarchy level. */ + levels?: readonly components["schemas"]["SimplifiedHierarchyLevel"][]; + }; + /** @description Details of issue history metadata. */ + HistoryMetadata: { + /** @description The activity described in the history record. */ + activityDescription?: string; + /** @description The key of the activity described in the history record. */ + activityDescriptionKey?: string; + /** @description Details of the user whose action created the history record. */ + actor?: components["schemas"]["HistoryMetadataParticipant"]; + /** @description Details of the cause that triggered the creation the history record. */ + cause?: components["schemas"]["HistoryMetadataParticipant"]; + /** @description The description of the history record. */ + description?: string; + /** @description The description key of the history record. */ + descriptionKey?: string; + /** @description The description of the email address associated the history record. */ + emailDescription?: string; + /** @description The description key of the email address associated the history record. */ + emailDescriptionKey?: string; + /** @description Additional arbitrary information about the history record. */ + extraData?: { + [key: string]: string; + }; + /** @description Details of the system that generated the history record. */ + generator?: components["schemas"]["HistoryMetadataParticipant"]; + /** @description The type of the history record. */ + type?: string; + [key: string]: unknown; + }; + /** @description Details of user or system associated with a issue history metadata item. */ + HistoryMetadataParticipant: { + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** + * @description An icon. If no icon is defined: + * + * * for a status icon, no status icon displays in Jira. + * * for the remote object icon, the default link icon displays in Jira. + */ + Icon: { + /** @description The URL of the tooltip, used only for a status icon. If not set, the status icon in Jira is not clickable. */ + link?: string; + /** + * @description The title of the icon. This is used as follows: + * + * * For a status icon it is used as a tooltip on the icon. If not set, the status icon doesn't display a tooltip in Jira. + * * For the remote object icon it is used in conjunction with the application name to display a tooltip for the link's icon. The tooltip takes the format "\[application name\] icon title". Blank itemsare excluded from the tooltip title. If both items are blank, the icon tooltop displays as "Web Link". + */ + title?: string; + /** @description The URL of an icon that displays at 16x16 pixel in Jira. */ + url16x16?: string; + [key: string]: unknown; + }; + /** @description An icon. */ + IconBean: { + /** @description The URL of the tooltip, used only for a status icon. */ + link?: string; + /** @description The title of the icon, for use as a tooltip on the icon. */ + title?: string; + /** @description The URL of a 16x16 pixel icon. */ + url16x16?: string; + }; + IdBean: { + /** + * Format: int64 + * @description The ID of the permission scheme to associate with the project. Use the [Get all permission schemes](#api-rest-api-3-permissionscheme-get) resource to get a list of permission scheme IDs. + */ + id: number; + }; + IdOrKeyBean: { + /** + * Format: int64 + * @description The ID of the referenced item. + */ + id?: number; + /** @description The key of the referenced item. */ + key?: string; + }; + IncludedFields: { + actuallyIncluded?: string[]; + excluded?: string[]; + included?: string[]; + }; + InputStreamSource: { + inputStream?: Record; + }; + /** @description List of Issue Ids Or Keys that are to be archived or unarchived */ + IssueArchivalSyncRequest: { + issueIdsOrKeys?: string[]; + }; + /** @description Number of archived/unarchived issues and list of errors that occurred during the action, if any. */ + IssueArchivalSyncResponse: { + errors?: components["schemas"]["Errors"]; + /** Format: int64 */ + numberOfIssuesUpdated?: number; + }; + /** @description Details about an issue. */ + IssueBean: { + /** @description Details of changelogs associated with the issue. */ + changelog?: components["schemas"]["PageOfChangelogs"]; + /** @description The metadata for the fields on the issue that can be amended. */ + editmeta?: components["schemas"]["IssueUpdateMetadata"]; + /** @description Expand options that include additional issue details in the response. */ + expand?: string; + fields?: { + [key: string]: unknown; + }; + fieldsToInclude?: components["schemas"]["IncludedFields"]; + /** @description The ID of the issue. */ + id?: string; + /** @description The key of the issue. */ + key?: string; + /** @description The ID and name of each field present on the issue. */ + names?: { + [key: string]: string; + }; + /** @description The operations that can be performed on the issue. */ + operations?: components["schemas"]["Operations"]; + /** @description Details of the issue properties identified in the request. */ + properties?: { + [key: string]: unknown; + }; + /** @description The rendered value of each field present on the issue. */ + renderedFields?: { + [key: string]: unknown; + }; + /** @description The schema describing each field present on the issue. */ + schema?: { + [key: string]: components["schemas"]["JsonTypeBean"]; + }; + /** + * Format: uri + * @description The URL of the issue details. + */ + self?: string; + /** @description The transitions that can be performed on the issue. */ + transitions?: readonly components["schemas"]["IssueTransition"][]; + /** @description The versions of each field on the issue. */ + versionedRepresentations?: { + [key: string]: { + [key: string]: unknown; + }; + }; + }; + /** @description A list of changelog IDs. */ + IssueChangelogIds: { + /** @description The list of changelog IDs. */ + changelogIds: number[]; + }; + IssueCommentListRequestBean: { + /** @description The list of comment IDs. A maximum of 1000 IDs can be specified. */ + ids: number[]; + }; + /** @description 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. */ + IssueContextVariable: { + /** + * Format: int64 + * @description The issue ID. + */ + id?: number; + /** @description The issue key. */ + key?: string; + /** @description Type of custom context variable. */ + type: string; + }; + /** @description The wrapper for the issue creation metadata for a list of projects. */ + IssueCreateMetadata: { + /** @description Expand options that include additional project details in the response. */ + expand?: string; + /** @description List of projects and their issue creation metadata. */ + projects?: readonly components["schemas"]["ProjectIssueCreateMetadata"][]; + }; + /** @description Lists of issues and entity properties. See [Entity properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/) for more information. */ + IssueEntityProperties: { + /** @description A list of entity property IDs. */ + entitiesIds?: number[]; + /** @description A list of entity property keys and values. */ + properties?: { + [key: string]: components["schemas"]["JsonNode"]; + }; + }; + /** @description An issue ID with entity property values. See [Entity properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/) for more information. */ + IssueEntityPropertiesForMultiUpdate: { + /** + * Format: int64 + * @description The ID of the issue. + */ + issueID?: number; + /** @description Entity properties to set on the issue. The maximum length of an issue property value is 32768 characters. */ + properties?: { + [key: string]: components["schemas"]["JsonNode"]; + }; + }; + /** @description Details about an issue event. */ + IssueEvent: { + /** + * Format: int64 + * @description The ID of the event. + */ + id?: number; + /** @description The name of the event. */ + name?: string; + }; + /** @description Details of the options for a select list issue field. */ + IssueFieldOption: { + config?: components["schemas"]["IssueFieldOptionConfiguration"]; + /** + * Format: int64 + * @description The unique identifier for the option. This is only unique within the select field's set of options. + */ + id: number; + /** @description The properties of the object, as arbitrary key-value pairs. These properties can be searched using JQL, if the extractions (see [Issue Field Option Property Index](https://developer.atlassian.com/cloud/jira/platform/modules/issue-field-option-property-index/)) are defined in the descriptor for the issue field module. */ + properties?: { + [key: string]: unknown; + }; + /** @description The option's name, which is displayed in Jira. */ + value: string; + }; + /** @description Details of the projects the option is available in. */ + IssueFieldOptionConfiguration: { + /** @description DEPRECATED */ + attributes?: ("notSelectable" | "defaultValue")[]; + /** @description Defines the projects that the option is available in. If the scope is not defined, then the option is available in all projects. */ + scope?: components["schemas"]["IssueFieldOptionScopeBean"]; + }; + IssueFieldOptionCreateBean: { + config?: components["schemas"]["IssueFieldOptionConfiguration"]; + /** @description The properties of the option as arbitrary key-value pairs. These properties can be searched using JQL, if the extractions (see https://developer.atlassian.com/cloud/jira/platform/modules/issue-field-option-property-index/) are defined in the descriptor for the issue field module. */ + properties?: { + [key: string]: unknown; + }; + /** @description The option's name, which is displayed in Jira. */ + value: string; + [key: string]: unknown; + }; + IssueFieldOptionScopeBean: { + /** @description Defines the behavior of the option within the global context. If this property is set, even if set to an empty object, then the option is available in all projects. */ + global?: components["schemas"]["GlobalScopeBean"]; + /** @description DEPRECATED */ + projects?: number[]; + /** @description Defines the projects in which the option is available and the behavior of the option within each project. Specify one object per project. The behavior of the option in a project context overrides the behavior in the global context. */ + projects2?: components["schemas"]["ProjectScopeBean"][]; + }; + /** @description Bulk operation filter details. */ + IssueFilterForBulkPropertyDelete: { + /** @description The value of properties to perform the bulk operation on. */ + currentValue?: unknown; + /** @description List of issues to perform the bulk delete operation on. */ + entityIds?: number[]; + }; + /** @description Bulk operation filter details. */ + IssueFilterForBulkPropertySet: { + /** @description The value of properties to perform the bulk operation on. */ + currentValue?: unknown; + /** @description List of issues to perform the bulk operation on. */ + entityIds?: number[]; + /** @description Whether the bulk operation occurs only when the property is present on or absent from an issue. */ + hasProperty?: boolean; + }; + /** @description Details of a link between issues. */ + IssueLink: { + /** @description The ID of the issue link. */ + id?: string; + /** @description Provides details about the linked issue. If presenting this link in a user interface, use the `inward` field of the issue link type to label the link. */ + inwardIssue: components["schemas"]["LinkedIssue"]; + /** @description Provides details about the linked issue. If presenting this link in a user interface, use the `outward` field of the issue link type to label the link. */ + outwardIssue: components["schemas"]["LinkedIssue"]; + /** + * Format: uri + * @description The URL of the issue link. + */ + self?: string; + /** @description The type of link between the issues. */ + type: components["schemas"]["IssueLinkType"]; + }; + /** + * @description This object is used as follows: + * + * * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it defines and reports on the type of link between the issues. Find a list of issue link types with [Get issue link types](#api-rest-api-3-issueLinkType-get). + * * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it defines and reports on issue link types. + */ + IssueLinkType: { + /** + * @description The ID of the issue link type and is used as follows: + * + * * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is the type of issue link. Required on create when `name` isn't provided. Otherwise, read only. + * * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is read only. + */ + id?: string; + /** + * @description The description of the issue link type inward link and is used as follows: + * + * * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is read only. + * * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is required on create and optional on update. Otherwise, read only. + */ + inward?: string; + /** + * @description The name of the issue link type and is used as follows: + * + * * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is the type of issue link. Required on create when `id` isn't provided. Otherwise, read only. + * * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is required on create and optional on update. Otherwise, read only. + */ + name?: string; + /** + * @description The description of the issue link type outward link and is used as follows: + * + * * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is read only. + * * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is required on create and optional on update. Otherwise, read only. + */ + outward?: string; + /** + * Format: uri + * @description The URL of the issue link type. Read only. + */ + self?: string; + }; + /** @description A list of issue link type beans. */ + IssueLinkTypes: { + /** @description The issue link type bean. */ + issueLinkTypes?: readonly components["schemas"]["IssueLinkType"][]; + }; + /** @description A list of issue IDs. */ + IssueList: { + /** @description The list of issue IDs. */ + issueIds: string[]; + }; + /** @description A list of matched issues or errors for each JQL query, in the order the JQL queries were passed. */ + IssueMatches: { + matches: components["schemas"]["IssueMatchesForJQL"][]; + }; + /** @description A list of the issues matched to a JQL query or details of errors encountered during matching. */ + IssueMatchesForJQL: { + /** @description A list of errors. */ + errors: string[]; + /** @description A list of issue IDs. */ + matchedIssues: number[]; + }; + /** @description A list of issues suggested for use in auto-completion. */ + IssuePickerSuggestions: { + /** @description A list of issues for an issue type suggested for use in auto-completion. */ + sections?: readonly components["schemas"]["IssuePickerSuggestionsIssueType"][]; + }; + /** @description A type of issue suggested for use in auto-completion. */ + IssuePickerSuggestionsIssueType: { + /** @description The ID of the type of issues suggested for use in auto-completion. */ + id?: string; + /** @description A list of issues suggested for use in auto-completion. */ + issues?: readonly components["schemas"]["SuggestedIssue"][]; + /** @description The label of the type of issues suggested for use in auto-completion. */ + label?: string; + /** @description If no issue suggestions are found, returns a message indicating no suggestions were found, */ + msg?: string; + /** @description If issue suggestions are found, returns a message indicating the number of issues suggestions found and returned. */ + sub?: string; + }; + /** @description Issue security level member. */ + IssueSecurityLevelMember: { + /** @description The user or group being granted the permission. It consists of a `type` and a type-dependent `parameter`. See [Holder object](../api-group-permission-schemes/#holder-object) in *Get all permission schemes* for more information. */ + holder: components["schemas"]["PermissionHolder"]; + /** + * Format: int64 + * @description The ID of the issue security level member. + */ + id: number; + /** + * Format: int64 + * @description The ID of the issue security level. + */ + issueSecurityLevelId: number; + managed?: boolean; + }; + /** @description Details about an project using security scheme mapping. */ + IssueSecuritySchemeToProjectMapping: { + issueSecuritySchemeId?: string; + projectId?: string; + [key: string]: unknown; + }; + /** @description Details of an issue transition. */ + IssueTransition: { + /** @description Expand options that include additional transition details in the response. */ + expand?: string; + /** @description Details of the fields associated with the issue transition screen. Use this information to populate `fields` and `update` in a transition request. */ + fields?: { + [key: string]: components["schemas"]["FieldMetadata"]; + }; + /** @description Whether there is a screen associated with the issue transition. */ + hasScreen?: boolean; + /** @description The ID of the issue transition. Required when specifying a transition to undertake. */ + id?: string; + /** @description Whether the transition is available to be performed. */ + isAvailable?: boolean; + /** @description Whether the issue has to meet criteria before the issue transition is applied. */ + isConditional?: boolean; + /** @description Whether the issue transition is global, that is, the transition is applied to issues regardless of their status. */ + isGlobal?: boolean; + /** @description Whether this is the initial issue transition for the workflow. */ + isInitial?: boolean; + looped?: boolean; + /** @description The name of the issue transition. */ + name?: string; + /** @description Details of the issue status after the transition. */ + to?: components["schemas"]["StatusDetails"]; + [key: string]: unknown; + }; + IssueTypeCreateBean: { + /** @description The description of the issue type. */ + description?: string; + /** + * Format: int32 + * @description The hierarchy level of the issue type. Use: + * + * * `-1` for Subtask. + * * `0` for Base. + * + * Defaults to `0`. + */ + hierarchyLevel?: number; + /** @description The unique name for the issue type. The maximum length is 60 characters. */ + name: string; + /** + * @description Deprecated. Use `hierarchyLevel` instead. See the [deprecation notice](https://community.developer.atlassian.com/t/deprecation-of-the-epic-link-parent-link-and-other-related-fields-in-rest-apis-and-webhooks/54048) for details. + * + * Whether the issue type is `subtype` or `standard`. Defaults to `standard`. + * @enum {string} + */ + type?: "subtask" | "standard"; + }; + /** @description Details about an issue type. */ + IssueTypeDetails: { + /** + * Format: int64 + * @description The ID of the issue type's avatar. + */ + avatarId?: number; + /** @description The description of the issue type. */ + description?: string; + /** + * Format: uuid + * @description Unique ID for next-gen projects. + */ + entityId?: string; + /** + * Format: int32 + * @description Hierarchy level of the issue type. + */ + hierarchyLevel?: number; + /** @description The URL of the issue type's avatar. */ + iconUrl?: string; + /** @description The ID of the issue type. */ + id?: string; + /** @description The name of the issue type. */ + name?: string; + /** @description Details of the next-gen projects the issue type is available in. */ + scope?: components["schemas"]["Scope"]; + /** @description The URL of these issue type details. */ + self?: string; + /** @description Whether this issue type is used to create subtasks. */ + subtask?: boolean; + }; + /** @description The list of issue type IDs. */ + IssueTypeIds: { + /** @description The list of issue type IDs. */ + issueTypeIds: string[]; + }; + /** @description The list of issue type IDs to be removed from the field configuration scheme. */ + IssueTypeIdsToRemove: { + /** @description The list of issue type IDs. Must contain unique values not longer than 255 characters and not be empty. Maximum of 100 IDs. */ + issueTypeIds: string[]; + }; + /** @description Details of an issue type. */ + IssueTypeInfo: { + /** + * Format: int64 + * @description The avatar of the issue type. + */ + avatarId?: number; + /** + * Format: int64 + * @description The ID of the issue type. + */ + id?: number; + /** @description The name of the issue type. */ + name?: string; + }; + /** @description Details of the issue creation metadata for an issue type. */ + IssueTypeIssueCreateMetadata: { + /** + * Format: int64 + * @description The ID of the issue type's avatar. + */ + avatarId?: number; + /** @description The description of the issue type. */ + description?: string; + /** + * Format: uuid + * @description Unique ID for next-gen projects. + */ + entityId?: string; + /** @description Expand options that include additional issue type metadata details in the response. */ + expand?: string; + /** @description List of the fields available when creating an issue for the issue type. */ + fields?: { + [key: string]: components["schemas"]["FieldMetadata"]; + }; + /** + * Format: int32 + * @description Hierarchy level of the issue type. + */ + hierarchyLevel?: number; + /** @description The URL of the issue type's avatar. */ + iconUrl?: string; + /** @description The ID of the issue type. */ + id?: string; + /** @description The name of the issue type. */ + name?: string; + /** @description Details of the next-gen projects the issue type is available in. */ + scope?: components["schemas"]["Scope"]; + /** @description The URL of these issue type details. */ + self?: string; + /** @description Whether this issue type is used to create subtasks. */ + subtask?: boolean; + }; + /** @description Details of an issue type scheme. */ + IssueTypeScheme: { + /** @description The ID of the default issue type of the issue type scheme. */ + defaultIssueTypeId?: string; + /** @description The description of the issue type scheme. */ + description?: string; + /** @description The ID of the issue type scheme. */ + id: string; + /** @description Whether the issue type scheme is the default. */ + isDefault?: boolean; + /** @description The name of the issue type scheme. */ + name: string; + }; + /** @description Details of an issue type scheme and its associated issue types. */ + IssueTypeSchemeDetails: { + /** @description The ID of the default issue type of the issue type scheme. This ID must be included in `issueTypeIds`. */ + defaultIssueTypeId?: string; + /** @description The description of the issue type scheme. The maximum length is 4000 characters. */ + description?: string; + /** @description The list of issue types IDs of the issue type scheme. At least one standard issue type ID is required. */ + issueTypeIds: string[]; + /** @description The name of the issue type scheme. The name must be unique. The maximum length is 255 characters. */ + name: string; + }; + /** @description The ID of an issue type scheme. */ + IssueTypeSchemeID: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: string; + }; + /** @description Issue type scheme item. */ + IssueTypeSchemeMapping: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: string; + }; + /** @description Details of the association between an issue type scheme and project. */ + IssueTypeSchemeProjectAssociation: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: string; + /** @description The ID of the project. */ + projectId: string; + }; + /** @description Issue type scheme with a list of the projects that use it. */ + IssueTypeSchemeProjects: { + /** @description Details of an issue type scheme. */ + issueTypeScheme: components["schemas"]["IssueTypeScheme"]; + /** @description The IDs of the projects using the issue type scheme. */ + projectIds: string[]; + }; + /** @description Details of the name, description, and default issue type for an issue type scheme. */ + IssueTypeSchemeUpdateDetails: { + /** @description The ID of the default issue type of the issue type scheme. */ + defaultIssueTypeId?: string; + /** @description The description of the issue type scheme. The maximum length is 4000 characters. */ + description?: string; + /** @description The name of the issue type scheme. The name must be unique. The maximum length is 255 characters. */ + name?: string; + }; + /** @description Details of an issue type screen scheme. */ + IssueTypeScreenScheme: { + /** @description The description of the issue type screen scheme. */ + description?: string; + /** @description The ID of the issue type screen scheme. */ + id: string; + /** @description The name of the issue type screen scheme. */ + name: string; + }; + /** @description The details of an issue type screen scheme. */ + IssueTypeScreenSchemeDetails: { + /** @description The description of the issue type screen scheme. The maximum length is 255 characters. */ + description?: string; + /** @description The IDs of the screen schemes for the issue type IDs and *default*. A *default* entry is required to create an issue type screen scheme, it defines the mapping for all issue types without a screen scheme. */ + issueTypeMappings: components["schemas"]["IssueTypeScreenSchemeMapping"][]; + /** @description The name of the issue type screen scheme. The name must be unique. The maximum length is 255 characters. */ + name: string; + }; + /** @description The ID of an issue type screen scheme. */ + IssueTypeScreenSchemeId: { + /** @description The ID of the issue type screen scheme. */ + id: string; + }; + /** @description The screen scheme for an issue type. */ + IssueTypeScreenSchemeItem: { + /** @description The ID of the issue type or *default*. Only issue types used in classic projects are accepted. When creating an issue screen scheme, an entry for *default* must be provided and defines the mapping for all issue types without a screen scheme. Otherwise, a *default* entry can't be provided. */ + issueTypeId: string; + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: string; + /** @description The ID of the screen scheme. */ + screenSchemeId: string; + }; + /** @description The IDs of the screen schemes for the issue type IDs. */ + IssueTypeScreenSchemeMapping: { + /** @description The ID of the issue type or *default*. Only issue types used in classic projects are accepted. An entry for *default* must be provided and defines the mapping for all issue types without a screen scheme. */ + issueTypeId: string; + /** @description The ID of the screen scheme. Only screen schemes used in classic projects are accepted. */ + screenSchemeId: string; + }; + /** @description A list of issue type screen scheme mappings. */ + IssueTypeScreenSchemeMappingDetails: { + /** @description The list of issue type to screen scheme mappings. A *default* entry cannot be specified because a default entry is added when an issue type screen scheme is created. */ + issueTypeMappings: components["schemas"]["IssueTypeScreenSchemeMapping"][]; + }; + /** @description Associated issue type screen scheme and project. */ + IssueTypeScreenSchemeProjectAssociation: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId?: string; + /** @description The ID of the project. */ + projectId?: string; + }; + /** @description Details of an issue type screen scheme. */ + IssueTypeScreenSchemeUpdateDetails: { + /** @description The description of the issue type screen scheme. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the issue type screen scheme. The name must be unique. The maximum length is 255 characters. */ + name?: string; + }; + /** @description Issue type screen scheme with a list of the projects that use it. */ + IssueTypeScreenSchemesProjects: { + /** @description Details of an issue type screen scheme. */ + issueTypeScreenScheme: components["schemas"]["IssueTypeScreenScheme"]; + /** @description The IDs of the projects using the issue type screen scheme. */ + projectIds: string[]; + }; + /** @description Mapping of an issue type to a context. */ + IssueTypeToContextMapping: { + /** @description The ID of the context. */ + contextId: string; + /** @description Whether the context is mapped to any issue type. */ + isAnyIssueType?: boolean; + /** @description The ID of the issue type. */ + issueTypeId?: string; + }; + IssueTypeUpdateBean: { + /** + * Format: int64 + * @description The ID of an issue type avatar. + */ + avatarId?: number; + /** @description The description of the issue type. */ + description?: string; + /** @description The unique name for the issue type. The maximum length is 60 characters. */ + name?: string; + }; + /** @description Status details for an issue type. */ + IssueTypeWithStatus: { + /** @description The ID of the issue type. */ + id: string; + /** @description The name of the issue type. */ + name: string; + /** @description The URL of the issue type's status details. */ + self: string; + /** @description List of status details for the issue type. */ + statuses: readonly components["schemas"]["StatusDetails"][]; + /** @description Whether this issue type represents subtasks. */ + subtask: boolean; + }; + /** @description Details about the mapping between an issue type and a workflow. */ + IssueTypeWorkflowMapping: { + /** @description The ID of the issue type. Not required if updating the issue type-workflow mapping. */ + issueType?: string; + /** @description Set to true to create or update the draft of a workflow scheme and update the mapping in the draft, when the workflow scheme cannot be edited. Defaults to `false`. Only applicable when updating the workflow-issue types mapping. */ + updateDraftIfNeeded?: boolean; + /** @description The name of the workflow. */ + workflow?: string; + }; + /** @description Details about the mapping between issue types and a workflow. */ + IssueTypesWorkflowMapping: { + /** @description Whether the workflow is the default workflow for the workflow scheme. */ + defaultMapping?: boolean; + /** @description The list of issue type IDs. */ + issueTypes?: string[]; + /** @description Whether a draft workflow scheme is created or updated when updating an active workflow scheme. The draft is updated with the new workflow-issue types mapping. Defaults to `false`. */ + updateDraftIfNeeded?: boolean; + /** @description The name of the workflow. Optional if updating the workflow-issue types mapping. */ + workflow?: string; + }; + /** @description Details of an issue update request. */ + IssueUpdateDetails: { + /** @description List of issue screen fields to update, specifying the sub-field to update and its value for each field. This field provides a straightforward option when setting a sub-field. When multiple sub-fields or other operations are required, use `update`. Fields included in here cannot be included in `update`. */ + fields?: { + [key: string]: unknown; + }; + /** @description Additional issue history details. */ + historyMetadata?: components["schemas"]["HistoryMetadata"]; + /** @description Details of issue properties to be add or update. */ + properties?: components["schemas"]["EntityProperty"][]; + /** @description Details of a transition. Required when performing a transition, optional when creating or editing an issue. */ + transition?: components["schemas"]["IssueTransition"]; + /** @description A Map containing the field field name and a list of operations to perform on the issue screen field. Note that fields included in here cannot be included in `fields`. */ + update?: { + [key: string]: components["schemas"]["FieldUpdateOperation"][]; + }; + [key: string]: unknown; + }; + /** @description A list of editable field details. */ + IssueUpdateMetadata: { + fields?: { + [key: string]: components["schemas"]["FieldMetadata"]; + }; + }; + /** @description List of issues and JQL queries. */ + IssuesAndJQLQueries: { + /** @description A list of issue IDs. */ + issueIds: number[]; + /** @description A list of JQL queries. */ + jqls: string[]; + }; + /** @description The description of the page of issues loaded by the provided JQL query. */ + IssuesJqlMetaDataBean: { + /** + * Format: int32 + * @description The number of issues that were loaded in this evaluation. + */ + count: number; + /** + * Format: int32 + * @description The maximum number of issues that could be loaded in this evaluation. + */ + maxResults: number; + /** + * Format: int64 + * @description The index of the first issue. + */ + startAt: number; + /** + * Format: int64 + * @description The total number of issues the JQL returned. + */ + totalCount: number; + /** @description Any warnings related to the JQL query. Present only if the validation mode was set to `warn`. */ + validationWarnings?: string[]; + }; + /** @description Meta data describing the `issues` context variable. */ + IssuesMetaBean: { + jql?: components["schemas"]["IssuesJqlMetaDataBean"]; + }; + IssuesUpdateBean: { + issueUpdates?: components["schemas"]["IssueUpdateDetails"][]; + [key: string]: unknown; + }; + /** @description The JQL queries to be converted. */ + JQLPersonalDataMigrationRequest: { + /** @description A list of queries with user identifiers. Maximum of 100 queries. */ + queryStrings?: string[]; + }; + /** @description JQL queries that contained users that could not be found */ + JQLQueryWithUnknownUsers: { + /** @description The converted query, with accountIDs instead of user identifiers, or 'unknown' for users that could not be found */ + convertedQuery?: string; + /** @description The original query, for reference */ + originalQuery?: string; + }; + /** @description Lists of JQL reference data. */ + JQLReferenceData: { + /** @description List of JQL query reserved words. */ + jqlReservedWords?: string[]; + /** @description List of fields usable in JQL queries. */ + visibleFieldNames?: components["schemas"]["FieldReferenceData"][]; + /** @description List of functions usable in JQL queries. */ + visibleFunctionNames?: components["schemas"]["FunctionReferenceData"][]; + }; + /** @description The JQL specifying the issues available in the evaluated Jira expression under the `issues` context variable. */ + JexpIssues: { + /** @description The JQL query that specifies the set of issues available in the Jira expression. */ + jql?: components["schemas"]["JexpJqlIssues"]; + }; + /** @description The JQL specifying the issues available in the evaluated Jira expression under the `issues` context variable. Not all issues returned by the JQL query are loaded, only those described by the `startAt` and `maxResults` properties. To determine whether it is necessary to iterate to ensure all the issues returned by the JQL query are evaluated, inspect `meta.issues.jql.count` in the response. */ + JexpJqlIssues: { + /** + * Format: int32 + * @description The maximum number of issues to return from the JQL query. Inspect `meta.issues.jql.maxResults` in the response to ensure the maximum value has not been exceeded. + */ + maxResults?: number; + /** @description The JQL query. */ + query?: string; + /** + * Format: int64 + * @description The index of the first issue to return from the JQL query. + */ + startAt?: number; + /** + * @description Determines how to validate the JQL query and treat the validation results. + * @default strict + * @enum {string} + */ + validation?: "strict" | "warn" | "none"; + }; + /** @description Details about the analysed Jira expression. */ + JiraExpressionAnalysis: { + complexity?: components["schemas"]["JiraExpressionComplexity"]; + /** @description A list of validation errors. Not included if the expression is valid. */ + errors?: components["schemas"]["JiraExpressionValidationError"][]; + /** @description The analysed expression. */ + expression: string; + /** @description EXPERIMENTAL. The inferred type of the expression. */ + type?: string; + /** @description Whether the expression is valid and the interpreter will evaluate it. Note that the expression may fail at runtime (for example, if it executes too many expensive operations). */ + valid: boolean; + }; + /** @description Details about the complexity of the analysed Jira expression. */ + JiraExpressionComplexity: { + /** + * @description Information that can be used to determine how many [expensive operations](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#expensive-operations) the evaluation of the expression will perform. This information may be a formula or number. For example: + * + * * `issues.map(i => i.comments)` performs as many expensive operations as there are issues on the issues list. So this parameter returns `N`, where `N` is the size of issue list. + * * `new Issue(10010).comments` gets comments for one issue, so its complexity is `2` (`1` to retrieve issue 10010 from the database plus `1` to get its comments). + */ + expensiveOperations: string; + /** @description Variables used in the formula, mapped to the parts of the expression they refer to. */ + variables?: { + [key: string]: string; + }; + }; + JiraExpressionEvalContextBean: { + /** + * Format: int64 + * @description The ID of the board that is available under the `board` variable when evaluating the expression. + */ + board?: number; + /** + * @description Custom context variables and their types. 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. + */ + custom?: components["schemas"]["CustomContextVariable"][]; + /** + * Format: int64 + * @description The ID of the customer request that is available under the `customerRequest` variable when evaluating the expression. This is the same as the ID of the underlying Jira issue, but the customer request context variable will have a different type. + */ + customerRequest?: number; + /** @description The issue that is available under the `issue` variable when evaluating the expression. */ + issue?: components["schemas"]["IdOrKeyBean"]; + /** @description The collection of issues that is available under the `issues` variable when evaluating the expression. */ + issues?: components["schemas"]["JexpIssues"]; + /** @description The project that is available under the `project` variable when evaluating the expression. */ + project?: components["schemas"]["IdOrKeyBean"]; + /** + * Format: int64 + * @description The ID of the service desk that is available under the `serviceDesk` variable when evaluating the expression. + */ + serviceDesk?: number; + /** + * Format: int64 + * @description The ID of the sprint that is available under the `sprint` variable when evaluating the expression. + */ + sprint?: number; + }; + JiraExpressionEvalRequestBean: { + /** @description The context in which the Jira expression is evaluated. */ + context?: components["schemas"]["JiraExpressionEvalContextBean"]; + /** + * @description The Jira expression to evaluate. + * @example { key: issue.key, type: issue.issueType.name, links: issue.links.map(link => link.linkedIssue.id) } + */ + expression: string; + }; + JiraExpressionEvaluationMetaDataBean: { + /** @description Contains information about the expression complexity. For example, the number of steps it took to evaluate the expression. */ + complexity?: components["schemas"]["JiraExpressionsComplexityBean"]; + /** @description Contains information about the `issues` variable in the context. For example, is the issues were loaded with JQL, information about the page will be included here. */ + issues?: components["schemas"]["IssuesMetaBean"]; + }; + /** @description Details of Jira expressions for analysis. */ + JiraExpressionForAnalysis: { + /** @description Context variables and their types. The type checker assumes that [common context variables](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#context-variables), such as `issue` or `project`, are available in context and sets their type. Use this property to override the default types or provide details of new variables. */ + contextVariables?: { + [key: string]: string; + }; + /** + * @description The list of Jira expressions to analyse. + * @example issues.map(issue => issue.properties['property_key']) + */ + expressions: string[]; + }; + /** @description The result of evaluating a Jira expression. */ + JiraExpressionResult: { + /** @description Contains various characteristics of the performed expression evaluation. */ + meta?: components["schemas"]["JiraExpressionEvaluationMetaDataBean"]; + /** @description The value of the evaluated expression. It may be a primitive JSON value or a Jira REST API object. (Some expressions do not produce any meaningful results—for example, an expression that returns a lambda function—if that's the case a simple string representation is returned. These string representations should not be relied upon and may change without notice.) */ + value: unknown; + }; + /** + * @description Details about syntax and type errors. The error details apply to the entire expression, unless the object includes: + * + * * `line` and `column` + * * `expression` + */ + JiraExpressionValidationError: { + /** + * Format: int32 + * @description The text column in which the error occurred. + */ + column?: number; + /** @description The part of the expression in which the error occurred. */ + expression?: string; + /** + * Format: int32 + * @description The text line in which the error occurred. + */ + line?: number; + /** + * @description Details about the error. + * @example !, -, typeof, (, IDENTIFIER, null, true, false, NUMBER, STRING, TEMPLATE_LITERAL, new, [ or { expected, > encountered. + */ + message: string; + /** + * @description The error type. + * @enum {string} + */ + type: "syntax" | "type" | "other"; + }; + /** @description Details about the analysed Jira expression. */ + JiraExpressionsAnalysis: { + /** @description The results of Jira expressions analysis. */ + results: components["schemas"]["JiraExpressionAnalysis"][]; + }; + JiraExpressionsComplexityBean: { + /** @description The number of Jira REST API beans returned in the response. */ + beans: components["schemas"]["JiraExpressionsComplexityValueBean"]; + /** @description The number of expensive operations executed while evaluating the expression. Expensive operations are those that load additional data, such as entity properties, comments, or custom fields. */ + expensiveOperations: components["schemas"]["JiraExpressionsComplexityValueBean"]; + /** @description The number of primitive values returned in the response. */ + primitiveValues: components["schemas"]["JiraExpressionsComplexityValueBean"]; + /** @description The number of steps it took to evaluate the expression, where a step is a high-level operation performed by the expression. A step is an operation such as arithmetic, accessing a property, accessing a context variable, or calling a function. */ + steps: components["schemas"]["JiraExpressionsComplexityValueBean"]; + }; + JiraExpressionsComplexityValueBean: { + /** + * Format: int32 + * @description The maximum allowed complexity. The evaluation will fail if this value is exceeded. + */ + limit: number; + /** + * Format: int32 + * @description The complexity value of the current expression. + */ + value: number; + }; + /** @description Details of a status. */ + JiraStatus: { + /** @description The description of the status. */ + description?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The name of the status. */ + name?: string; + scope?: components["schemas"]["StatusScope"]; + /** + * @description The category of the status. + * @enum {string} + */ + statusCategory?: "TODO" | "IN_PROGRESS" | "DONE"; + /** @description Projects and issue types where the status is used. Only available if the `usages` expand is requested. */ + usages?: components["schemas"]["ProjectIssueTypes"][]; + /** @description The workflows that use this status. Only available if the `workflowUsages` expand is requested. */ + workflowUsages?: components["schemas"]["WorkflowUsages"][]; + }; + /** @description Details of a workflow. */ + JiraWorkflow: { + /** @description The description of the workflow. */ + description?: string; + /** @description The ID of the workflow. */ + id?: string; + /** @description Indicates if the workflow can be edited. */ + isEditable?: boolean; + /** @description The name of the workflow. */ + name?: string; + scope?: components["schemas"]["WorkflowScope"]; + startPointLayout?: components["schemas"]["WorkflowLayout"]; + /** @description The statuses referenced in this workflow. */ + statuses?: components["schemas"]["WorkflowReferenceStatus"][]; + /** @description If there is a current [asynchronous task](#async-operations) operation for this workflow. */ + taskId?: string | null; + /** @description The transitions of the workflow. */ + transitions?: components["schemas"]["WorkflowTransitions"][]; + /** @description Use the optional `workflows.usages` expand to get additional information about the projects and issue types associated with the requested workflows. */ + usages?: components["schemas"]["ProjectIssueTypes"][]; + version?: components["schemas"]["DocumentVersion"]; + }; + /** @description Details of a status. */ + JiraWorkflowStatus: { + /** @description The description of the status. */ + description?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The name of the status. */ + name?: string; + scope?: components["schemas"]["WorkflowScope"]; + /** + * @description The category of the status. + * @enum {string} + */ + statusCategory?: "TODO" | "IN_PROGRESS" | "DONE"; + /** @description The reference of the status. */ + statusReference?: string; + /** @description The `statuses.usages` expand is an optional parameter that can be used when reading and updating statuses in Jira. It provides additional information about the projects and issue types associated with the requested statuses. */ + usages?: components["schemas"]["ProjectIssueTypes"][]; + }; + /** @description Jql function precomputation. */ + JqlFunctionPrecomputationBean: { + /** @description The list of arguments function was invoked with. */ + arguments?: readonly string[]; + /** + * Format: date-time + * @description The timestamp of the precomputation creation. + */ + created?: string; + /** @description The error message to be displayed to the user. */ + error?: string; + /** @description The field the function was executed against. */ + field?: string; + /** @description The function key. */ + functionKey?: string; + /** @description The name of the function. */ + functionName?: string; + /** @description The id of the precomputation. */ + id?: string; + /** @description The operator in context of which function was executed. */ + operator?: string; + /** + * Format: date-time + * @description The timestamp of the precomputation last update. + */ + updated?: string; + /** + * Format: date-time + * @description The timestamp of the precomputation last usage. + */ + used?: string; + /** @description The JQL fragment stored as the precomputation. */ + value?: string; + }; + /** @description Precomputation id and its new value. */ + JqlFunctionPrecomputationUpdateBean: { + /** @description The error message to be displayed to the user if the given function clause is no longer valid during recalculation of the precomputation. */ + error?: string; + /** @description The id of the precomputation to update. */ + id: string; + /** @description The new value of the precomputation. */ + value?: string; + }; + /** @description List of pairs (id and value) for precomputation updates. */ + JqlFunctionPrecomputationUpdateRequestBean: { + values?: components["schemas"]["JqlFunctionPrecomputationUpdateBean"][]; + }; + /** @description A list of JQL queries to parse. */ + JqlQueriesToParse: { + /** @description A list of queries to parse. */ + queries: string[]; + }; + /** @description The list of JQL queries to sanitize for the given account IDs. */ + JqlQueriesToSanitize: { + /** @description The list of JQL queries to sanitize. Must contain unique values. Maximum of 20 queries. */ + queries: components["schemas"]["JqlQueryToSanitize"][]; + }; + /** @description A parsed JQL query. */ + JqlQuery: { + orderBy?: components["schemas"]["JqlQueryOrderByClause"]; + where?: components["schemas"]["JqlQueryClause"]; + }; + /** @description A JQL query clause. */ + JqlQueryClause: + | components["schemas"]["CompoundClause"] + | components["schemas"]["FieldValueClause"] + | components["schemas"]["FieldWasClause"] + | components["schemas"]["FieldChangedClause"]; + /** @description Details of an operand in a JQL clause. */ + JqlQueryClauseOperand: + | components["schemas"]["ListOperand"] + | components["schemas"]["ValueOperand"] + | components["schemas"]["FunctionOperand"] + | components["schemas"]["KeywordOperand"]; + /** @description A time predicate for a temporal JQL clause. */ + JqlQueryClauseTimePredicate: { + operand: components["schemas"]["JqlQueryClauseOperand"]; + /** + * @description The operator between the field and the operand. + * @enum {string} + */ + operator: "before" | "after" | "from" | "to" | "on" | "during" | "by"; + }; + /** @description A field used in a JQL query. See [Advanced searching - fields reference](https://confluence.atlassian.com/x/dAiiLQ) for more information about fields in JQL queries. */ + JqlQueryField: { + /** @description The encoded name of the field, which can be used directly in a JQL query. */ + encodedName?: string; + /** @description The name of the field. */ + name: string; + /** @description When the field refers to a value in an entity property, details of the entity property value. */ + property?: components["schemas"]["JqlQueryFieldEntityProperty"][]; + }; + /** @description Details of an entity property. */ + JqlQueryFieldEntityProperty: { + /** + * @description The object on which the property is set. + * @example issue + */ + entity: string; + /** + * @description The key of the property. + * @example stats + */ + key: string; + /** + * @description The path in the property value to query. + * @example comments.count + */ + path: string; + /** + * @description The type of the property value extraction. Not available if the extraction for the property is not registered on the instance with the [Entity property](https://developer.atlassian.com/cloud/jira/platform/modules/entity-property/) module. + * @example number + * @enum {string} + */ + type?: "number" | "string" | "text" | "date" | "user"; + }; + /** @description Details of the order-by JQL clause. */ + JqlQueryOrderByClause: { + /** @description The list of order-by clause fields and their ordering directives. */ + fields: components["schemas"]["JqlQueryOrderByClauseElement"][]; + }; + /** @description An element of the order-by JQL clause. */ + JqlQueryOrderByClauseElement: { + /** + * @description The direction in which to order the results. + * @enum {string} + */ + direction?: "asc" | "desc"; + field: components["schemas"]["JqlQueryField"]; + }; + /** @description The JQL query to sanitize for the account ID. If the account ID is null, sanitizing is performed for an anonymous user. */ + JqlQueryToSanitize: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string | null; + /** @description The query to sanitize. */ + query: string; + }; + /** @description An operand that can be part of a list operand. */ + JqlQueryUnitaryOperand: + | components["schemas"]["ValueOperand"] + | components["schemas"]["FunctionOperand"] + | components["schemas"]["KeywordOperand"]; + /** @description A JSON object with custom content. */ + JsonContextVariable: { + /** @description Type of custom context variable. */ + type: string; + /** @description A JSON object containing custom content. */ + value?: Record; + }; + JsonNode: { + array?: boolean; + bigDecimal?: boolean; + bigInteger?: boolean; + bigIntegerValue?: number; + binary?: boolean; + binaryValue?: string[]; + boolean?: boolean; + booleanValue?: boolean; + containerNode?: boolean; + decimalValue?: number; + double?: boolean; + /** Format: double */ + doubleValue?: number; + elements?: Record; + fieldNames?: Record; + fields?: Record; + floatingPointNumber?: boolean; + int?: boolean; + /** Format: int32 */ + intValue?: number; + integralNumber?: boolean; + long?: boolean; + /** Format: int64 */ + longValue?: number; + missingNode?: boolean; + null?: boolean; + number?: boolean; + /** @enum {string} */ + numberType?: "INT" | "LONG" | "BIG_INTEGER" | "FLOAT" | "DOUBLE" | "BIG_DECIMAL"; + numberValue?: number; + object?: boolean; + pojo?: boolean; + textValue?: string; + textual?: boolean; + valueAsBoolean?: boolean; + /** Format: double */ + valueAsDouble?: number; + /** Format: int32 */ + valueAsInt?: number; + /** Format: int64 */ + valueAsLong?: number; + valueAsText?: string; + valueNode?: boolean; + }; + /** @description The schema of a field. */ + JsonTypeBean: { + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description The data type of the field. */ + type: string; + }; + /** @description An operand that is a JQL keyword. See [Advanced searching - keywords reference](https://confluence.atlassian.com/jiracorecloud/advanced-searching-keywords-reference-765593717.html#Advancedsearching-keywordsreference-EMPTYEMPTY) for more information about operand keywords. */ + KeywordOperand: { + /** + * @description The keyword that is the operand value. + * @enum {string} + */ + keyword: "empty"; + }; + LegacyJackson1ListAttachment: components["schemas"]["Attachment"][]; + LegacyJackson1ListColumnItem: components["schemas"]["ColumnItem"][]; + LegacyJackson1ListIssueEvent: components["schemas"]["IssueEvent"][]; + LegacyJackson1ListIssueTypeWithStatus: components["schemas"]["IssueTypeWithStatus"][]; + LegacyJackson1ListProject: components["schemas"]["Project"][]; + LegacyJackson1ListProjectComponent: components["schemas"]["ProjectComponent"][]; + LegacyJackson1ListProjectRoleDetails: components["schemas"]["ProjectRoleDetails"][]; + LegacyJackson1ListProjectType: components["schemas"]["ProjectType"][]; + LegacyJackson1ListUserMigrationBean: components["schemas"]["UserMigrationBean"][]; + LegacyJackson1ListVersion: components["schemas"]["Version"][]; + LegacyJackson1ListWorklog: components["schemas"]["Worklog"][]; + /** @description Details about a license for the Jira instance. */ + License: { + /** @description The applications under this license. */ + applications: readonly components["schemas"]["LicensedApplication"][]; + }; + /** @description A metric that provides insight into the active licence details */ + LicenseMetric: { + /** @description The key of a specific license metric. */ + key?: string; + /** @description The calculated value of a licence metric linked to the key. An example licence metric is the approximate number of user accounts. */ + value?: string; + }; + /** @description Details about a licensed Jira application. */ + LicensedApplication: { + /** @description The ID of the application. */ + id: string; + /** + * @description The licensing plan. + * @enum {string} + */ + plan: "UNLICENSED" | "FREE" | "PAID"; + }; + /** @description Details a link group, which defines issue operations. */ + LinkGroup: { + groups?: components["schemas"]["LinkGroup"][]; + header?: components["schemas"]["SimpleLink"]; + id?: string; + links?: components["schemas"]["SimpleLink"][]; + styleClass?: string; + /** Format: int32 */ + weight?: number; + }; + LinkIssueRequestJsonBean: { + comment?: components["schemas"]["Comment"]; + inwardIssue: components["schemas"]["LinkedIssue"]; + outwardIssue: components["schemas"]["LinkedIssue"]; + type: components["schemas"]["IssueLinkType"]; + }; + /** @description The ID or key of a linked issue. */ + LinkedIssue: { + /** @description The fields associated with the issue. */ + fields?: components["schemas"]["Fields"]; + /** @description The ID of an issue. Required if `key` isn't provided. */ + id?: string; + /** @description The key of an issue. Required if `id` isn't provided. */ + key?: string; + /** + * Format: uri + * @description The URL of the issue. + */ + self?: string; + }; + /** @description An operand that is a list of values. */ + ListOperand: { + /** @description Encoded operand, which can be used directly in a JQL query. */ + encodedOperand?: string; + /** @description The list of operand values. */ + values: components["schemas"]["JqlQueryUnitaryOperand"][]; + }; + ListWrapperCallbackApplicationRole: Record; + ListWrapperCallbackGroupName: Record; + /** @description Details of a locale. */ + Locale: { + /** @description The locale code. The Java the locale format is used: a two character language code (ISO 639), an underscore, and two letter country code (ISO 3166). For example, en\_US represents a locale of English (United States). Required on create. */ + locale?: string; + }; + /** @description Overrides, for the selected issue types, any status mappings provided in `statusMappingsByWorkflows`. Status mappings are required when the new workflow for an issue type doesn't contain all statuses that the old workflow has. Status mappings can be provided by a combination of `statusMappingsByWorkflows` and `statusMappingsByIssueTypeOverride`. */ + MappingsByIssueTypeOverride: { + /** @description The ID of the issue type for this mapping. */ + issueTypeId: string; + /** @description The list of status mappings. */ + statusMappings: components["schemas"]["WorkflowAssociationStatusMapping"][]; + }; + /** @description The status mappings by workflows. Status mappings are required when the new workflow for an issue type doesn't contain all statuses that the old workflow has. Status mappings can be provided by a combination of `statusMappingsByWorkflows` and `statusMappingsByIssueTypeOverride`. */ + MappingsByWorkflow: { + /** @description The ID of the new workflow. */ + newWorkflowId: string; + /** @description The ID of the old workflow. */ + oldWorkflowId: string; + /** @description The list of status mappings. */ + statusMappings: components["schemas"]["WorkflowAssociationStatusMapping"][]; + }; + MoveFieldBean: { + /** + * Format: uri + * @description The ID of the screen tab field after which to place the moved screen tab field. Required if `position` isn't provided. + */ + after?: string; + /** + * @description The named position to which the screen tab field should be moved. Required if `after` isn't provided. + * @enum {string} + */ + position?: "Earlier" | "Later" | "First" | "Last"; + }; + /** @description A list of issues and their respective properties to set or update. See [Entity properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/) for more information. */ + MultiIssueEntityProperties: { + /** @description A list of issue IDs and their respective properties. */ + issues?: components["schemas"]["IssueEntityPropertiesForMultiUpdate"][]; + }; + MultipartFile: { + bytes?: string[]; + contentType?: string; + empty?: boolean; + inputStream?: Record; + name?: string; + originalFilename?: string; + resource?: components["schemas"]["Resource"]; + /** Format: int64 */ + size?: number; + }; + /** @description A custom field and its new value with a list of issue to update. */ + MultipleCustomFieldValuesUpdate: { + /** @description The ID or key of the custom field. For example, `customfield_10010`. */ + customField: string; + /** @description The list of issue IDs. */ + issueIds: number[]; + /** + * @description The value for the custom field. The value must be compatible with the [custom field type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/#data-types) as follows: + * + * * `string` the value must be a string. + * * `number` the value must be a number. + * * `datetime` the value must be a string that represents a date in the ISO format or the simplified extended ISO format. For example, `"2023-01-18T12:00:00-03:00"` or `"2023-01-18T12:00:00.000Z"`. However, the milliseconds part is ignored. + * * `user` the value must be an object that contains the `accountId` field. + * * `group` the value must be an object that contains the group `name` or `groupId` field. Because group names can change, we recommend using `groupId`. + * + * A list of appropriate values must be provided if the field is of the `list` [collection type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/#collection-types). + */ + value: unknown; + }; + /** @description List of updates for a custom fields. */ + MultipleCustomFieldValuesUpdateDetails: { + updates?: components["schemas"]["MultipleCustomFieldValuesUpdate"][]; + }; + NestedResponse: { + errorCollection?: components["schemas"]["ErrorCollection"]; + /** Format: int32 */ + status?: number; + warningCollection?: components["schemas"]["WarningCollection"]; + }; + /** @description The user details. */ + NewUserDetails: { + /** @description Deprecated, do not use. */ + applicationKeys?: string[]; + /** @description This property is no longer available. If the user has an Atlassian account, their display name is not changed. If the user does not have an Atlassian account, they are sent an email asking them set up an account. */ + displayName?: string; + /** @description The email address for the user. */ + emailAddress: string; + /** @description This property is no longer available. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description This property is no longer available. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description This property is no longer available. If the user has an Atlassian account, their password is not changed. If the user does not have an Atlassian account, they are sent an email asking them set up an account. */ + password?: string; + /** @description Products the new user has access to. Valid products are: jira-core, jira-servicedesk, jira-product-discovery, jira-software. If left empty, the user will get default product access. To create a user without product access, set this field to be an empty array. */ + products?: string[]; + /** @description The URL of the user. */ + self?: string; + [key: string]: unknown; + }; + /** @description Details about a notification. */ + Notification: { + /** @description The HTML body of the email notification for the issue. */ + htmlBody?: string; + /** @description Restricts the notifications to users with the specified permissions. */ + restrict?: components["schemas"]["NotificationRecipientsRestrictions"]; + /** @description The subject of the email notification for the issue. If this is not specified, then the subject is set to the issue key and summary. */ + subject?: string; + /** @description The plain text body of the email notification for the issue. */ + textBody?: string; + /** @description The recipients of the email notification for the issue. */ + to?: components["schemas"]["NotificationRecipients"]; + [key: string]: unknown; + }; + /** @description Details about a notification event. */ + NotificationEvent: { + /** @description The description of the event. */ + description?: string; + /** + * Format: int64 + * @description The ID of the event. The event can be a [Jira system event](https://confluence.atlassian.com/x/8YdKLg#Creatinganotificationscheme-eventsEvents) or a [custom event](https://confluence.atlassian.com/x/AIlKLg). + */ + id?: number; + /** @description The name of the event. */ + name?: string; + /** @description The template of the event. Only custom events configured by Jira administrators have template. */ + templateEvent?: components["schemas"]["NotificationEvent"]; + }; + /** @description Details of the users and groups to receive the notification. */ + NotificationRecipients: { + /** @description Whether the notification should be sent to the issue's assignees. */ + assignee?: boolean; + /** @description List of groupIds to receive the notification. */ + groupIds?: string[]; + /** @description List of groups to receive the notification. */ + groups?: components["schemas"]["GroupName"][]; + /** @description Whether the notification should be sent to the issue's reporter. */ + reporter?: boolean; + /** @description List of users to receive the notification. */ + users?: components["schemas"]["UserDetails"][]; + /** @description Whether the notification should be sent to the issue's voters. */ + voters?: boolean; + /** @description Whether the notification should be sent to the issue's watchers. */ + watchers?: boolean; + [key: string]: unknown; + }; + /** @description Details of the group membership or permissions needed to receive the notification. */ + NotificationRecipientsRestrictions: { + /** @description List of groupId memberships required to receive the notification. */ + groupIds?: string[]; + /** @description List of group memberships required to receive the notification. */ + groups?: components["schemas"]["GroupName"][]; + /** @description List of permissions required to receive the notification. */ + permissions?: components["schemas"]["RestrictedPermission"][]; + }; + /** @description Details about a notification scheme. */ + NotificationScheme: { + /** @description The description of the notification scheme. */ + description?: string; + /** @description Expand options that include additional notification scheme details in the response. */ + expand?: string; + /** + * Format: int64 + * @description The ID of the notification scheme. + */ + id?: number; + /** @description The name of the notification scheme. */ + name?: string; + /** @description The notification events and associated recipients. */ + notificationSchemeEvents?: components["schemas"]["NotificationSchemeEvent"][]; + /** @description The list of project IDs associated with the notification scheme. */ + projects?: number[]; + /** @description The scope of the notification scheme. */ + scope?: components["schemas"]["Scope"]; + self?: string; + }; + NotificationSchemeAndProjectMappingJsonBean: { + notificationSchemeId?: string; + projectId?: string; + }; + /** @description Details about a notification scheme event. */ + NotificationSchemeEvent: { + event?: components["schemas"]["NotificationEvent"]; + notifications?: components["schemas"]["EventNotification"][]; + }; + /** @description Details of a notification scheme event. */ + NotificationSchemeEventDetails: { + /** @description The ID of the event. */ + event: components["schemas"]["NotificationSchemeEventTypeId"]; + /** @description The list of notifications mapped to a specified event. */ + notifications: components["schemas"]["NotificationSchemeNotificationDetails"][]; + [key: string]: unknown; + }; + /** @description The ID of an event that is being mapped to notifications. */ + NotificationSchemeEventTypeId: { + /** @description The ID of the notification scheme event. */ + id: string; + [key: string]: unknown; + }; + /** @description The ID of a notification scheme. */ + NotificationSchemeId: { + /** @description The ID of a notification scheme. */ + id: string; + [key: string]: unknown; + }; + /** @description Details of a notification within a notification scheme. */ + NotificationSchemeNotificationDetails: { + /** @description The notification type, e.g `CurrentAssignee`, `Group`, `EmailAddress`. */ + notificationType: string; + /** @description The value corresponding to the specified notification type. */ + parameter?: string; + [key: string]: unknown; + }; + OldToNewSecurityLevelMappingsBean: { + /** @description The new issue security level ID. Providing null will clear the assigned old level from issues. */ + newLevelId: string; + /** @description The old issue security level ID. Providing null will remap all issues without any assigned levels. */ + oldLevelId: string; + }; + /** + * @example { + * "message": "An example message.", + * "statusCode": 200 + * } + */ + OperationMessage: { + /** @description The human-readable message that describes the result. */ + message: string; + /** @description The status code of the response. */ + statusCode: number; + }; + /** @description Details of the operations that can be performed on the issue. */ + Operations: { + /** @description Details of the link groups defining issue operations. */ + linkGroups?: readonly components["schemas"]["LinkGroup"][]; + [key: string]: unknown; + }; + /** @description An ordered list of custom field option IDs and information on where to move them. */ + OrderOfCustomFieldOptions: { + /** @description The ID of the custom field option or cascading option to place the moved options after. Required if `position` isn't provided. */ + after?: string; + /** @description A list of IDs of custom field options to move. The order of the custom field option IDs in the list is the order they are given after the move. The list must contain custom field options or cascading options, but not both. */ + customFieldOptionIds: string[]; + /** + * @description The position the custom field options should be moved to. Required if `after` isn't provided. + * @enum {string} + */ + position?: "First" | "Last"; + }; + /** @description An ordered list of issue type IDs and information about where to move them. */ + OrderOfIssueTypes: { + /** @description The ID of the issue type to place the moved issue types after. Required if `position` isn't provided. */ + after?: string; + /** @description A list of the issue type IDs to move. The order of the issue type IDs in the list is the order they are given after the move. */ + issueTypeIds: string[]; + /** + * @description The position the issue types should be moved to. Required if `after` isn't provided. + * @enum {string} + */ + position?: "First" | "Last"; + }; + /** @description A page of items. */ + PageBeanChangelog: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Changelog"][]; + }; + /** @description A page of items. */ + PageBeanComment: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Comment"][]; + }; + /** @description A page of items. */ + PageBeanComponentWithIssueCount: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ComponentWithIssueCount"][]; + }; + /** @description A page of items. */ + PageBeanContext: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Context"][]; + }; + /** @description A page of items. */ + PageBeanContextForProjectAndIssueType: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ContextForProjectAndIssueType"][]; + }; + /** @description A page of items. */ + PageBeanContextualConfiguration: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ContextualConfiguration"][]; + }; + /** @description A page of items. */ + PageBeanCustomFieldContext: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["CustomFieldContext"][]; + }; + /** @description A page of items. */ + PageBeanCustomFieldContextDefaultValue: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["CustomFieldContextDefaultValue"][]; + }; + /** @description A page of items. */ + PageBeanCustomFieldContextOption: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["CustomFieldContextOption"][]; + }; + /** @description A page of items. */ + PageBeanCustomFieldContextProjectMapping: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["CustomFieldContextProjectMapping"][]; + }; + /** @description A page of items. */ + PageBeanDashboard: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Dashboard"][]; + }; + /** @description A page of items. */ + PageBeanField: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Field"][]; + }; + /** @description A page of items. */ + PageBeanFieldConfigurationDetails: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["FieldConfigurationDetails"][]; + }; + /** @description A page of items. */ + PageBeanFieldConfigurationIssueTypeItem: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["FieldConfigurationIssueTypeItem"][]; + }; + /** @description A page of items. */ + PageBeanFieldConfigurationItem: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["FieldConfigurationItem"][]; + }; + /** @description A page of items. */ + PageBeanFieldConfigurationScheme: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["FieldConfigurationScheme"][]; + }; + /** @description A page of items. */ + PageBeanFieldConfigurationSchemeProjects: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["FieldConfigurationSchemeProjects"][]; + }; + /** @description A page of items. */ + PageBeanFilterDetails: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["FilterDetails"][]; + }; + /** @description A page of items. */ + PageBeanGroupDetails: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["GroupDetails"][]; + }; + /** @description A page of items. */ + PageBeanIssueFieldOption: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueFieldOption"][]; + }; + /** @description A page of items. */ + PageBeanIssueSecurityLevelMember: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueSecurityLevelMember"][]; + }; + /** @description A page of items. */ + PageBeanIssueSecuritySchemeToProjectMapping: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueSecuritySchemeToProjectMapping"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeScheme: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeScheme"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeSchemeMapping: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeSchemeMapping"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeSchemeProjects: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeSchemeProjects"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeScreenScheme: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeScreenScheme"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeScreenSchemeItem: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeScreenSchemeItem"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeScreenSchemesProjects: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeScreenSchemesProjects"][]; + }; + /** @description A page of items. */ + PageBeanIssueTypeToContextMapping: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["IssueTypeToContextMapping"][]; + }; + /** @description A page of items. */ + PageBeanJqlFunctionPrecomputationBean: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["JqlFunctionPrecomputationBean"][]; + }; + /** @description A page of items. */ + PageBeanNotificationScheme: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["NotificationScheme"][]; + }; + /** @description A page of items. */ + PageBeanNotificationSchemeAndProjectMappingJsonBean: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["NotificationSchemeAndProjectMappingJsonBean"][]; + }; + /** @description A page of items. */ + PageBeanPriority: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Priority"][]; + }; + /** @description A page of items. */ + PageBeanProject: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Project"][]; + }; + /** @description A page of items. */ + PageBeanProjectDetails: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ProjectDetails"][]; + }; + /** @description A page of items. */ + PageBeanResolutionJsonBean: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ResolutionJsonBean"][]; + }; + /** @description A page of items. */ + PageBeanScreen: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Screen"][]; + }; + /** @description A page of items. */ + PageBeanScreenScheme: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ScreenScheme"][]; + }; + /** @description A page of items. */ + PageBeanScreenWithTab: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["ScreenWithTab"][]; + }; + /** @description A page of items. */ + PageBeanSecurityLevel: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["SecurityLevel"][]; + }; + /** @description A page of items. */ + PageBeanSecurityLevelMember: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["SecurityLevelMember"][]; + }; + /** @description A page of items. */ + PageBeanSecuritySchemeWithProjects: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["SecuritySchemeWithProjects"][]; + }; + /** @description A page of items. */ + PageBeanString: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly string[]; + }; + /** @description A page of items. */ + PageBeanUiModificationDetails: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["UiModificationDetails"][]; + }; + /** @description A page of items. */ + PageBeanUser: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["User"][]; + }; + /** @description A page of items. */ + PageBeanUserDetails: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["UserDetails"][]; + }; + /** @description A page of items. */ + PageBeanUserKey: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["UserKey"][]; + }; + /** @description A page of items. */ + PageBeanVersion: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Version"][]; + }; + /** @description A page of items. */ + PageBeanWebhook: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Webhook"][]; + }; + /** @description A page of items. */ + PageBeanWorkflow: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["Workflow"][]; + }; + /** @description A page of items. */ + PageBeanWorkflowScheme: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["WorkflowScheme"][]; + }; + /** @description A page of items. */ + PageBeanWorkflowTransitionRules: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: uri + * @description If there is another page of results, the URL of the next page. + */ + nextPage?: string; + /** + * Format: uri + * @description The URL of the page. + */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + /** @description The list of items. */ + values?: readonly components["schemas"]["WorkflowTransitionRules"][]; + }; + /** @description A page of changelogs. */ + PageOfChangelogs: { + /** @description The list of changelogs. */ + histories?: readonly components["schemas"]["Changelog"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + }; + /** @description A page of comments. */ + PageOfComments: { + /** @description The list of comments. */ + comments?: readonly components["schemas"]["Comment"][]; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The number of items returned. + */ + total?: number; + [key: string]: unknown; + }; + /** @description A page of CreateMetaIssueType with Field. */ + PageOfCreateMetaIssueTypeWithField: { + /** @description The collection of FieldCreateMetaBeans. */ + fields?: readonly components["schemas"]["FieldCreateMetadata"][]; + /** + * Format: int32 + * @description The maximum number of items to return per page. + */ + maxResults?: number; + results?: components["schemas"]["FieldCreateMetadata"][]; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The total number of items in all pages. + */ + total?: number; + [key: string]: unknown; + }; + /** @description A page of CreateMetaIssueTypes. */ + PageOfCreateMetaIssueTypes: { + createMetaIssueType?: components["schemas"]["IssueTypeIssueCreateMetadata"][]; + /** @description The list of CreateMetaIssueType. */ + issueTypes?: readonly components["schemas"]["IssueTypeIssueCreateMetadata"][]; + /** + * Format: int32 + * @description The maximum number of items to return per page. + */ + maxResults?: number; + /** + * Format: int64 + * @description The index of the first item returned. + */ + startAt?: number; + /** + * Format: int64 + * @description The total number of items in all pages. + */ + total?: number; + [key: string]: unknown; + }; + /** @description A page containing dashboard details. */ + PageOfDashboards: { + /** @description List of dashboards. */ + dashboards?: readonly components["schemas"]["Dashboard"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** @description The URL of the next page of results, if any. */ + next?: string; + /** @description The URL of the previous page of results, if any. */ + prev?: string; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + }; + PageOfStatuses: { + /** @description Whether this is the last page. */ + isLast?: boolean; + /** + * Format: int32 + * @description The maximum number of items that could be returned. + */ + maxResults?: number; + /** @description The URL of the next page of results, if any. */ + nextPage?: string; + /** @description The URL of this page. */ + self?: string; + /** + * Format: int64 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int64 + * @description Number of items that satisfy the search. + */ + total?: number; + /** @description The list of items. */ + values?: components["schemas"]["JiraStatus"][]; + }; + /** @description Paginated list of worklog details */ + PageOfWorklogs: { + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + /** @description List of worklogs. */ + worklogs?: readonly components["schemas"]["Worklog"][]; + [key: string]: unknown; + }; + /** @description A paged list. To access additional details append `[start-index:end-index]` to the expand request. For example, `?expand=sharedUsers[10:40]` returns a list starting at item 10 and finishing at item 40. */ + PagedListUserDetailsApplicationUser: { + /** + * Format: int32 + * @description The index of the last item returned on the page. + */ + "end-index"?: number; + /** @description The list of items. */ + items?: readonly components["schemas"]["UserDetails"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + "max-results"?: number; + /** + * Format: int32 + * @description The number of items on the page. + */ + size?: number; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + "start-index"?: number; + }; + PaginatedResponseComment: { + /** Format: int32 */ + maxResults?: number; + results?: components["schemas"]["Comment"][]; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + }; + PaginatedResponseFieldCreateMetadata: { + /** Format: int32 */ + maxResults?: number; + results?: components["schemas"]["FieldCreateMetadata"][]; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + }; + PaginatedResponseIssueTypeIssueCreateMetadata: { + /** Format: int32 */ + maxResults?: number; + results?: components["schemas"]["IssueTypeIssueCreateMetadata"][]; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + }; + /** @description A list of parsed JQL queries. */ + ParsedJqlQueries: { + /** @description A list of parsed JQL queries. */ + queries: components["schemas"]["ParsedJqlQuery"][]; + }; + /** @description Details of a parsed JQL query. */ + ParsedJqlQuery: { + /** @description The list of syntax or validation errors. */ + errors?: string[]; + /** @description The JQL query that was parsed and validated. */ + query: string; + /** @description The syntax tree of the query. Empty if the query was invalid. */ + structure?: components["schemas"]["JqlQuery"]; + }; + /** @description Details for permissions of shareable entities */ + PermissionDetails: { + /** @description The edit permissions for the shareable entities. */ + editPermissions: components["schemas"]["SharePermission"][]; + /** @description The share permissions for the shareable entities. */ + sharePermissions: components["schemas"]["SharePermission"][]; + }; + /** @description Details about a permission granted to a user or group. */ + PermissionGrant: { + /** @description The user or group being granted the permission. It consists of a `type`, a type-dependent `parameter` and a type-dependent `value`. See [Holder object](../api-group-permission-schemes/#holder-object) in *Get all permission schemes* for more information. */ + holder?: components["schemas"]["PermissionHolder"]; + /** + * Format: int64 + * @description The ID of the permission granted details. + */ + id?: number; + /** @description The permission to grant. This permission can be one of the built-in permissions or a custom permission added by an app. See [Built-in permissions](../api-group-permission-schemes/#built-in-permissions) in *Get all permission schemes* for more information about the built-in permissions. See the [project permission](https://developer.atlassian.com/cloud/jira/platform/modules/project-permission/) and [global permission](https://developer.atlassian.com/cloud/jira/platform/modules/global-permission/) module documentation for more information about custom permissions. */ + permission?: string; + /** + * Format: uri + * @description The URL of the permission granted details. + */ + self?: string; + [key: string]: unknown; + }; + /** @description List of permission grants. */ + PermissionGrants: { + /** @description Expand options that include additional permission grant details in the response. */ + expand?: string; + /** @description Permission grants list. */ + permissions?: readonly components["schemas"]["PermissionGrant"][]; + }; + /** @description Details of a user, group, field, or project role that holds a permission. See [Holder object](../api-group-permission-schemes/#holder-object) in *Get all permission schemes* for more information. */ + PermissionHolder: { + /** @description Expand options that include additional permission holder details in the response. */ + expand?: string; + /** @description As a group's name can change, use of `value` is recommended. The identifier associated withthe `type` value that defines the holder of the permission. */ + parameter?: string; + /** @description The type of permission holder. */ + type: string; + /** @description The identifier associated with the `type` value that defines the holder of the permission. */ + value?: string; + }; + /** @description Details of a permission scheme. */ + PermissionScheme: { + /** @description A description for the permission scheme. */ + description?: string; + /** @description The expand options available for the permission scheme. */ + expand?: string; + /** + * Format: int64 + * @description The ID of the permission scheme. + */ + id?: number; + /** @description The name of the permission scheme. Must be unique. */ + name: string; + /** @description The permission scheme to create or update. See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more information. */ + permissions?: components["schemas"]["PermissionGrant"][]; + /** @description The scope of the permission scheme. */ + scope?: components["schemas"]["Scope"]; + /** + * Format: uri + * @description The URL of the permission scheme. + */ + self?: string; + [key: string]: unknown; + }; + /** @description List of all permission schemes. */ + PermissionSchemes: { + /** @description Permission schemes list. */ + permissionSchemes?: readonly components["schemas"]["PermissionScheme"][]; + }; + /** @description Details about permissions. */ + Permissions: { + /** @description List of permissions. */ + permissions?: { + [key: string]: components["schemas"]["UserPermission"]; + }; + }; + PermissionsKeysBean: { + /** @description A list of permission keys. */ + permissions: string[]; + }; + /** @description A list of projects in which a user is granted permissions. */ + PermittedProjects: { + /** @description A list of projects. */ + projects?: readonly components["schemas"]["ProjectIdentifierBean"][]; + }; + /** @description An issue priority. */ + Priority: { + /** @description The description of the issue priority. */ + description?: string; + /** @description The URL of the icon for the issue priority. */ + iconUrl?: string; + /** @description The ID of the issue priority. */ + id?: string; + /** @description Whether this priority is the default. */ + isDefault?: boolean; + /** @description The name of the issue priority. */ + name?: string; + /** @description The URL of the issue priority. */ + self?: string; + /** @description The color used to indicate the issue priority. */ + statusColor?: string; + [key: string]: unknown; + }; + /** @description The ID of an issue priority. */ + PriorityId: { + /** @description The ID of the issue priority. */ + id: string; + [key: string]: unknown; + }; + /** @description Details about a project. */ + Project: { + /** @description Whether the project is archived. */ + archived?: boolean; + /** @description The user who archived the project. */ + archivedBy?: components["schemas"]["User"]; + /** + * Format: date-time + * @description The date when the project was archived. + */ + archivedDate?: string; + /** + * @description The default assignee when creating issues for this project. + * @enum {string} + */ + assigneeType?: "PROJECT_LEAD" | "UNASSIGNED"; + /** @description The URLs of the project's avatars. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description List of the components contained in the project. */ + components?: readonly components["schemas"]["ProjectComponent"][]; + /** @description Whether the project is marked as deleted. */ + deleted?: boolean; + /** @description The user who marked the project as deleted. */ + deletedBy?: components["schemas"]["User"]; + /** + * Format: date-time + * @description The date when the project was marked as deleted. + */ + deletedDate?: string; + /** @description A brief description of the project. */ + description?: string; + /** @description An email address associated with the project. */ + email?: string; + /** @description Expand options that include additional project details in the response. */ + expand?: string; + /** @description Whether the project is selected as a favorite. */ + favourite?: boolean; + /** @description The ID of the project. */ + id?: string; + /** @description Insights about the project. */ + insight?: components["schemas"]["ProjectInsight"]; + /** @description Whether the project is private from the user's perspective. This means the user can't see the project or any associated issues. */ + isPrivate?: boolean; + /** @description The issue type hierarchy for the project. */ + issueTypeHierarchy?: components["schemas"]["Hierarchy"]; + /** @description List of the issue types available in the project. */ + issueTypes?: readonly components["schemas"]["IssueTypeDetails"][]; + /** @description The key of the project. */ + key?: string; + /** @description The project landing page info. */ + landingPageInfo?: components["schemas"]["ProjectLandingPageInfo"]; + /** @description The username of the project lead. */ + lead?: components["schemas"]["User"]; + /** @description The name of the project. */ + name?: string; + /** @description User permissions on the project */ + permissions?: components["schemas"]["ProjectPermissions"]; + /** @description The category the project belongs to. */ + projectCategory?: components["schemas"]["ProjectCategory"]; + /** + * @description The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes) of the project. + * @enum {string} + */ + projectTypeKey?: "software" | "service_desk" | "business"; + /** @description Map of project properties */ + properties?: { + [key: string]: unknown; + }; + /** + * Format: date-time + * @description The date when the project is deleted permanently. + */ + retentionTillDate?: string; + /** @description The name and self URL for each role defined in the project. For more information, see [Create project role](#api-rest-api-3-role-post). */ + roles?: { + [key: string]: string; + }; + /** + * Format: uri + * @description The URL of the project details. + */ + self?: string; + /** @description Whether the project is simplified. */ + simplified?: boolean; + /** + * @description The type of the project. + * @enum {string} + */ + style?: "classic" | "next-gen"; + /** @description A link to information about this project, such as project documentation. */ + url?: string; + /** + * Format: uuid + * @description Unique ID for next-gen projects. + */ + uuid?: string; + /** @description The versions defined in the project. For more information, see [Create version](#api-rest-api-3-version-post). */ + versions?: readonly components["schemas"]["Version"][]; + }; + /** @description A project and issueType ID pair that identifies a status mapping. */ + ProjectAndIssueTypePair: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The ID of the project. */ + projectId: string; + }; + /** @description List of project avatars. */ + ProjectAvatars: { + /** @description List of avatars added to Jira. These avatars may be deleted. */ + custom?: readonly components["schemas"]["Avatar"][]; + /** @description List of avatars included with Jira. These avatars cannot be deleted. */ + system?: readonly components["schemas"]["Avatar"][]; + }; + /** @description A project category. */ + ProjectCategory: { + /** @description The description of the project category. */ + description?: string; + /** @description The ID of the project category. */ + id?: string; + /** @description The name of the project category. Required on create, optional on update. */ + name?: string; + /** + * Format: uri + * @description The URL of the project category. + */ + self?: string; + }; + /** @description Details about a project component. */ + ProjectComponent: { + /** @description Compass component's ID. Can't be updated. Not required for creating a Project Component. */ + ari?: string; + /** @description The details of the user associated with `assigneeType`, if any. See `realAssignee` for details of the user assigned to issues created with this component. */ + assignee?: components["schemas"]["User"]; + /** + * @description The nominal user type used to determine the assignee for issues created with this component. See `realAssigneeType` for details on how the type of the user, and hence the user, assigned to issues is determined. Can take the following values: + * + * * `PROJECT_LEAD` the assignee to any issues created with this component is nominally the lead for the project the component is in. + * * `COMPONENT_LEAD` the assignee to any issues created with this component is nominally the lead for the component. + * * `UNASSIGNED` an assignee is not set for issues created with this component. + * * `PROJECT_DEFAULT` the assignee to any issues created with this component is nominally the default assignee for the project that the component is in. + * + * Default value: `PROJECT_DEFAULT`. + * Optional when creating or updating a component. + * @enum {string} + */ + assigneeType?: "PROJECT_DEFAULT" | "COMPONENT_LEAD" | "PROJECT_LEAD" | "UNASSIGNED"; + /** @description The description for the component. Optional when creating or updating a component. */ + description?: string; + /** @description The unique identifier for the component. */ + id?: string; + /** @description Whether a user is associated with `assigneeType`. For example, if the `assigneeType` is set to `COMPONENT_LEAD` but the component lead is not set, then `false` is returned. */ + isAssigneeTypeValid?: boolean; + /** @description The user details for the component's lead user. */ + lead?: components["schemas"]["User"]; + /** @description The accountId of the component's lead user. The accountId uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + leadAccountId?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + leadUserName?: string; + /** @description Compass component's metadata. Can't be updated. Not required for creating a Project Component. */ + metadata?: { + [key: string]: string; + }; + /** @description The unique name for the component in the project. Required when creating a component. Optional when updating a component. The maximum length is 255 characters. */ + name?: string; + /** @description The key of the project the component is assigned to. Required when creating a component. Can't be updated. */ + project?: string; + /** + * Format: int64 + * @description The ID of the project the component is assigned to. + */ + projectId?: number; + /** @description The user assigned to issues created with this component, when `assigneeType` does not identify a valid assignee. */ + realAssignee?: components["schemas"]["User"]; + /** + * @description The type of the assignee that is assigned to issues created with this component, when an assignee cannot be set from the `assigneeType`. For example, `assigneeType` is set to `COMPONENT_LEAD` but no component lead is set. This property is set to one of the following values: + * + * * `PROJECT_LEAD` when `assigneeType` is `PROJECT_LEAD` and the project lead has permission to be assigned issues in the project that the component is in. + * * `COMPONENT_LEAD` when `assignee`Type is `COMPONENT_LEAD` and the component lead has permission to be assigned issues in the project that the component is in. + * * `UNASSIGNED` when `assigneeType` is `UNASSIGNED` and Jira is configured to allow unassigned issues. + * * `PROJECT_DEFAULT` when none of the preceding cases are true. + * @enum {string} + */ + realAssigneeType?: "PROJECT_DEFAULT" | "COMPONENT_LEAD" | "PROJECT_LEAD" | "UNASSIGNED"; + /** + * Format: uri + * @description The URL of the component. + */ + self?: string; + }; + /** @description Details about a project. */ + ProjectDetails: { + /** @description The URLs of the project's avatars. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description The ID of the project. */ + id?: string; + /** @description The key of the project. */ + key?: string; + /** @description The name of the project. */ + name?: string; + /** @description The category the project belongs to. */ + projectCategory?: components["schemas"]["UpdatedProjectCategory"]; + /** + * @description The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes) of the project. + * @enum {string} + */ + projectTypeKey?: "software" | "service_desk" | "business"; + /** @description The URL of the project details. */ + self?: string; + /** @description Whether or not the project is simplified. */ + simplified?: boolean; + }; + /** @description A project's sender email address. */ + ProjectEmailAddress: { + /** @description The email address. */ + emailAddress?: string; + /** @description When using a custom domain, the status of the email address. */ + emailAddressStatus?: string[]; + }; + /** @description Details of a project feature. */ + ProjectFeature: { + /** @description The key of the feature. */ + feature?: string; + /** @description URI for the image representing the feature. */ + imageUri?: string; + /** @description Localized display description for the feature. */ + localisedDescription?: string; + /** @description Localized display name for the feature. */ + localisedName?: string; + /** @description List of keys of the features required to enable the feature. */ + prerequisites?: string[]; + /** + * Format: int64 + * @description The ID of the project. + */ + projectId?: number; + /** + * @description The state of the feature. When updating the state of a feature, only ENABLED and DISABLED are supported. Responses can contain all values + * @enum {string} + */ + state?: "ENABLED" | "DISABLED" | "COMING_SOON"; + /** @description Whether the state of the feature can be updated. */ + toggleLocked?: boolean; + }; + /** @description Details of the feature state. */ + ProjectFeatureState: { + /** + * @description The feature state. + * @enum {string} + */ + state?: "ENABLED" | "DISABLED" | "COMING_SOON"; + }; + /** @description Project ID details. */ + ProjectId: { + /** @description The ID of the project. */ + id: string; + } | null; + /** @description The identifiers for a project. */ + ProjectIdentifierBean: { + /** + * Format: int64 + * @description The ID of the project. + */ + id?: number; + /** @description The key of the project. */ + key?: string; + }; + /** @description Identifiers for a project. */ + ProjectIdentifiers: { + /** + * Format: int64 + * @description The ID of the created project. + */ + id: number; + /** @description The key of the created project. */ + key: string; + /** + * Format: uri + * @description The URL of the created project. + */ + self: string; + }; + /** @description A list of project IDs. */ + ProjectIds: { + /** @description The IDs of projects. */ + projectIds: string[]; + }; + /** @description Additional details about a project. */ + ProjectInsight: { + /** + * Format: date-time + * @description The last issue update time. + */ + lastIssueUpdateTime?: string; + /** + * Format: int64 + * @description Total issue count. + */ + totalIssueCount?: number; + }; + /** @description Details of the issue creation metadata for a project. */ + ProjectIssueCreateMetadata: { + /** @description List of the project's avatars, returning the avatar size and associated URL. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description Expand options that include additional project issue create metadata details in the response. */ + expand?: string; + /** @description The ID of the project. */ + id?: string; + /** @description List of the issue types supported by the project. */ + issuetypes?: readonly components["schemas"]["IssueTypeIssueCreateMetadata"][]; + /** @description The key of the project. */ + key?: string; + /** @description The name of the project. */ + name?: string; + /** @description The URL of the project. */ + self?: string; + }; + /** @description List of issue level security items in a project. */ + ProjectIssueSecurityLevels: { + /** @description Issue level security items list. */ + levels: readonly components["schemas"]["SecurityLevel"][]; + }; + /** @description The hierarchy of issue types within a project. */ + ProjectIssueTypeHierarchy: { + /** @description Details of an issue type hierarchy level. */ + hierarchy?: readonly components["schemas"]["ProjectIssueTypesHierarchyLevel"][]; + /** + * Format: int64 + * @description The ID of the project. + */ + projectId?: number; + }; + /** @description The project and issue type mapping. */ + ProjectIssueTypeMapping: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The ID of the project. */ + projectId: string; + }; + /** @description The project and issue type mappings. */ + ProjectIssueTypeMappings: { + /** @description The project and issue type mappings. */ + mappings: components["schemas"]["ProjectIssueTypeMapping"][]; + }; + /** @description Use the optional `workflows.usages` expand to get additional information about the projects and issue types associated with the requested workflows. */ + ProjectIssueTypes: { + /** @description IDs of the issue types */ + issueTypes?: (string | null)[] | null; + project?: components["schemas"]["ProjectId"]; + }; + /** @description Details of an issue type hierarchy level. */ + ProjectIssueTypesHierarchyLevel: { + /** + * Format: uuid + * @description The ID of the issue type hierarchy level. This property is deprecated, see [Change notice: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + entityId?: string; + /** @description The list of issue types in the hierarchy level. */ + issueTypes?: readonly components["schemas"]["IssueTypeInfo"][]; + /** + * Format: int32 + * @description The level of the issue type hierarchy level. + */ + level?: number; + /** @description The name of the issue type hierarchy level. */ + name?: string; + }; + ProjectLandingPageInfo: { + attributes?: { + [key: string]: string; + }; + /** Format: int64 */ + boardId?: number; + boardName?: string; + projectKey?: string; + projectType?: string; + queueCategory?: string; + /** Format: int64 */ + queueId?: number; + queueName?: string; + simpleBoard?: boolean; + simplified?: boolean; + url?: string; + }; + /** @description Permissions which a user has on a project. */ + ProjectPermissions: { + /** @description Whether the logged user can edit the project. */ + canEdit?: boolean; + }; + /** @description Details about the roles in a project. */ + ProjectRole: { + /** @description The list of users who act in this role. */ + actors?: readonly components["schemas"]["RoleActor"][]; + /** @description Whether this role is the admin role for the project. */ + admin?: boolean; + /** @description Whether the calling user is part of this role. */ + currentUserRole?: boolean; + /** @description Whether this role is the default role for the project */ + default?: boolean; + /** @description The description of the project role. */ + description?: string; + /** + * Format: int64 + * @description The ID of the project role. + */ + id?: number; + /** @description The name of the project role. */ + name?: string; + /** @description Whether the roles are configurable for this project. */ + roleConfigurable?: boolean; + /** @description The scope of the role. Indicated for roles associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO). */ + scope?: components["schemas"]["Scope"]; + /** + * Format: uri + * @description The URL the project role details. + */ + self?: string; + /** @description The translated name of the project role. */ + translatedName?: string; + }; + ProjectRoleActorsUpdateBean: { + /** + * @description The actors to add to the project role. + * + * Add groups using: + * + * * `atlassian-group-role-actor` and a list of group names. + * * `atlassian-group-role-actor-id` and a list of group IDs. + * + * As a group's name can change, use of `atlassian-group-role-actor-id` is recommended. For example, `"atlassian-group-role-actor-id":["eef79f81-0b89-4fca-a736-4be531a10869","77f6ab39-e755-4570-a6ae-2d7a8df0bcb8"]`. + * + * Add users using `atlassian-user-role-actor` and a list of account IDs. For example, `"atlassian-user-role-actor":["12345678-9abc-def1-2345-6789abcdef12", "abcdef12-3456-789a-bcde-f123456789ab"]`. + */ + categorisedActors?: { + [key: string]: string[]; + }; + /** + * Format: int64 + * @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. + */ + id?: number; + }; + /** @description Details about a project role. */ + ProjectRoleDetails: { + /** @description Whether this role is the admin role for the project. */ + admin?: boolean; + /** @description Whether this role is the default role for the project. */ + default?: boolean; + /** @description The description of the project role. */ + description?: string; + /** + * Format: int64 + * @description The ID of the project role. + */ + id?: number; + /** @description The name of the project role. */ + name?: string; + /** @description Whether the roles are configurable for this project. */ + roleConfigurable?: boolean; + /** @description The scope of the role. Indicated for roles associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO). */ + scope?: components["schemas"]["Scope"]; + /** + * Format: uri + * @description The URL the project role details. + */ + self?: string; + /** @description The translated name of the project role. */ + translatedName?: string; + }; + /** @description Details of the group associated with the role. */ + ProjectRoleGroup: { + /** @description The display name of the group. */ + displayName?: string; + /** @description The ID of the group. */ + groupId?: string; + /** @description The name of the group. As a group's name can change, use of `groupId` is recommended to identify the group. */ + name?: string; + }; + /** @description Details of the user associated with the role. */ + ProjectRoleUser: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Returns *unknown* if the record is deleted and corrupted, for example, as the result of a server import. */ + accountId?: string; + }; + ProjectScopeBean: { + /** @description Defines the behavior of the option in the project.If notSelectable is set, the option cannot be set as the field's value. This is useful for archiving an option that has previously been selected but shouldn't be used anymore.If defaultValue is set, the option is selected by default. */ + attributes?: ("notSelectable" | "defaultValue")[]; + /** + * Format: int64 + * @description The ID of the project that the option's behavior applies to. + */ + id?: number; + }; + /** @description Details about a project type. */ + ProjectType: { + /** @description The color of the project type. */ + color?: string; + /** @description The key of the project type's description. */ + descriptionI18nKey?: string; + /** @description The formatted key of the project type. */ + formattedKey?: string; + /** @description The icon of the project type. */ + icon?: string; + /** @description The key of the project type. */ + key?: string; + }; + /** @description Property key details. */ + PropertyKey: { + /** @description The key of the property. */ + key?: string; + /** @description The URL of the property. */ + self?: string; + }; + /** @description List of property keys. */ + PropertyKeys: { + /** @description Property key details. */ + keys?: readonly components["schemas"]["PropertyKey"][]; + }; + /** @description Details about the status mappings for publishing a draft workflow scheme. */ + PublishDraftWorkflowScheme: { + /** @description Mappings of statuses to new statuses for issue types. */ + statusMappings?: components["schemas"]["StatusMapping"][]; + }; + /** @description Properties that identify a published workflow. */ + PublishedWorkflowId: { + /** @description The entity ID of the workflow. */ + entityId?: string; + /** @description The name of the workflow. */ + name: string; + }; + /** @description ID of a registered webhook or error messages explaining why a webhook wasn't registered. */ + RegisteredWebhook: { + /** + * Format: int64 + * @description The ID of the webhook. Returned if the webhook is created. + */ + createdWebhookId?: number; + /** @description Error messages specifying why the webhook creation failed. */ + errors?: string[]; + }; + /** @description Details of an issue remote link. */ + RemoteIssueLink: { + /** @description Details of the remote application the linked item is in. */ + application?: components["schemas"]["Application"]; + /** @description The global ID of the link, such as the ID of the item on the remote system. */ + globalId?: string; + /** + * Format: int64 + * @description The ID of the link. + */ + id?: number; + /** @description Details of the item linked to. */ + object?: components["schemas"]["RemoteObject"]; + /** @description Description of the relationship between the issue and the linked item. */ + relationship?: string; + /** + * Format: uri + * @description The URL of the link. + */ + self?: string; + }; + /** @description Details of the identifiers for a created or updated remote issue link. */ + RemoteIssueLinkIdentifies: { + /** + * Format: int64 + * @description The ID of the remote issue link, such as the ID of the item on the remote system. + */ + id?: number; + /** @description The URL of the remote issue link. */ + self?: string; + }; + /** @description Details of a remote issue link. */ + RemoteIssueLinkRequest: { + /** @description Details of the remote application the linked item is in. For example, trello. */ + application?: components["schemas"]["Application"]; + /** + * @description An identifier for the remote item in the remote system. For example, the global ID for a remote item in Confluence would consist of the app ID and page ID, like this: `appId=456&pageId=123`. + * + * Setting this field enables the remote issue link details to be updated or deleted using remote system and item details as the record identifier, rather than using the record's Jira ID. + * + * The maximum length is 255 characters. + */ + globalId?: string; + /** @description Details of the item linked to. */ + object: components["schemas"]["RemoteObject"]; + /** @description Description of the relationship between the issue and the linked item. If not set, the relationship description "links to" is used in Jira. */ + relationship?: string; + [key: string]: unknown; + }; + /** @description The linked item. */ + RemoteObject: { + /** @description Details of the icon for the item. If no icon is defined, the default link icon is used in Jira. */ + icon?: components["schemas"]["Icon"]; + /** @description The status of the item. */ + status?: components["schemas"]["Status"]; + /** @description The summary details of the item. */ + summary?: string; + /** @description The title of the item. */ + title: string; + /** @description The URL of the item. */ + url: string; + [key: string]: unknown; + }; + RemoveOptionFromIssuesResult: { + /** @description A collection of errors related to unchanged issues. The collection size is limited, which means not all errors may be returned. */ + errors?: components["schemas"]["SimpleErrorCollection"]; + /** @description The IDs of the modified issues. */ + modifiedIssues?: number[]; + /** @description The IDs of the unchanged issues, those issues where errors prevent modification. */ + unmodifiedIssues?: number[]; + }; + /** @description Change the order of issue priorities. */ + ReorderIssuePriorities: { + /** @description The ID of the priority. Required if `position` isn't provided. */ + after?: string; + /** @description The list of issue IDs to be reordered. Cannot contain duplicates nor after ID. */ + ids: string[]; + /** @description The position for issue priorities to be moved to. Required if `after` isn't provided. */ + position?: string; + }; + /** @description Change the order of issue resolutions. */ + ReorderIssueResolutionsRequest: { + /** @description The ID of the resolution. Required if `position` isn't provided. */ + after?: string; + /** @description The list of resolution IDs to be reordered. Cannot contain duplicates nor after ID. */ + ids: string[]; + /** @description The position for issue resolutions to be moved to. Required if `after` isn't provided. */ + position?: string; + }; + /** @description The list of required status mappings by issue type. */ + RequiredMappingByIssueType: { + /** @description The ID of the issue type. */ + issueTypeId?: string; + /** @description The status IDs requiring mapping. */ + statusIds?: string[]; + }; + /** @description The list of required status mappings by workflow. */ + RequiredMappingByWorkflows: { + /** @description The ID of the source workflow. */ + sourceWorkflowId?: string; + /** @description The status IDs requiring mapping. */ + statusIds?: string[]; + /** @description The ID of the target workflow. */ + targetWorkflowId?: string; + }; + /** @description Details of an issue resolution. */ + Resolution: { + /** @description The description of the issue resolution. */ + description?: string; + /** @description The ID of the issue resolution. */ + id?: string; + /** @description The name of the issue resolution. */ + name?: string; + /** + * Format: uri + * @description The URL of the issue resolution. + */ + self?: string; + }; + /** @description The ID of an issue resolution. */ + ResolutionId: { + /** @description The ID of the issue resolution. */ + id: string; + [key: string]: unknown; + }; + ResolutionJsonBean: { + default?: boolean; + description?: string; + iconUrl?: string; + id?: string; + name?: string; + self?: string; + }; + Resource: { + description?: string; + /** Format: binary */ + file?: string; + filename?: string; + inputStream?: Record; + open?: boolean; + readable?: boolean; + /** Format: uri */ + uri?: string; + /** Format: url */ + url?: string; + }; + /** @description Details of the permission. */ + RestrictedPermission: { + /** @description The ID of the permission. Either `id` or `key` must be specified. Use [Get all permissions](#api-rest-api-3-permissions-get) to get the list of permissions. */ + id?: string; + /** @description The key of the permission. Either `id` or `key` must be specified. Use [Get all permissions](#api-rest-api-3-permissions-get) to get the list of permissions. */ + key?: string; + [key: string]: unknown; + }; + RichText: { + empty?: boolean; + emptyAdf?: boolean; + finalised?: boolean; + valueSet?: boolean; + }; + /** @description Details about a user assigned to a project role. */ + RoleActor: { + actorGroup?: components["schemas"]["ProjectRoleGroup"]; + actorUser?: components["schemas"]["ProjectRoleUser"]; + /** + * Format: uri + * @description The avatar of the role actor. + */ + avatarUrl?: string; + /** @description The display name of the role actor. For users, depending on the user’s privacy setting, this may return an alternative value for the user's name. */ + displayName?: string; + /** + * Format: int64 + * @description The ID of the role actor. + */ + id?: number; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** + * @description The type of role actor. + * @enum {string} + */ + type?: "atlassian-group-role-actor" | "atlassian-user-role-actor"; + }; + /** @description A rule configuration. */ + RuleConfiguration: { + /** + * @description Whether the rule is disabled. + * @default false + */ + disabled?: boolean; + /** @description A tag used to filter rules in [Get workflow transition rule configurations](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-transition-rules/#api-rest-api-3-workflow-rule-config-get). */ + tag?: string; + /** @description Configuration of the rule, as it is stored by the Connect or the Forge app on the rule configuration page. */ + value: string; + }; + /** @description The sanitized JQL queries for the given account IDs. */ + SanitizedJqlQueries: { + /** @description The list of sanitized JQL queries. */ + queries?: components["schemas"]["SanitizedJqlQuery"][]; + }; + /** @description Details of the sanitized JQL query. */ + SanitizedJqlQuery: { + /** @description The account ID of the user for whom sanitization was performed. */ + accountId?: string | null; + /** @description The list of errors. */ + errors?: components["schemas"]["ErrorCollection"]; + /** @description The initial query. */ + initialQuery?: string; + /** @description The sanitized query, if there were no errors. */ + sanitizedQuery?: string | null; + }; + /** @description The projects the item is associated with. Indicated for items associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO). */ + Scope: { + /** @description The project the item has scope in. */ + project?: components["schemas"]["ProjectDetails"]; + /** + * @description The type of scope. + * @enum {string} + */ + type?: "PROJECT" | "TEMPLATE"; + [key: string]: unknown; + }; + /** @description A screen. */ + Screen: { + /** @description The description of the screen. */ + description?: string; + /** + * Format: int64 + * @description The ID of the screen. + */ + id?: number; + /** @description The name of the screen. */ + name?: string; + /** @description The scope of the screen. */ + scope?: components["schemas"]["Scope"]; + }; + /** @description Details of a screen. */ + ScreenDetails: { + /** @description The description of the screen. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the screen. The name must be unique. The maximum length is 255 characters. */ + name: string; + }; + /** @description A screen scheme. */ + ScreenScheme: { + /** @description The description of the screen scheme. */ + description?: string; + /** + * Format: int64 + * @description The ID of the screen scheme. + */ + id?: number; + /** @description Details of the issue type screen schemes associated with the screen scheme. */ + issueTypeScreenSchemes?: components["schemas"]["PageBeanIssueTypeScreenScheme"]; + /** @description The name of the screen scheme. */ + name?: string; + /** @description The IDs of the screens for the screen types of the screen scheme. */ + screens?: components["schemas"]["ScreenTypes"]; + }; + /** @description Details of a screen scheme. */ + ScreenSchemeDetails: { + /** @description The description of the screen scheme. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the screen scheme. The name must be unique. The maximum length is 255 characters. */ + name: string; + /** @description The IDs of the screens for the screen types of the screen scheme. Only screens used in classic projects are accepted. */ + screens: components["schemas"]["ScreenTypes"]; + }; + /** @description The ID of a screen scheme. */ + ScreenSchemeId: { + /** + * Format: int64 + * @description The ID of the screen scheme. + */ + id: number; + }; + /** @description The IDs of the screens for the screen types of the screen scheme. */ + ScreenTypes: { + /** + * Format: int64 + * @description The ID of the create screen. + */ + create?: number; + /** + * Format: int64 + * @description The ID of the default screen. Required when creating a screen scheme. + */ + default?: number; + /** + * Format: int64 + * @description The ID of the edit screen. + */ + edit?: number; + /** + * Format: int64 + * @description The ID of the view screen. + */ + view?: number; + }; + /** @description A screen with tab details. */ + ScreenWithTab: { + /** @description The description of the screen. */ + description?: string; + /** + * Format: int64 + * @description The ID of the screen. + */ + id?: number; + /** @description The name of the screen. */ + name?: string; + /** @description The scope of the screen. */ + scope?: components["schemas"]["Scope"]; + /** @description The tab for the screen. */ + tab?: components["schemas"]["ScreenableTab"]; + }; + /** @description A screen tab field. */ + ScreenableField: { + /** @description The ID of the screen tab field. */ + id?: string; + /** @description The name of the screen tab field. Required on create and update. The maximum length is 255 characters. */ + name?: string; + }; + /** @description A screen tab. */ + ScreenableTab: { + /** + * Format: int64 + * @description The ID of the screen tab. + */ + id?: number; + /** @description The name of the screen tab. The maximum length is 255 characters. */ + name: string; + }; + /** @description Details of how to filter and list search auto complete information. */ + SearchAutoCompleteFilter: { + /** + * @description Include collapsed fields for fields that have non-unique names. + * @default false + */ + includeCollapsedFields?: boolean; + /** @description List of project IDs used to filter the visible field details returned. */ + projectIds?: number[]; + }; + SearchRequestBean: { + /** + * @description Use [expand](em>#expansion) to include additional information about issues in the response. Note that, unlike the majority of instances where `expand` is specified, `expand` is defined as a list of values. The expand options are: + * + * * `renderedFields` Returns field values rendered in HTML format. + * * `names` Returns the display name of each field. + * * `schema` Returns the schema describing a field type. + * * `transitions` Returns all possible transitions for the issue. + * * `operations` Returns all possible operations for the issue. + * * `editmeta` Returns information about how each field can be edited. + * * `changelog` Returns a list of recent updates to an issue, sorted by date, starting from the most recent. + * * `versionedRepresentations` Instead of `fields`, returns `versionedRepresentations` a JSON array containing each version of a field's value, with the highest numbered item representing the most recent version. + */ + expand?: string[]; + /** + * @description A list of fields to return for each issue, use it to retrieve a subset of fields. This parameter accepts a comma-separated list. Expand options include: + * + * * `*all` Returns all fields. + * * `*navigable` Returns navigable fields. + * * Any issue field, prefixed with a minus to exclude. + * + * The default is `*navigable`. + * + * Examples: + * + * * `summary,comment` Returns the summary and comments fields only. + * * `-description` Returns all navigable (default) fields except description. + * * `*all,-comment` Returns all fields except comments. + * + * Multiple `fields` parameters can be included in a request. + * + * Note: All navigable fields are returned by default. This differs from [GET issue](#api-rest-api-3-issue-issueIdOrKey-get) where the default is all fields. + */ + fields?: string[]; + /** @description Reference fields by their key (rather than ID). The default is `false`. */ + fieldsByKeys?: boolean; + /** @description A [JQL](https://confluence.atlassian.com/x/egORLQ) expression. */ + jql?: string; + /** + * Format: int32 + * @description The maximum number of items to return per page. + * @default 50 + */ + maxResults?: number; + /** @description A list of up to 5 issue properties to include in the results. This parameter accepts a comma-separated list. */ + properties?: string[]; + /** + * Format: int32 + * @description The index of the first item to return in the page of results (page offset). The base index is `0`. + */ + startAt?: number; + /** + * @description Determines how to validate the JQL query and treat the validation results. Supported values: + * + * * `strict` Returns a 400 response code if any errors are found, along with a list of all errors (and warnings). + * * `warn` Returns all errors as warnings. + * * `none` No validation is performed. + * * `true` *Deprecated* A legacy synonym for `strict`. + * * `false` *Deprecated* A legacy synonym for `warn`. + * + * The default is `strict`. + * + * Note: If the JQL is not correctly formed a 400 response code is returned, regardless of the `validateQuery` value. + * @enum {string} + */ + validateQuery?: "strict" | "warn" | "none" | "true" | "false"; + }; + /** @description The result of a JQL search. */ + SearchResults: { + /** @description Expand options that include additional search result details in the response. */ + expand?: string; + /** @description The list of issues found by the search. */ + issues?: readonly components["schemas"]["IssueBean"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** @description The ID and name of each field in the search results. */ + names?: { + [key: string]: string; + }; + /** @description The schema describing the field types in the search results. */ + schema?: { + [key: string]: components["schemas"]["JsonTypeBean"]; + }; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + /** @description Any warnings related to the JQL query. */ + warningMessages?: readonly string[]; + }; + /** @description Details of an issue level security item. */ + SecurityLevel: { + /** @description The description of the issue level security item. */ + description?: string; + /** @description The ID of the issue level security item. */ + id?: string; + /** @description Whether the issue level security item is the default. */ + isDefault?: boolean; + /** @description The ID of the issue level security scheme. */ + issueSecuritySchemeId?: string; + /** @description The name of the issue level security item. */ + name?: string; + /** @description The URL of the issue level security item. */ + self?: string; + }; + /** @description Issue security level member. */ + SecurityLevelMember: { + /** @description The user or group being granted the permission. It consists of a `type` and a type-dependent `parameter`. See [Holder object](../api-group-permission-schemes/#holder-object) in *Get all permission schemes* for more information. */ + holder: components["schemas"]["PermissionHolder"]; + /** @description The ID of the issue security level member. */ + id: string; + /** @description The ID of the issue security level. */ + issueSecurityLevelId: string; + /** @description The ID of the issue security scheme. */ + issueSecuritySchemeId: string; + managed?: boolean; + [key: string]: unknown; + }; + /** @description Details about a security scheme. */ + SecurityScheme: { + /** + * Format: int64 + * @description The ID of the default security level. + */ + defaultSecurityLevelId?: number; + /** @description The description of the issue security scheme. */ + description?: string; + /** + * Format: int64 + * @description The ID of the issue security scheme. + */ + id?: number; + levels?: components["schemas"]["SecurityLevel"][]; + /** @description The name of the issue security scheme. */ + name?: string; + /** @description The URL of the issue security scheme. */ + self?: string; + }; + /** @description The ID of the issue security scheme. */ + SecuritySchemeId: { + /** @description The ID of the issue security scheme. */ + id: string; + [key: string]: unknown; + }; + SecuritySchemeLevelBean: { + /** @description The description of the issue security scheme level. */ + description?: string; + /** @description Specifies whether the level is the default level. False by default. */ + isDefault?: boolean; + /** @description The list of level members which should be added to the issue security scheme level. */ + members?: components["schemas"]["SecuritySchemeLevelMemberBean"][]; + /** @description The name of the issue security scheme level. Must be unique. */ + name: string; + }; + SecuritySchemeLevelMemberBean: { + /** @description The value corresponding to the specified member type. */ + parameter?: string; + /** @description The issue security level member type, e.g `reporter`, `group`, `user`. */ + type: string; + }; + /** @description Details of issue security scheme level new members. */ + SecuritySchemeMembersRequest: { + /** @description The list of level members which should be added to the issue security scheme level. */ + members?: components["schemas"]["SecuritySchemeLevelMemberBean"][]; + }; + /** @description Details about an issue security scheme. */ + SecuritySchemeWithProjects: { + /** + * Format: int64 + * @description The default level ID of the issue security scheme. + */ + defaultLevel?: number; + /** @description The description of the issue security scheme. */ + description?: string; + /** + * Format: int64 + * @description The ID of the issue security scheme. + */ + id: number; + /** @description The name of the issue security scheme. */ + name: string; + /** @description The list of project IDs associated with the issue security scheme. */ + projectIds?: readonly number[]; + /** @description The URL of the issue security scheme. */ + self: string; + [key: string]: unknown; + }; + /** @description List of security schemes. */ + SecuritySchemes: { + /** @description List of security schemes. */ + issueSecuritySchemes?: readonly components["schemas"]["SecurityScheme"][]; + }; + /** @description Details about the Jira instance. */ + ServerInformation: { + /** @description The base URL of the Jira instance. */ + baseUrl?: string; + /** + * Format: date-time + * @description The timestamp when the Jira version was built. + */ + buildDate?: string; + /** + * Format: int32 + * @description The build number of the Jira version. + */ + buildNumber?: number; + /** @description The type of server deployment. This is always returned as *Cloud*. */ + deploymentType?: string; + /** @description The display URL of the Jira instance. */ + displayUrl?: string; + /** @description The display URL of the Servicedesk Help Center. */ + displayUrlServicedeskHelpCenter?: string; + /** @description Jira instance health check results. Deprecated and no longer returned. */ + healthChecks?: components["schemas"]["HealthCheckResult"][]; + /** @description The unique identifier of the Jira version. */ + scmInfo?: string; + /** + * Format: date-time + * @description The time in Jira when this request was responded to. + */ + serverTime?: string; + /** @description The default timezone of the Jira server. In a format known as Olson Time Zones, IANA Time Zones or TZ Database Time Zones. */ + serverTimeZone?: { + displayName?: string; + /** Format: int32 */ + dstsavings?: number; + id?: string; + /** Format: int32 */ + rawOffset?: number; + }; + /** @description The name of the Jira instance. */ + serverTitle?: string; + /** @description The version of Jira. */ + version?: string; + /** @description The major, minor, and revision version numbers of the Jira version. */ + versionNumbers?: number[]; + }; + ServiceManagementNavigationInfo: { + queueCategory?: string; + /** Format: int64 */ + queueId?: number; + queueName?: string; + }; + ServiceRegistry: { + /** @description service description */ + description?: string | null; + /** + * Format: uuid + * @description service ID + */ + id?: string; + /** @description service name */ + name?: string; + /** @description organization ID */ + organizationId?: string; + /** @description service revision */ + revision?: string; + serviceTier?: components["schemas"]["ServiceRegistryTier"]; + }; + ServiceRegistryTier: { + /** @description tier description */ + description?: string | null; + /** + * Format: uuid + * @description tier ID + */ + id?: string; + /** @description tier level */ + level?: number; + /** @description tier name */ + name?: string | null; + /** + * @description name key of the tier + * @example service-registry.tier1.name + */ + nameKey?: string; + }; + /** @description Details of new default levels. */ + SetDefaultLevelsRequest: { + /** @description List of objects with issue security scheme ID and new default level ID. */ + defaultValues: components["schemas"]["DefaultLevelValue"][]; + [key: string]: unknown; + }; + /** @description The new default issue priority. */ + SetDefaultPriorityRequest: { + /** @description The ID of the new default issue priority. Must be an existing ID or null. Setting this to null erases the default priority setting. */ + id: string; + }; + /** @description The new default issue resolution. */ + SetDefaultResolutionRequest: { + /** @description The ID of the new default issue resolution. Must be an existing ID or null. Setting this to null erases the default resolution setting. */ + id: string; + }; + /** @description Details of a share permission for the filter. */ + SharePermission: { + /** @description The group that the filter is shared with. For a request, specify the `groupId` or `name` property for the group. As a group's name can change, use of `groupId` is recommended. */ + group?: components["schemas"]["GroupName"]; + /** + * Format: int64 + * @description The unique identifier of the share permission. + */ + id?: number; + /** + * @description The project that the filter is shared with. This is similar to the project object returned by [Get project](#api-rest-api-3-project-projectIdOrKey-get) but it contains a subset of the properties, which are: `self`, `id`, `key`, `assigneeType`, `name`, `roles`, `avatarUrls`, `projectType`, `simplified`. + * For a request, specify the `id` for the project. + */ + project?: components["schemas"]["Project"]; + /** + * @description The project role that the filter is shared with. + * For a request, specify the `id` for the role. You must also specify the `project` object and `id` for the project that the role is in. + */ + role?: components["schemas"]["ProjectRole"]; + /** + * @description The type of share permission: + * + * * `user` Shared with a user. + * * `group` Shared with a group. If set in a request, then specify `sharePermission.group` as well. + * * `project` Shared with a project. If set in a request, then specify `sharePermission.project` as well. + * * `projectRole` Share with a project role in a project. This value is not returned in responses. It is used in requests, where it needs to be specify with `projectId` and `projectRoleId`. + * * `global` Shared globally. If set in a request, no other `sharePermission` properties need to be specified. + * * `loggedin` Shared with all logged-in users. Note: This value is set in a request by specifying `authenticated` as the `type`. + * * `project-unknown` Shared with a project that the user does not have access to. Cannot be set in a request. + * @enum {string} + */ + type: "user" | "group" | "project" | "projectRole" | "global" | "loggedin" | "authenticated" | "project-unknown"; + /** @description The user account ID that the filter is shared with. For a request, specify the `accountId` property for the user. */ + user?: components["schemas"]["UserBean"]; + }; + SharePermissionInputBean: { + /** @description The user account ID that the filter is shared with. For a request, specify the `accountId` property for the user. */ + accountId?: string; + /** @description The ID of the group, which uniquely identifies the group across all Atlassian products.For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*. Cannot be provided with `groupname`. */ + groupId?: string; + /** @description The name of the group to share the filter with. Set `type` to `group`. Please note that the name of a group is mutable, to reliably identify a group use `groupId`. */ + groupname?: string; + /** @description The ID of the project to share the filter with. Set `type` to `project`. */ + projectId?: string; + /** @description The ID of the project role to share the filter with. Set `type` to `projectRole` and the `projectId` for the project that the role is in. */ + projectRoleId?: string; + /** + * Format: int32 + * @description The rights for the share permission. + */ + rights?: number; + /** + * @description The type of the share permission.Specify the type as follows: + * + * * `user` Share with a user. + * * `group` Share with a group. Specify `groupname` as well. + * * `project` Share with a project. Specify `projectId` as well. + * * `projectRole` Share with a project role in a project. Specify `projectId` and `projectRoleId` as well. + * * `global` Share globally, including anonymous users. If set, this type overrides all existing share permissions and must be deleted before any non-global share permissions is set. + * * `authenticated` Share with all logged-in users. This shows as `loggedin` in the response. If set, this type overrides all existing share permissions and must be deleted before any non-global share permissions is set. + * @enum {string} + */ + type: "user" | "project" | "group" | "projectRole" | "global" | "authenticated"; + }; + SimpleApplicationPropertyBean: { + /** @description The ID of the application property. */ + id?: string; + /** @description The new value. */ + value?: string; + }; + SimpleErrorCollection: { + /** @description The list of error messages produced by this operation. For example, "input parameter 'key' must be provided" */ + errorMessages?: string[]; + /** @description The list of errors by parameter returned by the operation. For example,"projectKey": "Project keys must start with an uppercase letter, followed by one or more uppercase alphanumeric characters." */ + errors?: { + [key: string]: string; + }; + /** Format: int32 */ + httpStatusCode?: number; + }; + /** @description Details about the operations available in this version. */ + SimpleLink: { + href?: string; + iconClass?: string; + id?: string; + label?: string; + styleClass?: string; + title?: string; + /** Format: int32 */ + weight?: number; + }; + SimpleListWrapperApplicationRole: { + callback?: components["schemas"]["ListWrapperCallbackApplicationRole"]; + items?: components["schemas"]["ApplicationRole"][]; + /** Format: int32 */ + "max-results"?: number; + pagingCallback?: components["schemas"]["ListWrapperCallbackApplicationRole"]; + /** Format: int32 */ + size?: number; + }; + SimpleListWrapperGroupName: { + callback?: components["schemas"]["ListWrapperCallbackGroupName"]; + items?: components["schemas"]["GroupName"][]; + /** Format: int32 */ + "max-results"?: number; + pagingCallback?: components["schemas"]["ListWrapperCallbackGroupName"]; + /** Format: int32 */ + size?: number; + }; + /** @description Represents a usage of an entity by a project ID and related issue type IDs. */ + SimpleUsage: { + /** @description The issue type IDs for the usage. */ + issueTypeIds: string[]; + /** @description The project ID for the usage. */ + projectId: string; + }; + SimplifiedHierarchyLevel: { + /** + * Format: int64 + * @description The ID of the level above this one in the hierarchy. This property is deprecated, see [Change notice: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + aboveLevelId?: number; + /** + * Format: int64 + * @description The ID of the level below this one in the hierarchy. This property is deprecated, see [Change notice: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + belowLevelId?: number; + /** + * Format: uuid + * @description The external UUID of the hierarchy level. This property is deprecated, see [Change notice: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + externalUuid?: string; + /** Format: int32 */ + hierarchyLevelNumber?: number; + /** + * Format: int64 + * @description The ID of the hierarchy level. This property is deprecated, see [Change notice: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + id?: number; + /** @description The issue types available in this hierarchy level. */ + issueTypeIds?: number[]; + /** + * Format: int32 + * @description The level of this item in the hierarchy. + */ + level?: number; + /** @description The name of this hierarchy level. */ + name?: string; + /** + * Format: int64 + * @description The ID of the project configuration. This property is deprecated, see [Change oticen: Removing hierarchy level IDs from next-gen APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/). + */ + projectConfigurationId?: number; + }; + SoftwareNavigationInfo: { + /** Format: int64 */ + boardId?: number; + boardName?: string; + simpleBoard?: boolean; + /** Format: int64 */ + totalBoardsInProject?: number; + }; + /** @description The status of the item. */ + Status: { + /** @description Details of the icon representing the status. If not provided, no status icon displays in Jira. */ + icon?: components["schemas"]["Icon"]; + /** @description Whether the item is resolved. If set to "true", the link to the issue is displayed in a strikethrough font, otherwise the link displays in normal font. */ + resolved?: boolean; + [key: string]: unknown; + }; + /** @description A status category. */ + StatusCategory: { + /** @description The name of the color used to represent the status category. */ + colorName?: string; + /** + * Format: int64 + * @description The ID of the status category. + */ + id?: number; + /** @description The key of the status category. */ + key?: string; + /** @description The name of the status category. */ + name?: string; + /** @description The URL of the status category. */ + self?: string; + [key: string]: unknown; + }; + /** @description Details of the status being created. */ + StatusCreate: { + /** @description The description of the status. */ + description?: string; + /** @description The name of the status. */ + name: string; + /** + * @description The category of the status. + * @enum {string} + */ + statusCategory: "TODO" | "IN_PROGRESS" | "DONE"; + }; + /** @description Details of the statuses being created and their scope. */ + StatusCreateRequest: { + scope: components["schemas"]["StatusScope"]; + /** @description Details of the statuses being created. */ + statuses: components["schemas"]["StatusCreate"][]; + }; + /** @description A status. */ + StatusDetails: { + /** @description The description of the status. */ + description?: string; + /** @description The URL of the icon used to represent the status. */ + iconUrl?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The name of the status. */ + name?: string; + /** @description The scope of the field. */ + scope?: components["schemas"]["Scope"]; + /** @description The URL of the status. */ + self?: string; + /** @description The category assigned to the status. */ + statusCategory?: components["schemas"]["StatusCategory"]; + [key: string]: unknown; + }; + /** @description The statuses associated with this workflow. */ + StatusLayoutUpdate: { + layout?: components["schemas"]["WorkflowLayout"]; + /** @description The properties for this status layout. */ + properties: { + [key: string]: string; + }; + /** @description A unique ID which the status will use to refer to this layout configuration. */ + statusReference: string; + [key: string]: unknown; + }; + /** @description Details about the mapping from a status to a new status for an issue type. */ + StatusMapping: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The ID of the new status. */ + newStatusId: string; + /** @description The ID of the status. */ + statusId: string; + }; + /** @description The mapping of old to new status ID for a specific project and issue type. */ + StatusMappingDTO: { + /** @description The issue type for the status mapping. */ + issueTypeId: string; + /** @description The project for the status mapping. */ + projectId: string; + /** @description The list of old and new status ID mappings for the specified project and issue type. */ + statusMigrations: components["schemas"]["StatusMigration"][]; + [key: string]: unknown; + }; + /** @description The details of the statuses in the associated workflows. */ + StatusMetadata: { + /** + * @description The category of the status. + * @enum {string} + */ + category?: "TODO" | "IN_PROGRESS" | "DONE"; + /** @description The ID of the status. */ + id?: string; + /** @description The name of the status. */ + name?: string; + }; + /** @description The mapping of old to new status ID. */ + StatusMigration: { + /** @description The new status ID. */ + newStatusReference: string; + /** @description The old status ID. */ + oldStatusReference: string; + [key: string]: unknown; + }; + /** @description The status reference and port that a transition is connected to. */ + StatusReferenceAndPort: { + /** + * Format: int32 + * @description The port this transition uses to connect to this status. + */ + port?: number; + /** @description The reference of this status. */ + statusReference: string; + } | null; + /** @description The scope of the status. */ + StatusScope: { + project?: components["schemas"]["ProjectId"]; + /** + * @description The scope of the status. `GLOBAL` for company-managed projects and `PROJECT` for team-managed projects. + * @enum {string} + */ + type: "PROJECT" | "GLOBAL"; + }; + /** @description Details of the status being updated. */ + StatusUpdate: { + /** @description The description of the status. */ + description?: string; + /** @description The ID of the status. */ + id: string; + /** @description The name of the status. */ + name: string; + /** + * @description The category of the status. + * @enum {string} + */ + statusCategory: "TODO" | "IN_PROGRESS" | "DONE"; + [key: string]: unknown; + }; + /** @description The list of statuses that will be updated. */ + StatusUpdateRequest: { + /** @description The list of statuses that will be updated. */ + statuses: components["schemas"]["StatusUpdate"][]; + }; + /** @description The statuses associated with each workflow. */ + StatusesPerWorkflow: { + /** @description The ID of the initial status for the workflow. */ + initialStatusId?: string; + /** @description The status IDs associated with the workflow. */ + statuses?: string[]; + /** @description The ID of the workflow. */ + workflowId?: string; + }; + StreamingResponseBody: Record; + StringList: Record; + /** @description An issue suggested for use in the issue picker auto-completion. */ + SuggestedIssue: { + /** + * Format: int64 + * @description The ID of the issue. + */ + id?: number; + /** @description The URL of the issue type's avatar. */ + img?: string; + /** @description The key of the issue. */ + key?: string; + /** @description The key of the issue in HTML format. */ + keyHtml?: string; + /** @description The phrase containing the query string in HTML format, with the string highlighted with HTML bold tags. */ + summary?: string; + /** @description The phrase containing the query string, as plain text. */ + summaryText?: string; + }; + /** @description List of system avatars. */ + SystemAvatars: { + /** @description A list of avatar details. */ + system?: readonly components["schemas"]["Avatar"][]; + }; + /** @description Details about a task. */ + TaskProgressBeanObject: { + /** @description The description of the task. */ + description?: string; + /** + * Format: int64 + * @description The execution time of the task, in milliseconds. + */ + elapsedRuntime: number; + /** + * Format: int64 + * @description A timestamp recording when the task was finished. + */ + finished?: number; + /** @description The ID of the task. */ + id: string; + /** + * Format: int64 + * @description A timestamp recording when the task progress was last updated. + */ + lastUpdate: number; + /** @description Information about the progress of the task. */ + message?: string; + /** + * Format: int64 + * @description The progress of the task, as a percentage complete. + */ + progress: number; + /** @description The result of the task execution. */ + result?: unknown; + /** + * Format: uri + * @description The URL of the task. + */ + self: string; + /** + * Format: int64 + * @description A timestamp recording when the task was started. + */ + started?: number; + /** + * @description The status of the task. + * @enum {string} + */ + status: "ENQUEUED" | "RUNNING" | "COMPLETE" | "FAILED" | "CANCEL_REQUESTED" | "CANCELLED" | "DEAD"; + /** + * Format: int64 + * @description A timestamp recording when the task was submitted. + */ + submitted: number; + /** + * Format: int64 + * @description The ID of the user who submitted the task. + */ + submittedBy: number; + }; + /** @description Details about a task. */ + TaskProgressBeanRemoveOptionFromIssuesResult: { + /** @description The description of the task. */ + description?: string; + /** + * Format: int64 + * @description The execution time of the task, in milliseconds. + */ + elapsedRuntime: number; + /** + * Format: int64 + * @description A timestamp recording when the task was finished. + */ + finished?: number; + /** @description The ID of the task. */ + id: string; + /** + * Format: int64 + * @description A timestamp recording when the task progress was last updated. + */ + lastUpdate: number; + /** @description Information about the progress of the task. */ + message?: string; + /** + * Format: int64 + * @description The progress of the task, as a percentage complete. + */ + progress: number; + /** @description The result of the task execution. */ + result?: components["schemas"]["RemoveOptionFromIssuesResult"]; + /** + * Format: uri + * @description The URL of the task. + */ + self: string; + /** + * Format: int64 + * @description A timestamp recording when the task was started. + */ + started?: number; + /** + * @description The status of the task. + * @enum {string} + */ + status: "ENQUEUED" | "RUNNING" | "COMPLETE" | "FAILED" | "CANCEL_REQUESTED" | "CANCELLED" | "DEAD"; + /** + * Format: int64 + * @description A timestamp recording when the task was submitted. + */ + submitted: number; + /** + * Format: int64 + * @description The ID of the user who submitted the task. + */ + submittedBy: number; + }; + /** @description Details of the time tracking configuration. */ + TimeTrackingConfiguration: { + /** + * @description The default unit of time applied to logged time. + * @enum {string} + */ + defaultUnit: "minute" | "hour" | "day" | "week"; + /** + * @description The format that will appear on an issue's *Time Spent* field. + * @enum {string} + */ + timeFormat: "pretty" | "days" | "hours"; + /** + * Format: double + * @description The number of days in a working week. + */ + workingDaysPerWeek: number; + /** + * Format: double + * @description The number of hours in a working day. + */ + workingHoursPerDay: number; + }; + /** @description Time tracking details. */ + TimeTrackingDetails: { + /** @description The original estimate of time needed for this issue in readable format. */ + originalEstimate?: string; + /** + * Format: int64 + * @description The original estimate of time needed for this issue in seconds. + */ + originalEstimateSeconds?: number; + /** @description The remaining estimate of time needed for this issue in readable format. */ + remainingEstimate?: string; + /** + * Format: int64 + * @description The remaining estimate of time needed for this issue in seconds. + */ + remainingEstimateSeconds?: number; + /** @description Time worked on this issue in readable format. */ + timeSpent?: string; + /** + * Format: int64 + * @description Time worked on this issue in seconds. + */ + timeSpentSeconds?: number; + }; + /** @description Details about the time tracking provider. */ + TimeTrackingProvider: { + /** @description The key for the time tracking provider. For example, *JIRA*. */ + key: string; + /** @description The name of the time tracking provider. For example, *JIRA provided time tracking*. */ + name?: string; + /** @description The URL of the configuration page for the time tracking provider app. For example, *\/example/config/url*. This property is only returned if the `adminPageKey` property is set in the module descriptor of the time tracking provider app. */ + url?: string; + }; + /** @description Details of a workflow transition. */ + Transition: { + /** @description The description of the transition. */ + description: string; + /** @description The statuses the transition can start from. */ + from: string[]; + /** @description The ID of the transition. */ + id: string; + /** @description The name of the transition. */ + name: string; + /** @description The properties of the transition. */ + properties?: { + [key: string]: unknown; + }; + rules?: components["schemas"]["WorkflowRules"]; + screen?: components["schemas"]["TransitionScreenDetails"]; + /** @description The status the transition goes to. */ + to: string; + /** + * @description The type of the transition. + * @enum {string} + */ + type: "global" | "initial" | "directed"; + }; + /** @description The details of a transition screen. */ + TransitionScreenDetails: { + /** @description The ID of the screen. */ + id: string; + /** @description The name of the screen. */ + name?: string; + }; + /** @description The transitions of this workflow. */ + TransitionUpdateDTO: { + /** @description The post-functions of the transition. */ + actions?: components["schemas"]["WorkflowRuleConfiguration"][]; + conditions?: components["schemas"]["ConditionGroupUpdate"]; + /** @description The custom event ID of the transition. */ + customIssueEventId?: string; + /** @description The description of the transition. */ + description?: string; + /** @description The statuses the transition can start from. */ + from?: components["schemas"]["StatusReferenceAndPort"][]; + /** @description The ID of the transition. */ + id: string; + /** @description The name of the transition. */ + name: string; + /** @description The properties of the transition. */ + properties?: { + [key: string]: string; + }; + to?: components["schemas"]["StatusReferenceAndPort"]; + transitionScreen?: components["schemas"]["WorkflowRuleConfiguration"]; + /** @description The triggers of the transition. */ + triggers?: components["schemas"]["WorkflowTrigger"][]; + /** + * @description The transition type. + * @enum {string} + */ + type: "INITIAL" | "GLOBAL" | "DIRECTED"; + /** @description The validators of the transition. */ + validators?: components["schemas"]["WorkflowRuleConfiguration"][]; + [key: string]: unknown; + }; + /** @description List of issue transitions. */ + Transitions: { + /** @description Expand options that include additional transitions details in the response. */ + expand?: string; + /** @description List of issue transitions. */ + transitions?: readonly components["schemas"]["IssueTransition"][]; + }; + /** @description The details of a UI modification's context, which define where to activate the UI modification. */ + UiModificationContextDetails: { + /** @description The ID of the UI modification context. */ + id?: string; + /** @description Whether a context is available. For example, when a project is deleted the context becomes unavailable. */ + isAvailable?: boolean; + /** @description The issue type ID of the context. Null is treated as a wildcard, meaning the UI modification will be applied to all issue types. Each UI modification context can have a maximum of one wildcard. */ + issueTypeId?: string; + /** @description The project ID of the context. Null is treated as a wildcard, meaning the UI modification will be applied to all projects. Each UI modification context can have a maximum of one wildcard. */ + projectId?: string; + /** + * @description The view type of the context. Only `GIC`(Global Issue Create) and `IssueView` are supported. Null is treated as a wildcard, meaning the UI modification will be applied to all view types. Each UI modification context can have a maximum of one wildcard. + * @enum {string} + */ + viewType?: "GIC" | "IssueView"; + }; + /** @description The details of a UI modification. */ + UiModificationDetails: { + /** @description List of contexts of the UI modification. The maximum number of contexts is 1000. */ + contexts?: readonly components["schemas"]["UiModificationContextDetails"][]; + /** @description The data of the UI modification. The maximum size of the data is 50000 characters. */ + data?: string; + /** @description The description of the UI modification. The maximum length is 255 characters. */ + description?: string; + /** @description The ID of the UI modification. */ + id: string; + /** @description The name of the UI modification. The maximum length is 255 characters. */ + name: string; + /** @description The URL of the UI modification. */ + self: string; + }; + /** @description Identifiers for a UI modification. */ + UiModificationIdentifiers: { + /** @description The ID of the UI modification. */ + id: string; + /** @description The URL of the UI modification. */ + self: string; + }; + UnrestrictedUserEmail: { + /** @description The accountId of the user */ + accountId?: string; + /** @description The email of the user */ + email?: string; + [key: string]: unknown; + }; + /** @description Details of a custom field. */ + UpdateCustomFieldDetails: { + /** @description The description of the custom field. The maximum length is 40000 characters. */ + description?: string; + /** @description The name of the custom field. It doesn't have to be unique. The maximum length is 255 characters. */ + name?: string; + /** + * @description The searcher that defines the way the field is searched in Jira. It can be set to `null`, otherwise you must specify the valid searcher for the field type, as listed below (abbreviated values shown): + * + * * `cascadingselect`: `cascadingselectsearcher` + * * `datepicker`: `daterange` + * * `datetime`: `datetimerange` + * * `float`: `exactnumber` or `numberrange` + * * `grouppicker`: `grouppickersearcher` + * * `importid`: `exactnumber` or `numberrange` + * * `labels`: `labelsearcher` + * * `multicheckboxes`: `multiselectsearcher` + * * `multigrouppicker`: `multiselectsearcher` + * * `multiselect`: `multiselectsearcher` + * * `multiuserpicker`: `userpickergroupsearcher` + * * `multiversion`: `versionsearcher` + * * `project`: `projectsearcher` + * * `radiobuttons`: `multiselectsearcher` + * * `readonlyfield`: `textsearcher` + * * `select`: `multiselectsearcher` + * * `textarea`: `textsearcher` + * * `textfield`: `textsearcher` + * * `url`: `exacttextsearcher` + * * `userpicker`: `userpickergroupsearcher` + * * `version`: `versionsearcher` + * @enum {string} + */ + searcherKey?: + | "com.atlassian.jira.plugin.system.customfieldtypes:cascadingselectsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:daterange" + | "com.atlassian.jira.plugin.system.customfieldtypes:datetimerange" + | "com.atlassian.jira.plugin.system.customfieldtypes:exactnumber" + | "com.atlassian.jira.plugin.system.customfieldtypes:exacttextsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:labelsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:multiselectsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:numberrange" + | "com.atlassian.jira.plugin.system.customfieldtypes:projectsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:textsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:userpickergroupsearcher" + | "com.atlassian.jira.plugin.system.customfieldtypes:versionsearcher"; + }; + /** @description The ID of a screen scheme. */ + UpdateDefaultScreenScheme: { + /** @description The ID of the screen scheme. */ + screenSchemeId: string; + }; + /** @description The details of the field configuration scheme. */ + UpdateFieldConfigurationSchemeDetails: { + /** @description The description of the field configuration scheme. */ + description?: string; + /** @description The name of the field configuration scheme. The name must be unique. */ + name: string; + }; + /** @description Details of issue security scheme level. */ + UpdateIssueSecurityLevelDetails: { + /** @description The description of the issue security scheme level. */ + description?: string; + /** @description The name of the issue security scheme level. Must be unique. */ + name?: string; + [key: string]: unknown; + }; + UpdateIssueSecuritySchemeRequestBean: { + /** @description The description of the security scheme scheme. */ + description?: string; + /** @description The name of the security scheme scheme. Must be unique. */ + name?: string; + }; + /** @description Details of a notification scheme. */ + UpdateNotificationSchemeDetails: { + /** @description The description of the notification scheme. */ + description?: string; + /** @description The name of the notification scheme. Must be unique. */ + name?: string; + [key: string]: unknown; + }; + /** @description Details of an issue priority. */ + UpdatePriorityDetails: { + /** @description The description of the priority. */ + description?: string; + /** + * @description The URL of an icon for the priority. Accepted protocols are HTTP and HTTPS. Built in icons can also be used. + * @enum {string} + */ + iconUrl?: + | "/images/icons/priorities/blocker.png" + | "/images/icons/priorities/critical.png" + | "/images/icons/priorities/high.png" + | "/images/icons/priorities/highest.png" + | "/images/icons/priorities/low.png" + | "/images/icons/priorities/lowest.png" + | "/images/icons/priorities/major.png" + | "/images/icons/priorities/medium.png" + | "/images/icons/priorities/minor.png" + | "/images/icons/priorities/trivial.png"; + /** @description The name of the priority. Must be unique. */ + name?: string; + /** @description The status color of the priority in 3-digit or 6-digit hexadecimal format. */ + statusColor?: string; + [key: string]: unknown; + }; + /** @description Details about the project. */ + UpdateProjectDetails: { + /** + * @description The default assignee when creating issues for this project. + * @enum {string} + */ + assigneeType?: "PROJECT_LEAD" | "UNASSIGNED"; + /** + * Format: int64 + * @description An integer value for the project's avatar. + */ + avatarId?: number; + /** + * Format: int64 + * @description The ID of the project's category. A complete list of category IDs is found using the [Get all project categories](#api-rest-api-3-projectCategory-get) operation. To remove the project category from the project, set the value to `-1.` + */ + categoryId?: number; + /** @description A brief description of the project. */ + description?: string; + /** + * Format: int64 + * @description The ID of the issue security scheme for the project, which enables you to control who can and cannot view issues. Use the [Get issue security schemes](#api-rest-api-3-issuesecurityschemes-get) resource to get all issue security scheme IDs. + */ + issueSecurityScheme?: number; + /** @description Project keys must be unique and start with an uppercase letter followed by one or more uppercase alphanumeric characters. The maximum length is 10 characters. */ + key?: string; + /** @description This parameter is deprecated because of privacy changes. Use `leadAccountId` instead. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. The user name of the project lead. Cannot be provided with `leadAccountId`. */ + lead?: string; + /** @description The account ID of the project lead. Cannot be provided with `lead`. */ + leadAccountId?: string; + /** @description The name of the project. */ + name?: string; + /** + * Format: int64 + * @description The ID of the notification scheme for the project. Use the [Get notification schemes](#api-rest-api-3-notificationscheme-get) resource to get a list of notification scheme IDs. + */ + notificationScheme?: number; + /** + * Format: int64 + * @description The ID of the permission scheme for the project. Use the [Get all permission schemes](#api-rest-api-3-permissionscheme-get) resource to see a list of all permission scheme IDs. + */ + permissionScheme?: number; + /** @description A link to information about this project, such as project documentation */ + url?: string; + }; + /** @description Details of an issue resolution. */ + UpdateResolutionDetails: { + /** @description The description of the resolution. */ + description?: string; + /** @description The name of the resolution. Must be unique. */ + name: string; + [key: string]: unknown; + }; + /** @description Details of a screen. */ + UpdateScreenDetails: { + /** @description The description of the screen. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the screen. The name must be unique. The maximum length is 255 characters. */ + name?: string; + }; + /** @description Details of a screen scheme. */ + UpdateScreenSchemeDetails: { + /** @description The description of the screen scheme. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the screen scheme. The name must be unique. The maximum length is 255 characters. */ + name?: string; + /** @description The IDs of the screens for the screen types of the screen scheme. Only screens used in classic projects are accepted. */ + screens?: components["schemas"]["UpdateScreenTypes"]; + }; + /** @description The IDs of the screens for the screen types of the screen scheme. */ + UpdateScreenTypes: { + /** @description The ID of the create screen. To remove the screen association, pass a null. */ + create?: string; + /** @description The ID of the default screen. When specified, must include a screen ID as a default screen is required. */ + default?: string; + /** @description The ID of the edit screen. To remove the screen association, pass a null. */ + edit?: string; + /** @description The ID of the view screen. To remove the screen association, pass a null. */ + view?: string; + }; + /** @description The details of a UI modification. */ + UpdateUiModificationDetails: { + /** @description List of contexts of the UI modification. The maximum number of contexts is 1000. If provided, replaces all existing contexts. */ + contexts?: components["schemas"]["UiModificationContextDetails"][]; + /** @description The data of the UI modification. The maximum size of the data is 50000 characters. */ + data?: string; + /** @description The description of the UI modification. The maximum length is 255 characters. */ + description?: string; + /** @description The name of the UI modification. The maximum length is 255 characters. */ + name?: string; + }; + UpdateUserToGroupBean: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This property is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + [key: string]: unknown; + }; + /** @description A project category. */ + UpdatedProjectCategory: { + /** @description The name of the project category. */ + description?: string; + /** @description The ID of the project category. */ + id?: string; + /** @description The description of the project category. */ + name?: string; + /** @description The URL of the project category. */ + self?: string; + }; + /** + * @description A user with details as permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions: + * + * * User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank). + * * User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values. + * * User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values. + */ + User: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Required in requests. */ + accountId?: string; + /** + * @description The user account type. Can take the following values: + * + * * `atlassian` regular Atlassian user account + * * `app` system account used for Connect applications and OAuth to represent external systems + * * `customer` Jira Service Desk account representing an external service desk + * @enum {string} + */ + accountType?: "atlassian" | "app" | "customer" | "unknown"; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The application roles the user is assigned to. */ + applicationRoles?: components["schemas"]["SimpleListWrapperApplicationRole"]; + /** @description The avatars of the user. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description The email address of the user. Depending on the user’s privacy setting, this may be returned as null. */ + emailAddress?: string; + /** @description Expand options that include additional user details in the response. */ + expand?: string; + /** @description The groups that the user belongs to. */ + groups?: components["schemas"]["SimpleListWrapperGroupName"]; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description The locale of the user. Depending on the user’s privacy setting, this may be returned as null. */ + locale?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy setting, this may be returned as null. */ + timeZone?: string; + }; + UserBean: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The avatars of the user. */ + avatarUrls?: components["schemas"]["UserBeanAvatarUrls"]; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + }; + UserBeanAvatarUrls: { + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + UserColumnRequestBody: { + columns?: string[]; + }; + /** @description A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user) specified as an Atlassian account ID. */ + UserContextVariable: { + /** @description The account ID of the user. */ + accountId: string; + /** @description Type of custom context variable. */ + type: string; + }; + /** + * @description User details permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions: + * + * * User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank). + * * User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values. + * * User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values. + */ + UserDetails: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user) */ + accountType?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The avatars of the user. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description The display name of the user. Depending on the user’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description The email address of the user. Depending on the user’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description The URL of the user. */ + self?: string; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null. */ + timeZone?: string; + }; + /** @description Filter for a User Picker (single) custom field. */ + UserFilter: { + /** @description Whether the filter is enabled. */ + enabled: boolean; + /** @description User groups autocomplete suggestion users must belong to. If not provided, the default values are used. A maximum of 10 groups can be provided. */ + groups?: string[]; + /** @description Roles that autocomplete suggestion users must belong to. If not provided, the default values are used. A maximum of 10 roles can be provided. */ + roleIds?: number[]; + }; + /** @description List of user account IDs. */ + UserKey: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Returns *unknown* if the record is deleted and corrupted, for example, as the result of a server import. */ + accountId?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + }; + /** @description A paginated list of users sharing the filter. This includes users that are members of the groups or can browse the projects that the filter is shared with. */ + UserList: { + /** + * Format: int32 + * @description The index of the last item returned on the page. + */ + "end-index"?: number; + /** @description The list of items. */ + items?: readonly components["schemas"]["User"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + "max-results"?: number; + /** + * Format: int32 + * @description The number of items on the page. + */ + size?: number; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + "start-index"?: number; + }; + UserMigrationBean: { + accountId?: string; + key?: string; + username?: string; + }; + /** @description Details of a permission and its availability to a user. */ + UserPermission: { + /** @description Indicate whether the permission key is deprecated. Note that deprecated keys cannot be used in the `permissions parameter of Get my permissions. Deprecated keys are not returned by Get all permissions.` */ + deprecatedKey?: boolean; + /** @description The description of the permission. */ + description?: string; + /** @description Whether the permission is available to the user in the queried context. */ + havePermission?: boolean; + /** @description The ID of the permission. Either `id` or `key` must be specified. Use [Get all permissions](#api-rest-api-3-permissions-get) to get the list of permissions. */ + id?: string; + /** @description The key of the permission. Either `id` or `key` must be specified. Use [Get all permissions](#api-rest-api-3-permissions-get) to get the list of permissions. */ + key?: string; + /** @description The name of the permission. */ + name?: string; + /** + * @description The type of the permission. + * @enum {string} + */ + type?: "GLOBAL" | "PROJECT"; + [key: string]: unknown; + }; + /** @description A user found in a search. */ + UserPickerUser: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** + * Format: uri + * @description The avatar URL of the user. + */ + avatarUrl?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may be returned as null. */ + displayName?: string; + /** @description The display name, email address, and key of the user with the matched query string highlighted with the HTML bold tag. */ + html?: string; + /** @description This property is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description This property is no longer available . See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + }; + /** @description The level of validation to return from the API. If no values are provided, the default would return `WARNING` and `ERROR` level validation results. */ + ValidationOptionsForCreate: { + levels?: ("WARNING" | "ERROR")[]; + }; + /** @description The level of validation to return from the API. If no values are provided, the default would return `WARNING` and `ERROR` level validation results. */ + ValidationOptionsForUpdate: { + levels?: ("WARNING" | "ERROR")[]; + }; + /** @description An operand that is a user-provided value. */ + ValueOperand: { + /** @description Encoded value, which can be used directly in a JQL query. */ + encodedValue?: string; + /** @description The operand value. */ + value: string; + }; + /** @description Details about a project version. */ + Version: { + /** @description If the expand option `approvers` is used, returns a list containing the approvers for this version. */ + approvers?: readonly components["schemas"]["VersionApprover"][]; + /** @description Indicates that the version is archived. Optional when creating or updating a version. */ + archived?: boolean; + /** @description The description of the version. Optional when creating or updating a version. The maximum size is 16,384 bytes. */ + description?: string; + /** @description If the expand option `driver` is used, returns the Atlassian account ID of the driver. */ + driver?: string; + /** + * @description Use [expand](em>#expansion) to include additional information about version in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `operations` Returns the list of operations available for this version. + * * `issuesstatus` Returns the count of issues in this version for each of the status categories *to do*, *in progress*, *done*, and *unmapped*. The *unmapped* property contains a count of issues with a status other than *to do*, *in progress*, and *done*. + * * `driver` Returns the Atlassian account ID of the version driver. + * * `approvers` Returns a list containing approvers for this version. + * + * Optional for create and update. + */ + expand?: string; + /** @description The ID of the version. */ + id?: string; + /** @description If the expand option `issuesstatus` is used, returns the count of issues in this version for each of the status categories *to do*, *in progress*, *done*, and *unmapped*. The *unmapped* property contains a count of issues with a status other than *to do*, *in progress*, and *done*. */ + issuesStatusForFixVersion?: components["schemas"]["VersionIssuesStatus"]; + /** + * Format: uri + * @description The URL of the self link to the version to which all unfixed issues are moved when a version is released. Not applicable when creating a version. Optional when updating a version. + */ + moveUnfixedIssuesTo?: string; + /** @description The unique name of the version. Required when creating a version. Optional when updating a version. The maximum length is 255 characters. */ + name?: string; + /** @description If the expand option `operations` is used, returns the list of operations available for this version. */ + operations?: readonly components["schemas"]["SimpleLink"][]; + /** @description Indicates that the version is overdue. */ + overdue?: boolean; + /** @description Deprecated. Use `projectId`. */ + project?: string; + /** + * Format: int64 + * @description The ID of the project to which this version is attached. Required when creating a version. Not applicable when updating a version. + */ + projectId?: number; + /** + * Format: date + * @description The release date of the version. Expressed in ISO 8601 format (yyyy-mm-dd). Optional when creating or updating a version. + */ + releaseDate?: string; + /** @description Indicates that the version is released. If the version is released a request to release again is ignored. Not applicable when creating a version. Optional when updating a version. */ + released?: boolean; + /** + * Format: uri + * @description The URL of the version. + */ + self?: string; + /** + * Format: date + * @description The start date of the version. Expressed in ISO 8601 format (yyyy-mm-dd). Optional when creating or updating a version. + */ + startDate?: string; + /** @description The date on which work on this version is expected to finish, expressed in the instance's *Day/Month/Year Format* date format. */ + userReleaseDate?: string; + /** @description The date on which work on this version is expected to start, expressed in the instance's *Day/Month/Year Format* date format. */ + userStartDate?: string; + }; + /** @description Contains details about a version approver. */ + VersionApprover: { + /** @description The Atlassian account ID of the approver. */ + accountId?: string; + /** @description A description of why the user is declining the approval. */ + declineReason?: string; + /** @description A description of what the user is approving within the specified version. */ + description?: string; + /** @description The status of the approval, which can be *PENDING*, *APPROVED*, or *DECLINED* */ + status?: string; + [key: string]: unknown; + }; + /** @description Various counts of issues within a version. */ + VersionIssueCounts: { + /** @description List of custom fields using the version. */ + customFieldUsage?: readonly components["schemas"]["VersionUsageInCustomField"][]; + /** + * Format: int64 + * @description Count of issues where a version custom field is set to the version. + */ + issueCountWithCustomFieldsShowingVersion?: number; + /** + * Format: int64 + * @description Count of issues where the `affectedVersion` is set to the version. + */ + issuesAffectedCount?: number; + /** + * Format: int64 + * @description Count of issues where the `fixVersion` is set to the version. + */ + issuesFixedCount?: number; + /** + * Format: uri + * @description The URL of these count details. + */ + self?: string; + }; + /** @description Counts of the number of issues in various statuses. */ + VersionIssuesStatus: { + /** + * Format: int64 + * @description Count of issues with status *done*. + */ + done?: number; + /** + * Format: int64 + * @description Count of issues with status *in progress*. + */ + inProgress?: number; + /** + * Format: int64 + * @description Count of issues with status *to do*. + */ + toDo?: number; + /** + * Format: int64 + * @description Count of issues with a status other than *to do*, *in progress*, and *done*. + */ + unmapped?: number; + [key: string]: unknown; + }; + VersionMoveBean: { + /** + * Format: uri + * @description The URL (self link) of the version after which to place the moved version. Cannot be used with `position`. + */ + after?: string; + /** + * @description An absolute position in which to place the moved version. Cannot be used with `after`. + * @enum {string} + */ + position?: "Earlier" | "Later" | "First" | "Last"; + }; + /** @description Associated related work to a version */ + VersionRelatedWork: { + /** @description The category of the related work */ + category: string; + /** + * Format: int64 + * @description The title of the related work + */ + issueId?: number; + /** @description The id of the related work. For the native release note related work item, this will be null, and Rest API does not support updating it. */ + relatedWorkId?: string; + /** @description The title of the related work */ + title?: string; + /** + * Format: uri + * @description The URL of the related work + */ + url?: string; + }; + /** @description Count of a version's unresolved issues. */ + VersionUnresolvedIssuesCount: { + /** + * Format: int64 + * @description Count of issues. + */ + issuesCount?: number; + /** + * Format: int64 + * @description Count of unresolved issues. + */ + issuesUnresolvedCount?: number; + /** + * Format: uri + * @description The URL of these count details. + */ + self?: string; + }; + /** @description List of custom fields using the version. */ + VersionUsageInCustomField: { + /** + * Format: int64 + * @description The ID of the custom field. + */ + customFieldId?: number; + /** @description The name of the custom field. */ + fieldName?: string; + /** + * Format: int64 + * @description Count of the issues where the custom field contains the version. + */ + issueCountWithVersionInCustomField?: number; + }; + /** @description The group or role to which this item is visible. */ + Visibility: { + /** @description The ID of the group or the name of the role that visibility of this item is restricted to. */ + identifier?: string | null; + /** + * @description Whether visibility of this item is restricted to a group or role. + * @enum {string} + */ + type?: "group" | "role"; + /** @description The name of the group or role that visibility of this item is restricted to. Please note that the name of a group is mutable, to reliably identify a group use `identifier`. */ + value?: string; + [key: string]: unknown; + }; + /** @description The details of votes on an issue. */ + Votes: { + /** @description Whether the user making this request has voted on the issue. */ + hasVoted?: boolean; + /** + * Format: uri + * @description The URL of these issue vote details. + */ + self?: string; + /** @description List of the users who have voted on this issue. An empty list is returned when the calling user doesn't have the *View voters and watchers* project permission. */ + voters?: readonly components["schemas"]["User"][]; + /** + * Format: int64 + * @description The number of votes on the issue. + */ + votes?: number; + }; + WarningCollection: { + warnings?: string[]; + }; + /** @description The details of watchers on an issue. */ + Watchers: { + /** @description Whether the calling user is watching this issue. */ + isWatching?: boolean; + /** @description The URL of these issue watcher details. */ + self?: string; + /** + * Format: int32 + * @description The number of users watching this issue. + */ + watchCount?: number; + /** @description Details of the users watching this issue. */ + watchers?: readonly components["schemas"]["UserDetails"][]; + }; + /** @description A webhook. */ + Webhook: { + /** @description The Jira events that trigger the webhook. */ + events: ( + | "jira:issue_created" + | "jira:issue_updated" + | "jira:issue_deleted" + | "comment_created" + | "comment_updated" + | "comment_deleted" + | "issue_property_set" + | "issue_property_deleted" + )[]; + /** + * Format: int64 + * @description The date after which the webhook is no longer sent. Use [Extend webhook life](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-webhooks/#api-rest-api-3-webhook-refresh-put) to extend the date. + */ + expirationDate?: number; + /** @description A list of field IDs. When the issue changelog contains any of the fields, the webhook `jira:issue_updated` is sent. If this parameter is not present, the app is notified about all field updates. */ + fieldIdsFilter?: string[]; + /** + * Format: int64 + * @description The ID of the webhook. + */ + id: number; + /** @description A list of issue property keys. A change of those issue properties triggers the `issue_property_set` or `issue_property_deleted` webhooks. If this parameter is not present, the app is notified about all issue property updates. */ + issuePropertyKeysFilter?: string[]; + /** @description The JQL filter that specifies which issues the webhook is sent for. */ + jqlFilter: string; + }; + /** @description A list of webhooks. */ + WebhookDetails: { + /** @description The Jira events that trigger the webhook. */ + events: ( + | "jira:issue_created" + | "jira:issue_updated" + | "jira:issue_deleted" + | "comment_created" + | "comment_updated" + | "comment_deleted" + | "issue_property_set" + | "issue_property_deleted" + )[]; + /** @description A list of field IDs. When the issue changelog contains any of the fields, the webhook `jira:issue_updated` is sent. If this parameter is not present, the app is notified about all field updates. */ + fieldIdsFilter?: string[]; + /** @description A list of issue property keys. A change of those issue properties triggers the `issue_property_set` or `issue_property_deleted` webhooks. If this parameter is not present, the app is notified about all issue property updates. */ + issuePropertyKeysFilter?: string[]; + /** + * @description The JQL filter that specifies which issues the webhook is sent for. Only a subset of JQL can be used. The supported elements are: + * + * * Fields: `issueKey`, `project`, `issuetype`, `status`, `assignee`, `reporter`, `issue.property`, and `cf[id]`. For custom fields (`cf[id]`), only the epic label custom field is supported.". + * * Operators: `=`, `!=`, `IN`, and `NOT IN`. + */ + jqlFilter: string; + }; + /** @description Details of webhooks to register. */ + WebhookRegistrationDetails: { + /** @description The URL that specifies where to send the webhooks. This URL must use the same base URL as the Connect app. Only a single URL per app is allowed to be registered. */ + url: string; + /** @description A list of webhooks. */ + webhooks: components["schemas"]["WebhookDetails"][]; + }; + /** @description The date the refreshed webhooks expire. */ + WebhooksExpirationDate: { + /** + * Format: int64 + * @description The expiration date of all the refreshed webhooks. + */ + expirationDate: number; + }; + WorkManagementNavigationInfo: { + boardName?: string; + }; + /** @description Details about a workflow. */ + Workflow: { + /** + * Format: date-time + * @description The creation date of the workflow. + */ + created?: string; + /** @description The description of the workflow. */ + description: string; + /** @description Whether the workflow has a draft version. */ + hasDraftWorkflow?: boolean; + id: components["schemas"]["PublishedWorkflowId"]; + /** @description Whether this is the default workflow. */ + isDefault?: boolean; + operations?: components["schemas"]["WorkflowOperations"]; + /** @description The projects the workflow is assigned to, through workflow schemes. */ + projects?: components["schemas"]["ProjectDetails"][]; + /** @description The workflow schemes the workflow is assigned to. */ + schemes?: components["schemas"]["WorkflowSchemeIdName"][]; + /** @description The statuses of the workflow. */ + statuses?: components["schemas"]["WorkflowStatus"][]; + /** @description The transitions of the workflow. */ + transitions?: components["schemas"]["Transition"][]; + /** + * Format: date-time + * @description The last edited date of the workflow. + */ + updated?: string; + }; + /** @description The list of status mappings. */ + WorkflowAssociationStatusMapping: { + /** @description The ID of the status in the new workflow. */ + newStatusId: string; + /** @description The ID of the status in the old workflow that isn't present in the new workflow. */ + oldStatusId: string; + }; + WorkflowCapabilities: { + /** @description The Connect provided ecosystem rules available. */ + connectRules?: components["schemas"]["AvailableWorkflowConnectRule"][]; + /** + * @description The scope of the workflow capabilities. `GLOBAL` for company-managed projects and `PROJECT` for team-managed projects. + * @enum {string} + */ + editorScope?: "PROJECT" | "GLOBAL"; + /** @description The Forge provided ecosystem rules available. */ + forgeRules?: components["schemas"]["AvailableWorkflowForgeRule"][]; + /** + * @description The types of projects that this capability set is available for. + * @enum {array} + */ + projectTypes?: unknown; + /** @description The Atlassian provided system rules available. */ + systemRules?: components["schemas"]["AvailableWorkflowSystemRule"][]; + /** @description The trigger rules available. */ + triggerRules?: components["schemas"]["AvailableWorkflowTriggers"][]; + }; + /** @description A compound workflow transition rule condition. This object returns `nodeType` as `compound`. */ + WorkflowCompoundCondition: { + /** @description The list of workflow conditions. */ + conditions: components["schemas"]["WorkflowCondition"][]; + nodeType: string; + /** + * @description The compound condition operator. + * @enum {string} + */ + operator: "AND" | "OR"; + }; + /** @description The workflow transition rule conditions tree. */ + WorkflowCondition: + | components["schemas"]["WorkflowSimpleCondition"] + | components["schemas"]["WorkflowCompoundCondition"]; + /** @description The details of the workflows to create. */ + WorkflowCreate: { + /** @description The description of the workflow to create. */ + description?: string; + /** @description The name of the workflow to create. */ + name: string; + startPointLayout?: components["schemas"]["WorkflowLayout"]; + /** @description The statuses associated with this workflow. */ + statuses: components["schemas"]["StatusLayoutUpdate"][]; + /** @description The transitions of this workflow. */ + transitions: components["schemas"]["TransitionUpdateDTO"][]; + }; + /** @description The create workflows payload. */ + WorkflowCreateRequest: { + scope: components["schemas"]["WorkflowScope"]; + /** @description The statuses to associate with the workflows. */ + statuses: components["schemas"]["WorkflowStatusUpdate"][]; + /** @description The details of the workflows to create. */ + workflows: components["schemas"]["WorkflowCreate"][]; + }; + /** @description Details of the created workflows and statuses. */ + WorkflowCreateResponse: { + /** @description List of created statuses. */ + statuses?: components["schemas"]["JiraWorkflowStatus"][]; + /** @description List of created workflows. */ + workflows?: components["schemas"]["JiraWorkflow"][]; + }; + WorkflowCreateValidateRequest: { + payload: components["schemas"]["WorkflowCreateRequest"]; + validationOptions?: components["schemas"]["ValidationOptionsForCreate"]; + }; + /** @description A reference to the location of the error. This will be null if the error does not refer to a specific element. */ + WorkflowElementReference: { + /** @description A property key. */ + propertyKey?: string; + /** @description A rule ID. */ + ruleId?: string; + statusMappingReference?: components["schemas"]["ProjectAndIssueTypePair"]; + /** @description A status reference. */ + statusReference?: string; + /** @description A transition ID. */ + transitionId?: string; + }; + /** @description The classic workflow identifiers. */ + WorkflowIDs: { + /** @description The entity ID of the workflow. */ + entityId?: string; + /** @description The name of the workflow. */ + name: string; + }; + /** @description Properties that identify a workflow. */ + WorkflowId: { + /** @description Whether the workflow is in the draft state. */ + draft: boolean; + /** @description The name of the workflow. */ + name: string; + }; + /** @description The starting point for the statuses in the workflow. */ + WorkflowLayout: { + /** + * Format: double + * @description The x axis location. + */ + x?: number; + /** + * Format: double + * @description The y axis location. + */ + y?: number; + } | null; + /** @description The workflow metadata and issue type IDs which use this workflow. */ + WorkflowMetadataAndIssueTypeRestModel: { + /** @description The list of issue type IDs for the mapping. */ + issueTypeIds: string[]; + workflow: components["schemas"]["WorkflowMetadataRestModel"]; + }; + /** @description Workflow metadata and usage detail. */ + WorkflowMetadataRestModel: { + /** @description The description of the workflow. */ + description: string; + /** @description The ID of the workflow. */ + id: string; + /** @description The name of the workflow. */ + name: string; + /** @description Use the optional `workflows.usages` expand to get additional information about the projects and issue types associated with the workflows in the workflow scheme. */ + usage: components["schemas"]["SimpleUsage"][]; + version: components["schemas"]["DocumentVersion"]; + }; + /** @description Operations allowed on a workflow */ + WorkflowOperations: { + /** @description Whether the workflow can be deleted. */ + canDelete: boolean; + /** @description Whether the workflow can be updated. */ + canEdit: boolean; + }; + WorkflowReadRequest: { + /** @description The list of projects and issue types to query. */ + projectAndIssueTypes?: components["schemas"]["ProjectAndIssueTypePair"][]; + /** @description The list of workflow IDs to query. */ + workflowIds?: string[]; + /** @description The list of workflow names to query. */ + workflowNames?: string[]; + }; + /** @description Details of workflows and related statuses. */ + WorkflowReadResponse: { + /** @description List of statuses. */ + statuses?: components["schemas"]["JiraWorkflowStatus"][]; + /** @description List of workflows. */ + workflows?: components["schemas"]["JiraWorkflow"][]; + }; + /** @description The statuses referenced in the workflow. */ + WorkflowReferenceStatus: { + /** @description Indicates if the status is deprecated. */ + deprecated?: boolean; + layout?: components["schemas"]["WorkflowStatusLayout"]; + /** @description The properties associated with the status. */ + properties?: { + [key: string]: string; + }; + /** @description The reference of the status. */ + statusReference?: string; + }; + /** @description The configuration of the rule. */ + WorkflowRuleConfiguration: { + /** @description The ID of the rule. */ + id?: string | null; + /** @description The parameters related to the rule. */ + parameters?: { + [key: string]: string; + }; + /** @description The rule key of the rule. */ + ruleKey: string; + } | null; + /** @description A collection of transition rules. */ + WorkflowRules: { + conditionsTree?: components["schemas"]["WorkflowCondition"]; + /** @description The workflow post functions. */ + postFunctions?: components["schemas"]["WorkflowTransitionRule"][]; + /** @description The workflow validators. */ + validators?: components["schemas"]["WorkflowTransitionRule"][]; + }; + /** @description Details of the workflow and its transition rules. */ + WorkflowRulesSearch: { + /** + * @description Use expand to include additional information in the response. This parameter accepts `transition` which, for each rule, returns information about the transition the rule is assigned to. + * @example transition + */ + expand?: string; + /** @description The list of workflow rule IDs. */ + ruleIds: string[]; + /** + * Format: uuid + * @description The workflow ID. + * @example a498d711-685d-428d-8c3e-bc03bb450ea7 + */ + workflowEntityId: string; + }; + /** @description Details of workflow transition rules. */ + WorkflowRulesSearchDetails: { + /** @description List of workflow rule IDs that do not belong to the workflow or can not be found. */ + invalidRules?: string[]; + /** @description List of valid workflow transition rules. */ + validRules?: components["schemas"]["WorkflowTransitionRules"][]; + /** + * Format: uuid + * @description The workflow ID. + * @example a498d711-685d-428d-8c3e-bc03bb450ea7 + */ + workflowEntityId?: string; + }; + /** @description Details about a workflow scheme. */ + WorkflowScheme: { + /** @description The name of the default workflow for the workflow scheme. The default workflow has *All Unassigned Issue Types* assigned to it in Jira. If `defaultWorkflow` is not specified when creating a workflow scheme, it is set to *Jira Workflow (jira)*. */ + defaultWorkflow?: string; + /** @description The description of the workflow scheme. */ + description?: string; + /** @description Whether the workflow scheme is a draft or not. */ + draft?: boolean; + /** + * Format: int64 + * @description The ID of the workflow scheme. + */ + id?: number; + /** @description The issue type to workflow mappings, where each mapping is an issue type ID and workflow name pair. Note that an issue type can only be mapped to one workflow in a workflow scheme. */ + issueTypeMappings?: { + [key: string]: string; + }; + /** @description The issue types available in Jira. */ + issueTypes?: { + [key: string]: components["schemas"]["IssueTypeDetails"]; + }; + /** @description The date-time that the draft workflow scheme was last modified. A modification is a change to the issue type-project mappings only. This property does not apply to non-draft workflows. */ + lastModified?: string; + /** @description The user that last modified the draft workflow scheme. A modification is a change to the issue type-project mappings only. This property does not apply to non-draft workflows. */ + lastModifiedUser?: components["schemas"]["User"]; + /** @description The name of the workflow scheme. The name must be unique. The maximum length is 255 characters. Required when creating a workflow scheme. */ + name?: string; + /** @description For draft workflow schemes, this property is the name of the default workflow for the original workflow scheme. The default workflow has *All Unassigned Issue Types* assigned to it in Jira. */ + originalDefaultWorkflow?: string; + /** @description For draft workflow schemes, this property is the issue type to workflow mappings for the original workflow scheme, where each mapping is an issue type ID and workflow name pair. Note that an issue type can only be mapped to one workflow in a workflow scheme. */ + originalIssueTypeMappings?: { + [key: string]: string; + }; + /** Format: uri */ + self?: string; + /** + * @description Whether to create or update a draft workflow scheme when updating an active workflow scheme. An active workflow scheme is a workflow scheme that is used by at least one project. The following examples show how this property works: + * + * * Update an active workflow scheme with `updateDraftIfNeeded` set to `true`: If a draft workflow scheme exists, it is updated. Otherwise, a draft workflow scheme is created. + * * Update an active workflow scheme with `updateDraftIfNeeded` set to `false`: An error is returned, as active workflow schemes cannot be updated. + * * Update an inactive workflow scheme with `updateDraftIfNeeded` set to `true`: The workflow scheme is updated, as inactive workflow schemes do not require drafts to update. + * + * Defaults to `false`. + */ + updateDraftIfNeeded?: boolean; + }; + /** @description The explicit association between issue types and a workflow in a workflow scheme. */ + WorkflowSchemeAssociation: { + /** @description The issue types assigned to the workflow. */ + issueTypeIds: string[]; + /** @description The ID of the workflow. */ + workflowId: string; + }; + /** @description A workflow scheme along with a list of projects that use it. */ + WorkflowSchemeAssociations: { + /** @description The list of projects that use the workflow scheme. */ + projectIds: string[]; + /** @description The workflow scheme. */ + workflowScheme: components["schemas"]["WorkflowScheme"]; + }; + /** @description The ID and the name of the workflow scheme. */ + WorkflowSchemeIdName: { + /** @description The ID of the workflow scheme. */ + id: string; + /** @description The name of the workflow scheme. */ + name: string; + }; + /** @description An associated workflow scheme and project. */ + WorkflowSchemeProjectAssociation: { + /** @description The ID of the project. */ + projectId: string; + /** @description The ID of the workflow scheme. If the workflow scheme ID is `null`, the operation assigns the default workflow scheme. */ + workflowSchemeId?: string; + }; + /** @description The workflow scheme read request body. */ + WorkflowSchemeReadRequest: { + /** @description The list of project IDs to query. */ + projectIds?: (string | null)[] | null; + /** @description The list of workflow scheme IDs to query. */ + workflowSchemeIds?: (string | null)[] | null; + }; + WorkflowSchemeReadResponse: { + defaultWorkflow?: components["schemas"]["WorkflowMetadataRestModel"]; + /** @description The description of the workflow scheme. */ + description?: string | null; + /** @description The ID of the workflow scheme. */ + id: string; + /** @description The name of the workflow scheme. */ + name: string; + /** @description The IDs of projects using the workflow scheme. */ + projectIdsUsingScheme: string[]; + scope: components["schemas"]["WorkflowScope"]; + /** @description Indicates if there's an [asynchronous task](#async-operations) for this workflow scheme. */ + taskId?: string | null; + version: components["schemas"]["DocumentVersion"]; + /** @description Mappings from workflows to issue types. */ + workflowsForIssueTypes: components["schemas"]["WorkflowMetadataAndIssueTypeRestModel"][]; + }; + /** @description The update workflow scheme payload. */ + WorkflowSchemeUpdateRequest: { + /** @description The ID of the workflow for issue types without having a mapping defined in this workflow scheme. Only used in global-scoped workflow schemes. If the `defaultWorkflowId` isn't specified, this is set to *Jira Workflow (jira)*. */ + defaultWorkflowId?: string; + /** @description The new description for this workflow scheme. */ + description: string; + /** @description The ID of this workflow scheme. */ + id: string; + /** @description The new name for this workflow scheme. */ + name: string; + /** @description Overrides, for the selected issue types, any status mappings provided in `statusMappingsByWorkflows`. Status mappings are required when the new workflow for an issue type doesn't contain all statuses that the old workflow has. Status mappings can be provided by a combination of `statusMappingsByWorkflows` and `statusMappingsByIssueTypeOverride`. */ + statusMappingsByIssueTypeOverride?: components["schemas"]["MappingsByIssueTypeOverride"][]; + /** @description The status mappings by workflows. Status mappings are required when the new workflow for an issue type doesn't contain all statuses that the old workflow has. Status mappings can be provided by a combination of `statusMappingsByWorkflows` and `statusMappingsByIssueTypeOverride`. */ + statusMappingsByWorkflows?: components["schemas"]["MappingsByWorkflow"][]; + version: components["schemas"]["DocumentVersion"]; + /** @description Mappings from workflows to issue types. */ + workflowsForIssueTypes?: components["schemas"]["WorkflowSchemeAssociation"][]; + [key: string]: unknown; + }; + /** @description The request payload to get the required mappings for updating a workflow scheme. */ + WorkflowSchemeUpdateRequiredMappingsRequest: { + /** @description The ID of the new default workflow for this workflow scheme. Only used in global-scoped workflow schemes. If it isn't specified, is set to *Jira Workflow (jira)*. */ + defaultWorkflowId?: string | null; + /** @description The ID of the workflow scheme. */ + id: string; + /** @description The new workflow to issue type mappings for this workflow scheme. */ + workflowsForIssueTypes: components["schemas"]["WorkflowSchemeAssociation"][]; + }; + WorkflowSchemeUpdateRequiredMappingsResponse: { + /** @description The list of required status mappings by issue type. */ + statusMappingsByIssueTypes?: components["schemas"]["RequiredMappingByIssueType"][]; + /** @description The list of required status mappings by workflow. */ + statusMappingsByWorkflows?: components["schemas"]["RequiredMappingByWorkflows"][]; + /** @description The details of the statuses in the associated workflows. */ + statuses?: components["schemas"]["StatusMetadata"][]; + /** @description The statuses associated with each workflow. */ + statusesPerWorkflow?: components["schemas"]["StatusesPerWorkflow"][]; + }; + /** @description The scope of the workflow. */ + WorkflowScope: { + project?: components["schemas"]["ProjectId"]; + /** + * @description The scope of the workflow. `GLOBAL` for company-managed projects and `PROJECT` for team-managed projects. + * @enum {string} + */ + type: "PROJECT" | "GLOBAL"; + }; + /** @description A workflow transition rule condition. This object returns `nodeType` as `simple`. */ + WorkflowSimpleCondition: { + /** @description EXPERIMENTAL. The configuration of the transition rule. */ + configuration?: Record; + nodeType: string; + /** @description The type of the transition rule. */ + type: string; + }; + /** @description Details of a workflow status. */ + WorkflowStatus: { + /** @description The ID of the issue status. */ + id: string; + /** @description The name of the status in the workflow. */ + name: string; + /** @description Additional properties that modify the behavior of issues in this status. Supports the properties `jira.issue.editable` and `issueEditable` (deprecated) that indicate whether issues are editable. */ + properties?: { + [key: string]: unknown; + }; + }; + /** @description The status reference and port that a transition is connected to. */ + WorkflowStatusAndPort: { + /** + * Format: int32 + * @description The port the transition is connected to this status. + */ + port?: number | null; + /** @description The reference of this status. */ + statusReference?: string; + } | null; + /** @description The x and y location of the status in the workflow. */ + WorkflowStatusLayout: { + /** + * Format: double + * @description The x axis location. + */ + x?: number | null; + /** + * Format: double + * @description The y axis location. + */ + y?: number | null; + } | null; + /** @description Details of the status being updated. */ + WorkflowStatusUpdate: { + /** @description The description of the status. */ + description?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The name of the status. */ + name: string; + /** + * @description The category of the status. + * @enum {string} + */ + statusCategory: "TODO" | "IN_PROGRESS" | "DONE"; + /** @description The reference of the status. */ + statusReference: string; + [key: string]: unknown; + }; + /** @description A workflow transition. */ + WorkflowTransition: { + /** + * Format: int32 + * @description The transition ID. + */ + id: number; + /** @description The transition name. */ + name: string; + }; + /** @description Details about the server Jira is running on. */ + WorkflowTransitionProperty: { + /** @description The ID of the transition property. */ + id?: string; + /** @description The key of the transition property. Also known as the name of the transition property. */ + key?: string; + /** @description The value of the transition property. */ + value: string; + [key: string]: unknown; + }; + /** @description A workflow transition rule. */ + WorkflowTransitionRule: { + /** @description EXPERIMENTAL. The configuration of the transition rule. */ + configuration?: unknown; + /** @description The type of the transition rule. */ + type: string; + }; + /** @description A workflow with transition rules. */ + WorkflowTransitionRules: { + /** @description The list of conditions within the workflow. */ + conditions?: components["schemas"]["AppWorkflowTransitionRule"][]; + /** @description The list of post functions within the workflow. */ + postFunctions?: components["schemas"]["AppWorkflowTransitionRule"][]; + /** @description The list of validators within the workflow. */ + validators?: components["schemas"]["AppWorkflowTransitionRule"][]; + workflowId: components["schemas"]["WorkflowId"]; + }; + /** @description Details about a workflow configuration update request. */ + WorkflowTransitionRulesDetails: { + workflowId: components["schemas"]["WorkflowId"]; + /** @description The list of connect workflow rule IDs. */ + workflowRuleIds: string[]; + }; + /** @description Details about a workflow configuration update request. */ + WorkflowTransitionRulesUpdate: { + /** @description The list of workflows with transition rules to update. */ + workflows: components["schemas"]["WorkflowTransitionRules"][]; + }; + /** @description Details of any errors encountered while updating workflow transition rules for a workflow. */ + WorkflowTransitionRulesUpdateErrorDetails: { + /** @description A list of transition rule update errors, indexed by the transition rule ID. Any transition rule that appears here wasn't updated. */ + ruleUpdateErrors: { + [key: string]: string[]; + }; + /** @description The list of errors that specify why the workflow update failed. The workflow was not updated if the list contains any entries. */ + updateErrors: string[]; + workflowId: components["schemas"]["WorkflowId"]; + }; + /** @description Details of any errors encountered while updating workflow transition rules. */ + WorkflowTransitionRulesUpdateErrors: { + /** @description A list of workflows. */ + updateResults: components["schemas"]["WorkflowTransitionRulesUpdateErrorDetails"][]; + }; + /** @description The transitions of the workflow. */ + WorkflowTransitions: { + /** @description The post-functions of the transition. */ + actions?: components["schemas"]["WorkflowRuleConfiguration"][]; + conditions?: components["schemas"]["ConditionGroupConfiguration"]; + /** @description The custom event ID of the transition. */ + customIssueEventId?: string | null; + /** @description The description of the transition. */ + description?: string; + /** @description The statuses the transition can start from. */ + from?: components["schemas"]["WorkflowStatusAndPort"][]; + /** @description The ID of the transition. */ + id?: string; + /** @description The name of the transition. */ + name?: string; + /** @description The properties of the transition. */ + properties?: { + [key: string]: string; + }; + to?: components["schemas"]["WorkflowStatusAndPort"]; + transitionScreen?: components["schemas"]["WorkflowRuleConfiguration"]; + /** @description The triggers of the transition. */ + triggers?: components["schemas"]["WorkflowTrigger"][]; + /** + * @description The transition type. + * @enum {string} + */ + type?: "INITIAL" | "GLOBAL" | "DIRECTED"; + /** @description The validators of the transition. */ + validators?: components["schemas"]["WorkflowRuleConfiguration"][]; + }; + /** @description The trigger configuration associated with a workflow. */ + WorkflowTrigger: { + /** @description The ID of the trigger. */ + id?: string; + /** @description The parameters of the trigger. */ + parameters: { + [key: string]: string; + }; + /** @description The rule key of the trigger. */ + ruleKey: string; + }; + /** @description The details of the workflows to update. */ + WorkflowUpdate: { + /** @description The mapping of old to new status ID. */ + defaultStatusMappings?: components["schemas"]["StatusMigration"][]; + /** @description The new description for this workflow. */ + description?: string; + /** @description The ID of this workflow. */ + id: string; + startPointLayout?: components["schemas"]["WorkflowLayout"]; + /** @description The mapping of old to new status ID for a specific project and issue type. */ + statusMappings?: components["schemas"]["StatusMappingDTO"][]; + /** @description The statuses associated with this workflow. */ + statuses: components["schemas"]["StatusLayoutUpdate"][]; + /** @description The transitions of this workflow. */ + transitions: components["schemas"]["TransitionUpdateDTO"][]; + version: components["schemas"]["DocumentVersion"]; + [key: string]: unknown; + }; + /** @description The update workflows payload. */ + WorkflowUpdateRequest: { + /** @description The statuses to associate with the workflows. */ + statuses: components["schemas"]["WorkflowStatusUpdate"][]; + /** @description The details of the workflows to update. */ + workflows: components["schemas"]["WorkflowUpdate"][]; + }; + WorkflowUpdateResponse: { + /** @description List of updated statuses. */ + statuses?: components["schemas"]["JiraWorkflowStatus"][]; + /** @description If there is a [asynchronous task](#async-operations) operation, as a result of this update. */ + taskId?: string | null; + /** @description List of updated workflows. */ + workflows?: components["schemas"]["JiraWorkflow"][]; + }; + WorkflowUpdateValidateRequestBean: { + payload: components["schemas"]["WorkflowUpdateRequest"]; + validationOptions?: components["schemas"]["ValidationOptionsForUpdate"]; + }; + /** @description The workflows that use this status. Only available if the `workflowUsages` expand is requested. */ + WorkflowUsages: { + /** @description Workflow ID. */ + workflowId?: string; + /** @description Workflow name. */ + workflowName?: string; + }; + /** @description The details about a workflow validation error. */ + WorkflowValidationError: { + /** @description An error code. */ + code?: string; + elementReference?: components["schemas"]["WorkflowElementReference"]; + /** + * @description The validation error level. + * @enum {string} + */ + level?: "WARNING" | "ERROR"; + /** @description An error message. */ + message?: string; + /** + * @description The type of element the error or warning references. + * @enum {string} + */ + type?: + | "RULE" + | "STATUS" + | "STATUS_LAYOUT" + | "STATUS_PROPERTY" + | "WORKFLOW" + | "TRANSITION" + | "TRANSITION_PROPERTY" + | "SCOPE" + | "STATUS_MAPPING" + | "TRIGGER"; + }; + WorkflowValidationErrorList: { + /** @description The list of validation errors. */ + errors?: components["schemas"]["WorkflowValidationError"][]; + }; + /** @description Details of workflows and their transition rules to delete. */ + WorkflowsWithTransitionRulesDetails: { + /** @description The list of workflows with transition rules to delete. */ + workflows: components["schemas"]["WorkflowTransitionRulesDetails"][]; + }; + /** @description Details of a worklog. */ + Worklog: { + /** @description Details of the user who created the worklog. */ + author?: components["schemas"]["UserDetails"]; + /** @description A comment about the worklog in [Atlassian Document Format](https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/). Optional when creating or updating a worklog. */ + comment?: unknown; + /** + * Format: date-time + * @description The datetime on which the worklog was created. + */ + created?: string; + /** @description The ID of the worklog record. */ + id?: string; + /** @description The ID of the issue this worklog is for. */ + issueId?: string; + /** @description Details of properties for the worklog. Optional when creating or updating a worklog. */ + properties?: components["schemas"]["EntityProperty"][]; + /** + * Format: uri + * @description The URL of the worklog item. + */ + self?: string; + /** + * Format: date-time + * @description The datetime on which the worklog effort was started. Required when creating a worklog. Optional when updating a worklog. + */ + started?: string; + /** @description The time spent working on the issue as days (\#d), hours (\#h), or minutes (\#m or \#). Required when creating a worklog if `timeSpentSeconds` isn't provided. Optional when updating a worklog. Cannot be provided if `timeSpentSecond` is provided. */ + timeSpent?: string; + /** + * Format: int64 + * @description The time in seconds spent working on the issue. Required when creating a worklog if `timeSpent` isn't provided. Optional when updating a worklog. Cannot be provided if `timeSpent` is provided. + */ + timeSpentSeconds?: number; + /** @description Details of the user who last updated the worklog. */ + updateAuthor?: components["schemas"]["UserDetails"]; + /** + * Format: date-time + * @description The datetime on which the worklog was last updated. + */ + updated?: string; + /** @description Details about any restrictions in the visibility of the worklog. Optional when creating or updating a worklog. */ + visibility?: components["schemas"]["Visibility"]; + [key: string]: unknown; + }; + WorklogIdsRequestBean: { + /** @description A list of worklog IDs. */ + ids: number[]; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} + +export type $defs = Record; + +export type external = Record; + +export interface operations { + /** + * Get announcement banner configuration + * @description Returns the current announcement banner configuration. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getBanner: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["AnnouncementBannerConfiguration"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Update announcement banner configuration + * @description Updates the announcement banner configuration. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setBanner: { + requestBody: { + content: { + /** + * @example { + * "isDismissible": false, + * "isEnabled": true, + * "message": "This is a public, enabled, non-dismissible banner, set using the API", + * "visibility": "public" + * } + */ + "application/json": components["schemas"]["AnnouncementBannerConfigurationUpdate"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if an invalid parameter is passed. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Update custom fields + * @description Updates the value of one or more custom fields on one or more issues. Combinations of custom field and issue should be unique within the request. + * + * Apps can only perform this operation on [custom fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) declared in their own manifests. + * + * **[Permissions](#permissions) required:** Only the app that owns the custom field or custom field type can update its values with this operation. + */ + updateMultipleCustomFieldValues: { + parameters: { + query?: { + /** @description Whether to generate a changelog for this update. */ + generateChangelog?: boolean; + }; + }; + requestBody: { + content: { + /** + * @example { + * "updates": [ + * { + * "customField": "customfield_10010", + * "issueIds": [ + * 10010, + * 10011 + * ], + * "value": "new value" + * }, + * { + * "customField": "customfield_10011", + * "issueIds": [ + * 10010 + * ], + * "value": 1000 + * } + * ] + * } + */ + "application/json": components["schemas"]["MultipleCustomFieldValuesUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as the app that provided all the fields. */ + 403: { + content: never; + }; + /** @description Returned if any field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get custom field configurations + * @description Returns a [paginated](#pagination) list of configurations for a custom field of a [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created by a [Forge app](https://developer.atlassian.com/platform/forge/). + * + * The result can be filtered by one of these criteria: + * + * * `id`. + * * `fieldContextId`. + * * `issueId`. + * * `projectKeyOrId` and `issueTypeId`. + * + * Otherwise, all configurations are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the Forge app that provided the custom field type. + */ + getCustomFieldConfiguration: { + parameters: { + query?: { + /** @description The list of configuration IDs. To include multiple configurations, separate IDs with an ampersand: `id=10000&id=10001`. Can't be provided with `fieldContextId`, `issueId`, `projectKeyOrId`, or `issueTypeId`. */ + id?: number[]; + /** @description The list of field context IDs. To include multiple field contexts, separate IDs with an ampersand: `fieldContextId=10000&fieldContextId=10001`. Can't be provided with `id`, `issueId`, `projectKeyOrId`, or `issueTypeId`. */ + fieldContextId?: number[]; + /** @description The ID of the issue to filter results by. If the issue doesn't exist, an empty list is returned. Can't be provided with `projectKeyOrId`, or `issueTypeId`. */ + issueId?: number; + /** @description The ID or key of the project to filter results by. Must be provided with `issueTypeId`. Can't be provided with `issueId`. */ + projectKeyOrId?: string; + /** @description The ID of the issue type to filter results by. Must be provided with `projectKeyOrId`. Can't be provided with `issueId`. */ + issueTypeId?: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID or key of the custom field, for example `customfield_10000`. */ + fieldIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanContextualConfiguration"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user is not a Jira admin or the request is not authenticated as from the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update custom field configurations + * @description Update the configuration for contexts of a custom field of a [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created by a [Forge app](https://developer.atlassian.com/platform/forge/). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the Forge app that created the custom field type. + */ + updateCustomFieldConfiguration: { + parameters: { + path: { + /** @description The ID or key of the custom field, for example `customfield_10000`. */ + fieldIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "configurations": [ + * { + * "id": "10000" + * }, + * { + * "configuration": { + * "maxValue": 10000, + * "minValue": 0 + * }, + * "id": "10001", + * "schema": { + * "properties": { + * "amount": { + * "type": "number" + * }, + * "currency": { + * "type": "string" + * } + * }, + * "required": [ + * "amount", + * "currency" + * ] + * } + * } + * ] + * } + */ + "application/json": components["schemas"]["CustomFieldConfigurations"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user is not a Jira admin or the request is not authenticated as from the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update custom field value + * @description Updates the value of a custom field on one or more issues. + * + * Apps can only perform this operation on [custom fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) declared in their own manifests. + * + * **[Permissions](#permissions) required:** Only the app that owns the custom field or custom field type can update its values with this operation. + */ + updateCustomFieldValue: { + parameters: { + query?: { + /** @description Whether to generate a changelog for this update. */ + generateChangelog?: boolean; + }; + path: { + /** @description The ID or key of the custom field. For example, `customfield_10010`. */ + fieldIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "updates": [ + * { + * "issueIds": [ + * 10010 + * ], + * "value": "new value" + * } + * ] + * } + */ + "application/json": components["schemas"]["CustomFieldValueUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if the field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get application property + * @description Returns all application properties or an application property. + * + * If you specify a value for the `key` parameter, then an application property is returned as an object (not in an array). Otherwise, an array of all editable application properties is returned. See [Set application property](#api-rest-api-3-application-properties-id-put) for descriptions of editable properties. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getApplicationProperty: { + parameters: { + query?: { + /** @description The key of the application property. */ + key?: string; + /** @description The permission level of all items being returned in the list. */ + permissionLevel?: string; + /** @description When a `key` isn't provided, this filters the list of results by the application property `key` using a regular expression. For example, using `jira.lf.*` will return all application properties with keys that start with *jira.lf.*. */ + keyFilter?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ApplicationProperty"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the application property is not found or the user does not have permission to view it. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get advanced settings + * @description Returns the application properties that are accessible on the *Advanced Settings* page. To navigate to the *Advanced Settings* page in Jira, choose the Jira icon > **Jira settings** > **System**, **General Configuration** and then click **Advanced Settings** (in the upper right). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAdvancedSettings: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ApplicationProperty"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user is not an administrator. */ + 403: { + content: never; + }; + }; + }; + /** + * Set application property + * @description Changes the value of an application property. For example, you can change the value of the `jira.clone.prefix` from its default value of *CLONE -* to *Clone -* if you prefer sentence case capitalization. Editable properties are described below along with their default values. + * + * #### Advanced settings #### + * + * The advanced settings below are also accessible in [Jira](https://confluence.atlassian.com/x/vYXKM). + * + * | Key | Description | Default value | + * | -- | -- | -- | + * | `jira.clone.prefix` | The string of text prefixed to the title of a cloned issue. | `CLONE -` | + * | `jira.date.picker.java.format` | The date format for the Java (server-side) generated dates. This must be the same as the `jira.date.picker.javascript.format` format setting. | `d/MMM/yy` | + * | `jira.date.picker.javascript.format` | The date format for the JavaScript (client-side) generated dates. This must be the same as the `jira.date.picker.java.format` format setting. | `%e/%b/%y` | + * | `jira.date.time.picker.java.format` | The date format for the Java (server-side) generated date times. This must be the same as the `jira.date.time.picker.javascript.format` format setting. | `dd/MMM/yy h:mm a` | + * | `jira.date.time.picker.javascript.format` | The date format for the JavaScript (client-side) generated date times. This must be the same as the `jira.date.time.picker.java.format` format setting. | `%e/%b/%y %I:%M %p` | + * | `jira.issue.actions.order` | The default order of actions (such as *Comments* or *Change history*) displayed on the issue view. | `asc` | + * | `jira.view.issue.links.sort.order` | The sort order of the list of issue links on the issue view. | `type, status, priority` | + * | `jira.comment.collapsing.minimum.hidden` | The minimum number of comments required for comment collapsing to occur. A value of `0` disables comment collapsing. | `4` | + * | `jira.newsletter.tip.delay.days` | The number of days before a prompt to sign up to the Jira Insiders newsletter is shown. A value of `-1` disables this feature. | `7` | + * + * + * #### Look and feel #### + * + * The settings listed below adjust the [look and feel](https://confluence.atlassian.com/x/VwCLLg). + * + * | Key | Description | Default value | + * | -- | -- | -- | + * | `jira.lf.date.time` | The [ time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `h:mm a` | + * | `jira.lf.date.day` | The [ day format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `EEEE h:mm a` | + * | `jira.lf.date.complete` | The [ date and time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `dd/MMM/yy h:mm a` | + * | `jira.lf.date.dmy` | The [ date format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `dd/MMM/yy` | + * | `jira.date.time.picker.use.iso8061` | When enabled, sets Monday as the first day of the week in the date picker, as specified by the ISO8601 standard. | `false` | + * | `jira.lf.logo.url` | The URL of the logo image file. | `/images/icon-jira-logo.png` | + * | `jira.lf.logo.show.application.title` | Controls the visibility of the application title on the sidebar. | `false` | + * | `jira.lf.favicon.url` | The URL of the favicon. | `/favicon.ico` | + * | `jira.lf.favicon.hires.url` | The URL of the high-resolution favicon. | `/images/64jira.png` | + * | `jira.lf.navigation.bgcolour` | The background color of the sidebar. | `#0747A6` | + * | `jira.lf.navigation.highlightcolour` | The color of the text and logo of the sidebar. | `#DEEBFF` | + * | `jira.lf.hero.button.base.bg.colour` | The background color of the hero button. | `#3b7fc4` | + * | `jira.title` | The text for the application title. The application title can also be set in *General settings*. | `Jira` | + * | `jira.option.globalsharing` | Whether filters and dashboards can be shared with anyone signed into Jira. | `true` | + * | `xflow.product.suggestions.enabled` | Whether to expose product suggestions for other Atlassian products within Jira. | `true` | + * + * + * #### Other settings #### + * + * | Key | Description | Default value | + * | -- | -- | -- | + * | `jira.issuenav.criteria.autoupdate` | Whether instant updates to search criteria is active. | `true` | + * + * + * *Note: Be careful when changing [application properties and advanced settings](https://confluence.atlassian.com/x/vYXKM).* + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setApplicationProperty: { + parameters: { + path: { + /** @description The key of the application property to update. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "id": "jira.home", + * "value": "/var/jira/jira-home" + * } + */ + "application/json": components["schemas"]["SimpleApplicationPropertyBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ApplicationProperty"]; + }; + }; + /** @description Returned if the data type of the `value` does not match the application property's data type. For example, a string is provided instead of an integer. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have permission to edit the property. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the property is not found or the user does not have permission to view it. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all application roles + * @description Returns all application roles. In Jira, application roles are managed using the [Application access configuration](https://confluence.atlassian.com/x/3YxjL) page. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllApplicationRoles: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ApplicationRole"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user is not an administrator. */ + 403: { + content: never; + }; + }; + }; + /** + * Get application role + * @description Returns an application role. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getApplicationRole: { + parameters: { + path: { + /** @description The key of the application role. Use the [Get all application roles](#api-rest-api-3-applicationrole-get) operation to get the key for each application role. */ + key: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ApplicationRole"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user is not an administrator. */ + 403: { + content: never; + }; + /** @description Returned if the role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get attachment content + * @description Returns the contents of an attachment. A `Range` header can be set to define a range of bytes within the attachment to download. See the [HTTP Range header standard](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range) for details. + * + * To return a thumbnail of the attachment, use [Get attachment thumbnail](#api-rest-api-3-attachment-thumbnail-id-get). + * + * This operation can be accessed anonymously. + * + * **[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. + */ + getAttachmentContent: { + parameters: { + query?: { + /** @description Whether a redirect is provided for the attachment download. Clients that do not automatically follow redirects can set this to `false` to avoid making multiple requests to download the attachment. */ + redirect?: boolean; + }; + path: { + /** @description The ID of the attachment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful when `redirect` is set to `false`. */ + 200: { + content: { + "application/json": components["schemas"]["StreamingResponseBody"]; + }; + }; + /** @description Returned if the request is successful when a `Range` header is provided and `redirect` is set to `false`. */ + 206: { + content: never; + }; + /** @description Returned if the request is successful. See the `Location` header for the download URL. */ + 303: { + content: never; + }; + /** @description Returned if the range supplied in the `Range` header is malformed. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description The user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: never; + }; + /** @description Returned if the server is unable to satisfy the range of bytes provided. */ + 416: { + content: never; + }; + }; + }; + /** + * Get Jira attachment settings + * @description Returns the attachment settings, that is, whether attachments are enabled and the maximum attachment size allowed. + * + * Note that there are also [project permissions](https://confluence.atlassian.com/x/yodKLg) that restrict whether users can create and delete attachments. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAttachmentMeta: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["AttachmentSettings"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get attachment thumbnail + * @description Returns the thumbnail of an attachment. + * + * To return the attachment contents, use [Get attachment content](#api-rest-api-3-attachment-content-id-get). + * + * This operation can be accessed anonymously. + * + * **[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. + */ + getAttachmentThumbnail: { + parameters: { + query?: { + /** @description Whether a redirect is provided for the attachment download. Clients that do not automatically follow redirects can set this to `false` to avoid making multiple requests to download the attachment. */ + redirect?: boolean; + /** @description Whether a default thumbnail is returned when the requested thumbnail is not found. */ + fallbackToDefault?: boolean; + /** @description The maximum width to scale the thumbnail to. */ + width?: number; + /** @description The maximum height to scale the thumbnail to. */ + height?: number; + }; + path: { + /** @description The ID of the attachment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful when `redirect` is set to `false`. */ + 200: { + content: { + "application/json": components["schemas"]["StreamingResponseBody"]; + }; + }; + /** @description Returned if the request is successful. See the `Location` header for the download URL. */ + 303: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description The user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + * * `fallbackToDefault` is `false` and the request thumbnail cannot be downloaded. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get attachment metadata + * @description Returns the metadata for an attachment. Note that the attachment itself is not returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getAttachment: { + parameters: { + path: { + /** @description The ID of the attachment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["AttachmentMetadata"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete attachment + * @description Deletes an attachment from an issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** For the project holding the issue containing the attachment: + * + * * *Delete own attachments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment created by the calling user. + * * *Delete all attachments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment created by any user. + */ + removeAttachment: { + parameters: { + path: { + /** @description The ID of the attachment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get all metadata for an expanded attachment + * @description Returns the metadata for the contents of an attachment, if it is an archive, and metadata for the attachment itself. For example, if the attachment is a ZIP archive, then information about the files in the archive is returned and metadata for the ZIP archive. Currently, only the ZIP archive format is supported. + * + * Use this operation to retrieve data that is presented to the user, as this operation returns the metadata for the attachment itself, such as the attachment's ID and name. Otherwise, use [ Get contents metadata for an expanded attachment](#api-rest-api-3-attachment-id-expand-raw-get), which only returns the metadata for the attachment's contents. + * + * This operation can be accessed anonymously. + * + * **[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. + */ + expandAttachmentForHumans: { + parameters: { + path: { + /** @description The ID of the attachment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. If an empty list is returned in the response, the attachment is empty, corrupt, or not an archive. */ + 200: { + content: { + "application/json": components["schemas"]["AttachmentArchiveMetadataReadable"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description The user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: never; + }; + /** @description Returned if the attachment is an archive, but not a supported archive format. */ + 409: { + content: never; + }; + }; + }; + /** + * Get contents metadata for an expanded attachment + * @description Returns the metadata for the contents of an attachment, if it is an archive. For example, if the attachment is a ZIP archive, then information about the files in the archive is returned. Currently, only the ZIP archive format is supported. + * + * Use this operation if you are processing the data without presenting it to the user, as this operation only returns the metadata for the contents of the attachment. Otherwise, to retrieve data to present to the user, use [ Get all metadata for an expanded attachment](#api-rest-api-3-attachment-id-expand-human-get) which also returns the metadata for the attachment itself, such as the attachment's ID and name. + * + * This operation can be accessed anonymously. + * + * **[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. + */ + expandAttachmentForMachines: { + parameters: { + path: { + /** @description The ID of the attachment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. If an empty list is returned in the response, the attachment is empty, corrupt, or not an archive. */ + 200: { + content: { + "application/json": components["schemas"]["AttachmentArchiveImpl"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description The user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: never; + }; + /** @description Returned if the attachment is an archive, but not a supported archive format. */ + 409: { + content: never; + }; + }; + }; + /** + * Get audit records + * @description Returns a list of audit records. The list can be filtered to include items: + * + * * where each item in `filter` has at least one match in any of these fields: + * + * * `summary` + * * `category` + * * `eventSource` + * * `objectItem.name` If the object is a user, account ID is available to filter. + * * `objectItem.parentName` + * * `objectItem.typeName` + * * `changedValues.changedFrom` + * * `changedValues.changedTo` + * * `remoteAddress` + * + * For example, if `filter` contains *man ed*, an audit record containing `summary": "User added to group"` and `"category": "group management"` is returned. + * * created on or after a date and time. + * * created or or before a date and time. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAuditRecords: { + parameters: { + query?: { + /** @description The number of records to skip before returning the first result. */ + offset?: number; + /** @description The maximum number of results to return. */ + limit?: number; + /** @description The strings to match with audit field content, space separated. */ + filter?: string; + /** @description The date and time on or after which returned audit records must have been created. If `to` is provided `from` must be before `to` or no audit records are returned. */ + from?: string; + /** @description The date and time on or before which returned audit results must have been created. If `from` is provided `to` must be after `from` or no audit records are returned. */ + to?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["AuditRecords"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** + * @description Returned if: + * + * * the user does not have the required permissions. + * * all Jira products are on free plans. Audit logs are available when at least one Jira product is on a paid plan. + */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get system avatars by type + * @description Returns a list of system avatar details by owner type, where the owner types are issue type, project, or user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAllSystemAvatars: { + parameters: { + path: { + /** @description The avatar type. */ + type: "issuetype" | "project" | "user"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SystemAvatars"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if an error occurs while retrieving the list of avatars. */ + 500: { + content: never; + }; + }; + }; + /** + * Get comments by IDs + * @description Returns a [paginated](#pagination) list of comments specified by a list of comment IDs. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Comments are returned where the user: + * + * * has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the comment. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getCommentsByIds: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about comments in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `renderedBody` Returns the comment body rendered in HTML. + * * `properties` Returns the comment's properties. + */ + expand?: string; + }; + }; + /** @description The list of comment IDs. */ + requestBody: { + content: { + /** + * @example { + * "ids": [ + * 1, + * 2, + * 5, + * 10 + * ] + * } + */ + "application/json": components["schemas"]["IssueCommentListRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanComment"]; + }; + }; + /** @description Returned if the request contains more than 1000 IDs or is empty. */ + 400: { + content: never; + }; + }; + }; + /** + * Get comment property keys + * @description Returns the keys of all the properties of a comment. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getCommentPropertyKeys: { + parameters: { + path: { + /** @description The ID of the comment. */ + commentId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the comment ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the comment is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get comment property + * @description Returns the value of a comment property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getCommentProperty: { + parameters: { + path: { + /** @description The ID of the comment. */ + commentId: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the comment or the property is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set comment property + * @description Creates or updates the value of a property for a comment. Use this resource to store custom data against a comment. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** either of: + * + * * *Edit All Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value of a property on any comment. + * * *Edit Own Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value of a property on a comment created by the user. + * + * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or group. + */ + setCommentProperty: { + parameters: { + path: { + /** @description The ID of the comment. */ + commentId: string; + /** @description The key of the property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the comment property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the comment property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the comment is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete comment property + * @description Deletes a comment property. + * + * **[Permissions](#permissions) required:** either of: + * + * * *Edit All Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from any comment. + * * *Edit Own Comments* [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from a comment created by the user. + * + * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or group. + */ + deleteCommentProperty: { + parameters: { + path: { + /** @description The ID of the comment. */ + commentId: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the comment or the property is not found or the user has the necessary project permissions but isn't a member of the role or group visibility of the comment is restricted to. */ + 404: { + content: never; + }; + }; + }; + /** + * Create component + * @description Creates a component. Use components to provide containers for issues within a project. Use components to provide containers for issues within a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the component is created or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createComponent: { + requestBody: { + content: { + /** + * @example { + * "assigneeType": "PROJECT_LEAD", + * "description": "This is a Jira component", + * "isAssigneeTypeValid": false, + * "leadAccountId": "5b10a2844c20165700ede21g", + * "name": "Component 1", + * "project": "HSP" + * } + */ + "application/json": components["schemas"]["ProjectComponent"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["ProjectComponent"]; + }; + }; + /** + * @description Returned if: + * + * * the user is not found. + * * `name` is not provided. + * * `name` is over 255 characters in length. + * * `projectId` is not provided. + * * `assigneeType` is an invalid value. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to manage the project containing the component or does not have permission to administer Jira. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to browse the project containing the component. */ + 404: { + content: never; + }; + }; + }; + /** + * Get component + * @description Returns a component. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for project containing the component. + */ + getComponent: { + parameters: { + path: { + /** @description The ID of the component. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectComponent"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the component is not found or the user does not have permission to browse the project containing the component. */ + 404: { + content: never; + }; + }; + }; + /** + * Update component + * @description Updates a component. Any fields included in the request are overwritten. If `leadAccountId` is an empty string ("") the component lead is removed. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the component or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateComponent: { + parameters: { + path: { + /** @description The ID of the component. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "assigneeType": "PROJECT_LEAD", + * "description": "This is a Jira component", + * "isAssigneeTypeValid": false, + * "leadAccountId": "5b10a2844c20165700ede21g", + * "name": "Component 1" + * } + */ + "application/json": components["schemas"]["ProjectComponent"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectComponent"]; + }; + }; + /** + * @description Returned if: + * + * * the user is not found. + * * `assigneeType` is an invalid value. + * * `name` is over 255 characters in length. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to manage the project containing the component or does not have permission to administer Jira. */ + 403: { + content: never; + }; + /** @description Returned if the component is not found or the user does not have permission to browse the project containing the component. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete component + * @description Deletes a component. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the component or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteComponent: { + parameters: { + query?: { + /** @description The ID of the component to replace the deleted component. If this value is null no replacement is made. */ + moveIssuesTo?: string; + }; + path: { + /** @description The ID of the component. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to manage the project containing the component or does not have permission to administer Jira. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the component is not found. + * * the replacement component is not found. + * * the user does not have permission to browse the project containing the component. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get component issues count + * @description Returns the counts of issues assigned to the component. + * + * This operation can be accessed anonymously. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:field:jira`, `read:project.component:jira` + * + * **[Permissions](#permissions) required:** None. + */ + getComponentRelatedIssues: { + parameters: { + path: { + /** @description The ID of the component. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ComponentIssuesCount"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the component is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get global settings + * @description Returns the [global settings](https://confluence.atlassian.com/x/qYXKM) in Jira. These settings determine whether optional features (for example, subtasks, time tracking, and others) are enabled. If time tracking is enabled, this operation also returns the time tracking configuration. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getConfiguration: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Configuration"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get selected time tracking provider + * @description Returns the time tracking provider that is currently selected. Note that if time tracking is disabled, then a successful but empty response is returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getSelectedTimeTrackingImplementation: { + responses: { + /** @description Returned if the request is successful and time tracking is enabled. */ + 200: { + content: { + "application/json": components["schemas"]["TimeTrackingProvider"]; + }; + }; + /** @description Returned if the request is successful but time tracking is disabled. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Select time tracking provider + * @description Selects a time tracking provider. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + selectTimeTrackingImplementation: { + requestBody: { + content: { + /** + * @example { + * "key": "Jira" + * } + */ + "application/json": components["schemas"]["TimeTrackingProvider"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the time tracking provider is not found. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get all time tracking providers + * @description Returns all time tracking providers. By default, Jira only has one time tracking provider: *JIRA provided time tracking*. However, you can install other time tracking providers via apps from the Atlassian Marketplace. For more information on time tracking providers, see the documentation for the [ Time Tracking Provider](https://developer.atlassian.com/cloud/jira/platform/modules/time-tracking-provider/) module. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAvailableTimeTrackingImplementations: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["TimeTrackingProvider"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get time tracking settings + * @description Returns the time tracking settings. This includes settings such as the time format, default time unit, and others. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getSharedTimeTrackingConfiguration: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["TimeTrackingConfiguration"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Set time tracking settings + * @description Sets the time tracking settings. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setSharedTimeTrackingConfiguration: { + requestBody: { + content: { + /** + * @example { + * "defaultUnit": "hour", + * "timeFormat": "pretty", + * "workingDaysPerWeek": 5.5, + * "workingHoursPerDay": 7.6 + * } + */ + "application/json": components["schemas"]["TimeTrackingConfiguration"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["TimeTrackingConfiguration"]; + }; + }; + /** @description Returned if the request object is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get custom field option + * @description Returns a custom field option. For example, an option in a select list. + * + * Note that this operation **only works for issue field select list options created in Jira or using operations from the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue field select list options created by Connect apps. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The custom field option is returned as follows: + * + * * if the user has the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * if the user has the *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the custom field is used in, and the field is visible in at least one layout the user has permission to view. + */ + getCustomFieldOption: { + parameters: { + path: { + /** @description The ID of the custom field option. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["CustomFieldOption"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the custom field option is not found. + * * the user does not have permission to view the custom field. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get all dashboards + * @description Returns a list of dashboards owned by or shared with the user. The list may be filtered to include only favorite or owned dashboards. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAllDashboards: { + parameters: { + query?: { + /** + * @description The filter applied to the list of dashboards. Valid values are: + * + * * `favourite` Returns dashboards the user has marked as favorite. + * * `my` Returns dashboards owned by the user. + */ + filter?: "my" | "favourite"; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageOfDashboards"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Create dashboard + * @description Creates a dashboard. + * + * **[Permissions](#permissions) required:** None. + */ + createDashboard: { + /** @description Dashboard details. */ + requestBody: { + content: { + /** + * @example { + * "description": "A dashboard to help auditors identify sample of issues to check.", + * "editPermissions": [], + * "name": "Auditors dashboard", + * "sharePermissions": [ + * { + * "type": "global" + * } + * ] + * } + */ + "application/json": components["schemas"]["DashboardDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Dashboard"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Bulk edit dashboards + * @description Bulk edit dashboards. Maximum number of dashboards to be edited at the same time is 100. + * + * **[Permissions](#permissions) required:** None + * + * The dashboards to be updated must be owned by the user, or the user must be an administrator. + */ + bulkEditDashboards: { + /** @description The details of dashboards being updated in bulk. */ + requestBody: { + content: { + /** + * @example { + * "action": "changePermission", + * "entityIds": [ + * 10001, + * 10002 + * ], + * "extendAdminPermissions": true, + * "permissionDetails": { + * "editPermissions": [ + * { + * "group": { + * "groupId": "276f955c-63d7-42c8-9520-92d01dca0625", + * "name": "jira-administrators", + * "self": "https://your-domain.atlassian.net/rest/api/~ver~/group?groupId=276f955c-63d7-42c8-9520-92d01dca0625" + * }, + * "id": 10010, + * "type": "group" + * } + * ], + * "sharePermissions": [ + * { + * "id": 10000, + * "type": "global" + * } + * ] + * } + * } + */ + "application/json": components["schemas"]["BulkEditShareableEntityRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["BulkEditShareableEntityResponse"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get available gadgets + * @description Gets a list of all available gadgets that can be added to all dashboards. + * + * **[Permissions](#permissions) required:** None. + */ + getAllAvailableDashboardGadgets: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["AvailableDashboardGadgetsResponse"]; + }; + }; + /** @description 400 response */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Search for dashboards + * @description Returns a [paginated](#pagination) list of dashboards. This operation is similar to [Get dashboards](#api-rest-api-3-dashboard-get) except that the results can be refined to include dashboards that have specific attributes. For example, dashboards with a particular name. When multiple attributes are specified only filters matching all attributes are returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The following dashboards that match the query parameters are returned: + * + * * Dashboards owned by the user. Not returned for anonymous users. + * * Dashboards shared with a group that the user is a member of. Not returned for anonymous users. + * * Dashboards shared with a private project that the user can browse. Not returned for anonymous users. + * * Dashboards shared with a public project. + * * Dashboards shared with the public. + */ + getDashboardsPaginated: { + parameters: { + query?: { + /** @description String used to perform a case-insensitive partial match with `name`. */ + dashboardName?: string; + /** @description User account ID used to return dashboards with the matching `owner.accountId`. This parameter cannot be used with the `owner` parameter. */ + accountId?: string; + /** @description This parameter is deprecated because of privacy changes. Use `accountId` instead. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. User name used to return dashboards with the matching `owner.name`. This parameter cannot be used with the `accountId` parameter. */ + owner?: string; + /** @description As a group's name can change, use of `groupId` is recommended. Group name used to return dashboards that are shared with a group that matches `sharePermissions.group.name`. This parameter cannot be used with the `groupId` parameter. */ + groupname?: string; + /** @description Group ID used to return dashboards that are shared with a group that matches `sharePermissions.group.groupId`. This parameter cannot be used with the `groupname` parameter. */ + groupId?: string; + /** @description Project ID used to returns dashboards that are shared with a project that matches `sharePermissions.project.id`. */ + projectId?: number; + /** + * @description [Order](#ordering) the results by a field: + * + * * `description` Sorts by dashboard description. Note that this sort works independently of whether the expand to display the description field is in use. + * * `favourite_count` Sorts by dashboard popularity. + * * `id` Sorts by dashboard ID. + * * `is_favourite` Sorts by whether the dashboard is marked as a favorite. + * * `name` Sorts by dashboard name. + * * `owner` Sorts by dashboard owner name. + */ + orderBy?: + | "description" + | "-description" + | "+description" + | "favorite_count" + | "-favorite_count" + | "+favorite_count" + | "id" + | "-id" + | "+id" + | "is_favorite" + | "-is_favorite" + | "+is_favorite" + | "name" + | "-name" + | "+name" + | "owner" + | "-owner" + | "+owner"; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The status to filter by. It may be active, archived or deleted. */ + status?: "active" | "archived" | "deleted"; + /** + * @description Use [expand](#expansion) to include additional information about dashboard in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `description` Returns the description of the dashboard. + * * `owner` Returns the owner of the dashboard. + * * `viewUrl` Returns the URL that is used to view the dashboard. + * * `favourite` Returns `isFavourite`, an indicator of whether the user has set the dashboard as a favorite. + * * `favouritedCount` Returns `popularity`, a count of how many users have set this dashboard as a favorite. + * * `sharePermissions` Returns details of the share permissions defined for the dashboard. + * * `editPermissions` Returns details of the edit permissions defined for the dashboard. + * * `isWritable` Returns whether the current user has permission to edit the dashboard. + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanDashboard"]; + }; + }; + /** + * @description Returned if: + * + * * `orderBy` is invalid. + * * `expand` includes an invalid value. + * * `accountId` and `owner` are provided. + * * `groupname` and `groupId` are provided. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description 401 response */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get gadgets + * @description Returns a list of dashboard gadgets on a dashboard. + * + * This operation returns: + * + * * Gadgets from a list of IDs, when `id` is set. + * * Gadgets with a module key, when `moduleKey` is set. + * * Gadgets from a list of URIs, when `uri` is set. + * * All gadgets, when no other parameters are set. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAllGadgets: { + parameters: { + query?: { + /** @description The list of gadgets module keys. To include multiple module keys, separate module keys with ampersand: `moduleKey=key:one&moduleKey=key:two`. */ + moduleKey?: string[]; + /** @description The list of gadgets URIs. To include multiple URIs, separate URIs with ampersand: `uri=/rest/example/uri/1&uri=/rest/example/uri/2`. */ + uri?: string[]; + /** @description The list of gadgets IDs. To include multiple IDs, separate IDs with ampersand: `gadgetId=10000&gadgetId=10001`. */ + gadgetId?: number[]; + }; + path: { + /** @description The ID of the dashboard. */ + dashboardId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DashboardGadgetResponse"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the dashboard is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Add gadget to dashboard + * @description Adds a gadget to a dashboard. + * + * **[Permissions](#permissions) required:** None. + */ + addGadget: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "color": "blue", + * "ignoreUriAndModuleKeyValidation": false, + * "moduleKey": "com.atlassian.plugins.atlassian-connect-plugin:com.atlassian.connect.node.sample-addon__sample-dashboard-item", + * "position": { + * "column": 1, + * "row": 0 + * }, + * "title": "Issue statistics" + * } + */ + "application/json": components["schemas"]["DashboardGadgetSettings"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DashboardGadget"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the dashboard is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Update gadget on dashboard + * @description Changes the title, position, and color of the gadget on a dashboard. + * + * **[Permissions](#permissions) required:** None. + */ + updateGadget: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: number; + /** @description The ID of the gadget. */ + gadgetId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "color": "red", + * "position": { + * "column": 1, + * "row": 1 + * }, + * "title": "My new gadget title" + * } + */ + "application/json": components["schemas"]["DashboardGadgetUpdateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the gadget or the dashboard is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Remove gadget from dashboard + * @description Removes a dashboard gadget from a dashboard. + * + * When a gadget is removed from a dashboard, other gadgets in the same column are moved up to fill the emptied position. + * + * **[Permissions](#permissions) required:** None. + */ + removeGadget: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: number; + /** @description The ID of the gadget. */ + gadgetId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the gadget or the dashboard is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get dashboard item property keys + * @description Returns the keys of all properties for a dashboard item. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when Jira\\u2019s anonymous access is permitted. + */ + getDashboardItemPropertyKeys: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: string; + /** @description The ID of the dashboard item. */ + itemId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard or dashboard item is not found, or the dashboard is not owned by or shared with the user. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get dashboard item property + * @description Returns the key and value of a dashboard item property. + * + * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ). + * + * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this resource to store the item's content or configuration details. For more information on working with dashboard items, see [ Building a dashboard item for a JIRA Connect add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/) and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/) documentation. + * + * There is no resource to set or get dashboard items. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when Jira\\u2019s anonymous access is permitted. + */ + getDashboardItemProperty: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: string; + /** @description The ID of the dashboard item. */ + itemId: string; + /** @description The key of the dashboard item property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard, the dashboard item, or dashboard item property is not found, or the dashboard is not owned by or shared with the user. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Set dashboard item property + * @description Sets the value of a dashboard item property. Use this resource in apps to store custom data against a dashboard item. + * + * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ). + * + * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this resource to store the item's content or configuration details. For more information on working with dashboard items, see [ Building a dashboard item for a JIRA Connect add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/) and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/) documentation. + * + * There is no resource to set or get dashboard items. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. + */ + setDashboardItemProperty: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: string; + /** @description The ID of the dashboard item. */ + itemId: string; + /** @description The key of the dashboard item property. The maximum length is 255 characters. For dashboard items with a spec URI and no complete module key, if the provided propertyKey is equal to "config", the request body's JSON must be an object with all keys and values as strings. */ + propertyKey: string; + }; + }; + /** @description The request containing the value of the dashboard item's property. */ + requestBody: { + content: { + /** + * @example { + * "number": 5, + * "string": "string-value" + * } + */ + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the dashboard item property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the dashboard item property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * Request is invalid + * * Or if all of these conditions are met in the request: + * + * * The dashboard item has a spec URI and no complete module key + * * The value of propertyKey is equal to "config" + * * The request body contains a JSON object whose keys and values are not strings. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user is not the owner of the dashboard. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard item is not found or the dashboard is not shared with the user. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Delete dashboard item property + * @description Deletes a dashboard item property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** The user must be the owner of the dashboard. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. + */ + deleteDashboardItemProperty: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + dashboardId: string; + /** @description The ID of the dashboard item. */ + itemId: string; + /** @description The key of the dashboard item property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the dashboard item property is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the dashboard or dashboard item ID is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user is not the owner of the dashboard. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard item is not found or the dashboard is not shared with the user. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get dashboard + * @description Returns a dashboard. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + * + * However, to get a dashboard, the dashboard must be shared with the user or the user must own it. Note, users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard. The System dashboard is considered to be shared with all other users. + */ + getDashboard: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Dashboard"]; + }; + }; + /** @description 400 response */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard is not found or the dashboard is not owned by or shared with the user. */ + 404: { + content: never; + }; + }; + }; + /** + * Update dashboard + * @description Updates a dashboard, replacing all the dashboard details with those provided. + * + * **[Permissions](#permissions) required:** None + * + * The dashboard to be updated must be owned by the user. + */ + updateDashboard: { + parameters: { + path: { + /** @description The ID of the dashboard to update. */ + id: string; + }; + }; + /** @description Replacement dashboard details. */ + requestBody: { + content: { + /** + * @example { + * "description": "A dashboard to help auditors identify sample of issues to check.", + * "editPermissions": [], + * "name": "Auditors dashboard", + * "sharePermissions": [ + * { + * "type": "global" + * } + * ] + * } + */ + "application/json": components["schemas"]["DashboardDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Dashboard"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard is not found or the dashboard is not owned by the user. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Delete dashboard + * @description Deletes a dashboard. + * + * **[Permissions](#permissions) required:** None + * + * The dashboard to be deleted must be owned by the user. + */ + deleteDashboard: { + parameters: { + path: { + /** @description The ID of the dashboard. */ + id: string; + }; + }; + responses: { + /** @description Returned if the dashboard is deleted. */ + 204: { + content: never; + }; + /** @description 400 response */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Copy dashboard + * @description Copies a dashboard. Any values provided in the `dashboard` parameter replace those in the copied dashboard. + * + * **[Permissions](#permissions) required:** None + * + * The dashboard to be copied must be owned by or shared with the user. + */ + copyDashboard: { + parameters: { + path: { + id: string; + }; + }; + /** @description Dashboard details. */ + requestBody: { + content: { + /** + * @example { + * "description": "A dashboard to help auditors identify sample of issues to check.", + * "editPermissions": [], + * "name": "Auditors dashboard", + * "sharePermissions": [ + * { + * "type": "global" + * } + * ] + * } + */ + "application/json": components["schemas"]["DashboardDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Dashboard"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the dashboard is not found or the dashboard is not owned by or shared with the user. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get events + * @description Returns all issue events. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getEvents: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueEvent"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: never; + }; + }; + }; + /** + * Analyse Jira expression + * @description 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](#permissions) required**: None. + */ + analyseExpression: { + parameters: { + query?: { + /** + * @description 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](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#expensive-operations) each expression may execute. + */ + check?: "syntax" | "type" | "complexity"; + }; + }; + /** @description The Jira expressions to analyse. */ + requestBody: { + content: { + /** + * @example { + * "contextVariables": { + * "listOfStrings": "List", + * "record": "{ a: Number, b: String }", + * "value": "User" + * }, + * "expressions": [ + * "issues.map(issue => issue.properties['property_key'])" + * ] + * } + */ + "application/json": components["schemas"]["JiraExpressionForAnalysis"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["JiraExpressionsAnalysis"]; + }; + }; + /** @description 400 response */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description 404 response */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Evaluate Jira expression + * @description 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](#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`). + */ + evaluateJiraExpression: { + parameters: { + query?: { + /** @description Use [expand](#expansion) 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](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#restrictions). Useful when designing and debugging your expressions. */ + expand?: string; + }; + }; + /** @description The Jira expression and the evaluation context. */ + requestBody: { + content: { + /** + * @example { + * "context": { + * "board": 10100, + * "custom": { + * "config": { + * "type": "json", + * "value": { + * "userId": "10002" + * } + * }, + * "issuesList": [ + * { + * "key": "ACJIRA-1471", + * "type": "issue" + * }, + * { + * "id": 100001, + * "type": "issue" + * } + * ], + * "myUser": { + * "accountId": "100001", + * "type": "user" + * }, + * "nullField": { + * "type": "json" + * } + * }, + * "customerRequest": 1450, + * "issue": { + * "key": "ACJIRA-1470" + * }, + * "issues": { + * "jql": { + * "maxResults": 100, + * "query": "project = HSP", + * "startAt": 0, + * "validation": "strict" + * } + * }, + * "project": { + * "key": "ACJIRA" + * }, + * "serviceDesk": 10023, + * "sprint": 10001 + * }, + * "expression": "{ key: issue.key, type: issue.issueType.name, links: issue.links.map(link => link.linkedIssue.id), listCustomVariable: issuesList.includes(issue), customVariables: myUser.accountId == config.userId}" + * } + */ + "application/json": components["schemas"]["JiraExpressionEvalRequestBean"]; + }; + }; + responses: { + /** @description Returned if the evaluation results in a value. The result is a JSON primitive value, list, or object. */ + 200: { + content: { + "application/json": components["schemas"]["JiraExpressionResult"]; + }; + }; + /** + * @description Returned if: + * + * * the request is invalid, that is: + * + * * invalid data is provided, such as a request including issue ID and key. + * * the expression is invalid and can not be parsed. + * * evaluation fails at runtime. This may happen for various reasons. For example, accessing a property on a null object (such as the expression `issue.id` where `issue` is `null`). In this case an error message is provided. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if any object provided in the request context is not found or the user does not have permission to view it. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get fields + * @description Returns system and custom issue fields according to the following rules: + * + * * Fields that cannot be added to the issue navigator are always returned. + * * Fields that cannot be placed on an issue screen are always returned. + * * Fields that depend on global Jira settings are only returned if the setting is enabled. That is, timetracking fields, subtasks, votes, and watches. + * * For all other fields, this operation only returns the fields that the user has permission to view (that is, the field is used in at least one project that the user has *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for.) + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getFields: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["FieldDetails"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create custom field + * @description Creates a custom field. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createCustomField: { + /** @description Definition of the custom field to be created */ + requestBody: { + content: { + /** + * @example { + * "description": "Custom field for picking groups", + * "name": "New custom field", + * "searcherKey": "com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher", + * "type": "com.atlassian.jira.plugin.system.customfieldtypes:grouppicker" + * } + */ + "application/json": components["schemas"]["CustomFieldDefinitionJsonBean"]; + }; + }; + responses: { + /** @description Returned if the custom field is created. */ + 201: { + content: { + "application/json": components["schemas"]["FieldDetails"]; + }; + }; + /** + * @description Returned if: + * + * * the user does not have permission to create custom fields. + * * any of the request object properties have invalid or missing values. + */ + 400: { + content: never; + }; + }; + }; + /** + * Get fields paginated + * @description Returns a [paginated](#pagination) list of fields for Classic Jira projects. The list can include: + * + * * all fields + * * specific fields, by defining `id` + * * fields that contain a string in the field name or description, by defining `query` + * * specific fields that contain a string in the field name or description, by defining `id` and `query` + * + * Only custom fields can be queried, `type` must be set to `custom`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getFieldsPaginated: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The type of fields to search. */ + type?: ("custom" | "system")[]; + /** @description The IDs of the custom fields to return or, where `query` is specified, filter. */ + id?: string[]; + /** @description String used to perform a case-insensitive partial match with field names or descriptions. */ + query?: string; + /** + * @description [Order](#ordering) the results by a field: + * + * * `contextsCount` sorts by the number of contexts related to a field + * * `lastUsed` sorts by the date when the value of the field last changed + * * `name` sorts by the field name + * * `screensCount` sorts by the number of screens related to a field + */ + orderBy?: + | "contextsCount" + | "-contextsCount" + | "+contextsCount" + | "lastUsed" + | "-lastUsed" + | "+lastUsed" + | "name" + | "-name" + | "+name" + | "screensCount" + | "-screensCount" + | "+screensCount" + | "projectsCount" + | "-projectsCount" + | "+projectsCount"; + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `key` returns the key for each field + * * `lastUsed` returns the date when the value of the field last changed + * * `screensCount` returns the number of screens related to a field + * * `contextsCount` returns the number of contexts related to a field + * * `isLocked` returns information about whether the field is [locked](https://confluence.atlassian.com/x/ZSN7Og) + * * `searcherKey` returns the searcher key for each custom field + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanField"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get fields in trash paginated + * @description Returns a [paginated](#pagination) list of fields in the trash. The list may be restricted to fields whose field name or description partially match a string. + * + * Only custom fields can be queried, `type` must be set to `custom`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getTrashedFieldsPaginated: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + id?: string[]; + /** @description String used to perform a case-insensitive partial match with field names or descriptions. */ + query?: string; + expand?: + | "name" + | "-name" + | "+name" + | "trashDate" + | "-trashDate" + | "+trashDate" + | "plannedDeletionDate" + | "-plannedDeletionDate" + | "+plannedDeletionDate" + | "projectsCount" + | "-projectsCount" + | "+projectsCount"; + /** + * @description [Order](#ordering) the results by a field: + * + * * `name` sorts by the field name + * * `trashDate` sorts by the date the field was moved to the trash + * * `plannedDeletionDate` sorts by the planned deletion date + */ + orderBy?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanField"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Update custom field + * @description Updates a custom field. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateCustomField: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + }; + }; + /** @description The custom field update details. */ + requestBody: { + content: { + /** + * @example { + * "description": "Select the manager and the corresponding employee.", + * "name": "Managers and employees list", + * "searcherKey": "com.atlassian.jira.plugin.system.customfieldtypes:cascadingselectsearcher" + * } + */ + "application/json": components["schemas"]["UpdateCustomFieldDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get custom field contexts + * @description Returns a [paginated](#pagination) list of [ contexts](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html) for a custom field. Contexts can be returned as follows: + * + * * With no other parameters set, all contexts. + * * By defining `id` only, all contexts from the list of IDs. + * * By defining `isAnyIssueType`, limit the list of contexts returned to either those that apply to all issue types (true) or those that apply to only a subset of issue types (false) + * * By defining `isGlobalContext`, limit the list of contexts return to either those that apply to all projects (global contexts) (true) or those that apply to only a subset of projects (false). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getContextsForField: { + parameters: { + query?: { + /** @description Whether to return contexts that apply to all issue types. */ + isAnyIssueType?: boolean; + /** @description Whether to return contexts that apply to all projects. */ + isGlobalContext?: boolean; + /** @description The list of context IDs. To include multiple contexts, separate IDs with ampersand: `contextId=10000&contextId=10001`. */ + contextId?: number[]; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the custom field. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanCustomFieldContext"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field was not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Create custom field context + * @description Creates a custom field context. + * + * If `projectIds` is empty, a global context is created. A global context is one that applies to all project. If `issueTypeIds` is empty, the context applies to all issue types. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createCustomFieldContext: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "A context used to define the custom field options for bugs.", + * "issueTypeIds": [ + * "10010" + * ], + * "name": "Bug fields context", + * "projectIds": [] + * } + */ + "application/json": components["schemas"]["CreateCustomFieldContext"]; + }; + }; + responses: { + /** @description Returned if the custom field context is created. */ + 201: { + content: { + "application/json": components["schemas"]["CreateCustomFieldContext"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the field, project, or issue type is not found. */ + 404: { + content: never; + }; + /** @description Returned if the issue type is a sub-task, but sub-tasks are disabled in Jira settings. */ + 409: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get custom field contexts default values + * @description Returns a [paginated](#pagination) list of defaults for a custom field. The results can be filtered by `contextId`, otherwise all values are returned. If no defaults are set for a context, nothing is returned. + * The returned object depends on type of the custom field: + * + * * `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields. + * * `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields. + * * `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio buttons. + * * `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and checkboxes. + * * `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists. + * * `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users. + * * `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists. + * * `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers. + * * `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group pickers. + * * `CustomFieldContextDefaultValueURL` (type `url`) for URLs. + * * `CustomFieldContextDefaultValueProject` (type `project`) for project pickers. + * * `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers). + * * `CustomFieldContextDefaultValueLabels` (type `labels`) for labels. + * * `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields. + * * `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields. + * * `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields. + * * `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers. + * * `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers. + * + * Forge custom fields [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types) are also supported, returning: + * + * * `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields. + * * `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection fields. + * * `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields. + * * `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields. + * * `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields. + * * `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection fields. + * * `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields. + * * `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields. + * * `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getDefaultValues: { + parameters: { + query?: { + /** @description The IDs of the contexts. */ + contextId?: number[]; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the custom field, for example `customfield\_10000`. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanCustomFieldContextDefaultValue"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Set custom field contexts default values + * @description Sets default for contexts of a custom field. Default are defined using these objects: + * + * * `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields. + * * `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields. + * * `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio buttons. + * * `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and checkboxes. + * * `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists. + * * `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users. + * * `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists. + * * `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers. + * * `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group pickers. + * * `CustomFieldContextDefaultValueURL` (type `url`) for URLs. + * * `CustomFieldContextDefaultValueProject` (type `project`) for project pickers. + * * `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers). + * * `CustomFieldContextDefaultValueLabels` (type `labels`) for labels. + * * `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields. + * * `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields. + * * `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields. + * * `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers. + * * `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers. + * + * Forge custom fields [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types) are also supported, returning: + * + * * `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields. + * * `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection fields. + * * `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields. + * * `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields. + * * `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields. + * * `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection fields. + * * `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields. + * * `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields. + * * `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields. + * + * Only one type of default object can be included in a request. To remove a default for a context, set the default parameter to `null`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setDefaultValues: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "defaultValues": [ + * { + * "contextId": "10100", + * "optionId": "10001", + * "type": "option.single" + * }, + * { + * "contextId": "10101", + * "optionId": "10003", + * "type": "option.single" + * }, + * { + * "contextId": "10103", + * "optionId": "10005", + * "type": "option.single" + * } + * ] + * } + */ + "application/json": components["schemas"]["CustomFieldContextDefaultValueUpdate"]; + }; + }; + responses: { + /** @description Returned if operation is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field, a context, an option, or a cascading option is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue types for custom field context + * @description Returns a [paginated](#pagination) list of context to issue type mappings for a custom field. Mappings are returned for all contexts or a list of contexts. Mappings are ordered first by context ID and then by issue type ID. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypeMappingsForContexts: { + parameters: { + query?: { + /** @description The ID of the context. To include multiple contexts, provide an ampersand-separated list. For example, `contextId=10001&contextId=10002`. */ + contextId?: number[]; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the custom field. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if operation is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeToContextMapping"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get custom field contexts for projects and issue types + * @description Returns a [paginated](#pagination) list of project and issue type mappings and, for each mapping, the ID of a [custom field context](https://confluence.atlassian.com/x/k44fOw) that applies to the project and issue type. + * + * If there is no custom field context assigned to the project then, if present, the custom field context that applies to all projects is returned if it also applies to the issue type or all issue types. If a custom field context is not found, the returned custom field context ID is `null`. + * + * Duplicate project and issue type mappings cannot be provided in the request. + * + * The order of the returned values is the same as provided in the request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getCustomFieldContextsForProjectsAndIssueTypes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the custom field. */ + fieldId: string; + }; + }; + /** @description The list of project and issue type mappings. */ + requestBody: { + content: { + /** + * @example { + * "mappings": [ + * { + * "issueTypeId": "10000", + * "projectId": "10000" + * }, + * { + * "issueTypeId": "10001", + * "projectId": "10000" + * }, + * { + * "issueTypeId": "10002", + * "projectId": "10001" + * } + * ] + * } + */ + "application/json": components["schemas"]["ProjectIssueTypeMappings"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanContextForProjectAndIssueType"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field, project, or issue type is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get project mappings for custom field context + * @description Returns a [paginated](#pagination) list of context to project mappings for a custom field. The result can be filtered by `contextId`. Otherwise, all mappings are returned. Invalid IDs are ignored. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getProjectContextMapping: { + parameters: { + query?: { + /** @description The list of context IDs. To include multiple context, separate IDs with ampersand: `contextId=10000&contextId=10001`. */ + contextId?: number[]; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the custom field, for example `customfield\_10000`. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanCustomFieldContextProjectMapping"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update custom field context + * @description Updates a [ custom field context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateCustomFieldContext: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "A context used to define the custom field options for bugs.", + * "name": "Bug fields context" + * } + */ + "application/json": components["schemas"]["CustomFieldContextUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the context is updated. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field or the context is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete custom field context + * @description Deletes a [ custom field context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteCustomFieldContext: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + responses: { + /** @description Returned if the context is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field or the context is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Add issue types to context + * @description Adds issue types to a custom field context, appending the issue types to the issue types list. + * + * A custom field context without any issue types applies to all issue types. Adding issue types to such a custom field context would result in it applying to only the listed issue types. + * + * If any of the issue types exists in the custom field context, the operation fails and no issue types are added. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addIssueTypesToContext: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypeIds": [ + * "10001", + * "10005", + * "10006" + * ] + * } + */ + "application/json": components["schemas"]["IssueTypeIds"]; + }; + }; + responses: { + /** @description Returned if operation is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field, context, or one or more issue types are not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type is a sub-task, but sub-tasks are disabled in Jira settings. */ + 409: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Remove issue types from context + * @description Removes issue types from a custom field context. + * + * A custom field context without any issue types applies to all issue types. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeIssueTypesFromContext: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypeIds": [ + * "10001", + * "10005", + * "10006" + * ] + * } + */ + "application/json": components["schemas"]["IssueTypeIds"]; + }; + }; + responses: { + /** @description Returned if operation is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field, context, or one or more issue types are not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get custom field options (context) + * @description Returns a [paginated](#pagination) list of all custom field option for a context. Options are returned first then cascading options, in the order they display in Jira. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getOptionsForContext: { + parameters: { + query?: { + /** @description The ID of the option. */ + optionId?: number; + /** @description Whether only options are returned. */ + onlyOptions?: boolean; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanCustomFieldContextOption"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field is not found or the context doesn't match the custom field. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update custom field options (context) + * @description Updates the options of a custom field. + * + * If any of the options are not found, no options are updated. Options where the values in the request match the current values aren't updated and aren't reported in the response. + * + * Note that this operation **only works for issue field select list options created in Jira or using operations from the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue field select list options created by Connect apps. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateCustomFieldOption: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "options": [ + * { + * "disabled": false, + * "id": "10001", + * "value": "Scranton" + * }, + * { + * "disabled": true, + * "id": "10002", + * "value": "Manhattan" + * }, + * { + * "disabled": false, + * "id": "10003", + * "value": "The Electric City" + * } + * ] + * } + */ + "application/json": components["schemas"]["BulkCustomFieldOptionUpdateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["CustomFieldUpdatedContextOptionsList"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the field, context, or one or more options is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Create custom field options (context) + * @description Creates options and, where the custom select field is of the type Select List (cascading), cascading options for a custom select field. The options are added to a context of the field. + * + * The maximum number of options that can be created per request is 1000 and each field can have a maximum of 10000 options. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createCustomFieldOption: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "options": [ + * { + * "disabled": false, + * "value": "Scranton" + * }, + * { + * "disabled": true, + * "optionId": "10000", + * "value": "Manhattan" + * }, + * { + * "disabled": false, + * "value": "The Electric City" + * } + * ] + * } + */ + "application/json": components["schemas"]["BulkCustomFieldOptionCreateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["CustomFieldCreatedContextOptionsList"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field is not found or the context doesn't match the custom field. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Reorder custom field options (context) + * @description Changes the order of custom field options or cascading options in a context. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + reorderCustomFieldOptions: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "customFieldOptionIds": [ + * "10001", + * "10002" + * ], + * "position": "First" + * } + */ + "application/json": components["schemas"]["OrderOfCustomFieldOptions"]; + }; + }; + responses: { + /** @description Returned if options are reordered. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the field, the context, or one or more of the options is not found.. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete custom field options (context) + * @description Deletes a custom field option. + * + * Options with cascading options cannot be deleted without deleting the cascading options first. + * + * This operation works for custom field options created in Jira or the operations from this resource. **To work with issue field select list options created for Connect apps use the [Issue custom field options (apps)](#api-group-issue-custom-field-options--apps-) operations.** + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteCustomFieldOption: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context from which an option should be deleted. */ + contextId: number; + /** @description The ID of the option to delete. */ + optionId: number; + }; + }; + responses: { + /** @description Returned if the option is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the field, the context, or the option is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Assign custom field context to projects + * @description Assigns a custom field context to projects. + * + * If any project in the request is assigned to any context of the custom field, the operation fails. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + assignProjectsToCustomFieldContext: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "projectIds": [ + * "10001", + * "10005", + * "10006" + * ] + * } + */ + "application/json": components["schemas"]["ProjectIds"]; + }; + }; + responses: { + /** @description Returned if operation is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field, context, or project is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Remove custom field context from projects + * @description Removes a custom field context from projects. + * + * A custom field context without any projects applies to all projects. Removing all projects from a custom field context would result in it applying to all projects. + * + * If any project in the request is not assigned to the context, or the operation would result in two global contexts for the field, the operation fails. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeCustomFieldContextFromProjects: { + parameters: { + path: { + /** @description The ID of the custom field. */ + fieldId: string; + /** @description The ID of the context. */ + contextId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "projectIds": [ + * "10001", + * "10005", + * "10006" + * ] + * } + */ + "application/json": components["schemas"]["ProjectIds"]; + }; + }; + responses: { + /** @description Returned if the custom field context is removed from the projects. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the custom field, context, or one or more projects are not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get contexts for a field + * @deprecated + * @description Returns a [paginated](#pagination) list of the contexts a field is used in. Deprecated, use [ Get custom field contexts](#api-rest-api-3-field-fieldId-context-get). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getContextsForFieldDeprecated: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the field to return contexts for. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanContext"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get screens for a field + * @description Returns a [paginated](#pagination) list of the screens a field is used in. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getScreensForField: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description Use [expand](#expansion) to include additional information about screens in the response. This parameter accepts `tab` which returns details about the screen tabs the field is used in. */ + expand?: string; + }; + path: { + /** @description The ID of the field to return screens for. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanScreenWithTab"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get all issue field options + * @description Returns a [paginated](#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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + getAllIssueFieldOptions: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueFieldOption"]; + }; + }; + /** @description Returned if the field is not found or does not support options. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as a Jira administrator or the app that provided the field. */ + 403: { + content: never; + }; + }; + }; + /** + * Create issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + createIssueFieldOption: { + parameters: { + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "config": { + * "attributes": [], + * "scope": { + * "global": {}, + * "projects": [], + * "projects2": [ + * { + * "attributes": [ + * "notSelectable" + * ], + * "id": 1001 + * }, + * { + * "attributes": [ + * "notSelectable" + * ], + * "id": 1002 + * } + * ] + * } + * }, + * "properties": { + * "description": "The team's description", + * "founded": "2016-06-06", + * "leader": { + * "email": "lname@example.com", + * "name": "Leader Name" + * }, + * "members": 42 + * }, + * "value": "Team 1" + * } + */ + "application/json": components["schemas"]["IssueFieldOptionCreateBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueFieldOption"]; + }; + }; + /** @description Returned if the option is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as a Jira administrator or the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if the field is not found or does not support options. */ + 404: { + content: never; + }; + }; + }; + /** + * Get selectable issue field options + * @description Returns a [paginated](#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](#permissions) required:** Permission to access Jira. + */ + getSelectableIssueFieldOptions: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description Filters the results to options that are only available in the specified project. */ + projectId?: number; + }; + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueFieldOption"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the field is not found or does not support options. */ + 404: { + content: never; + }; + }; + }; + /** + * Get visible issue field options + * @description Returns a [paginated](#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](#permissions) required:** Permission to access Jira. + */ + getVisibleIssueFieldOptions: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description Filters the results to options that are only available in the specified project. */ + projectId?: number; + }; + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueFieldOption"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the field is not found or does not support options. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + getIssueFieldOption: { + parameters: { + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + /** @description The ID of the option to be returned. */ + optionId: number; + }; + }; + responses: { + /** @description Returned if the requested option is returned. */ + 200: { + content: { + "application/json": components["schemas"]["IssueFieldOption"]; + }; + }; + /** @description Returned if the field is not found or does not support options. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as a Jira administrator or the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if the option is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + updateIssueFieldOption: { + parameters: { + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + /** @description The ID of the option to be updated. */ + optionId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "config": { + * "attributes": [], + * "scope": { + * "global": {}, + * "projects": [], + * "projects2": [ + * { + * "attributes": [ + * "notSelectable" + * ], + * "id": 1001 + * }, + * { + * "attributes": [ + * "notSelectable" + * ], + * "id": 1002 + * } + * ] + * } + * }, + * "id": 1, + * "properties": { + * "description": "The team's description", + * "founded": "2016-06-06", + * "leader": { + * "email": "lname@example.com", + * "name": "Leader Name" + * }, + * "members": 42 + * }, + * "value": "Team 1" + * } + */ + "application/json": components["schemas"]["IssueFieldOption"]; + }; + }; + responses: { + /** @description Returned if the option is updated or created. */ + 200: { + content: { + "application/json": components["schemas"]["IssueFieldOption"]; + }; + }; + /** @description Returned if the option is invalid, or the *ID* in the request object does not match the *optionId* parameter. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as a Jira administrator or the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue field option + * @description 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + deleteIssueFieldOption: { + parameters: { + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + /** @description The ID of the option to be deleted. */ + optionId: number; + }; + }; + responses: { + /** @description Returned if the field option is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not authenticated as a Jira administrator or the app that provided the field. */ + 403: { + content: never; + }; + /** @description Returned if the field or option is not found. */ + 404: { + content: never; + }; + /** @description Returned if the option is selected for the field in any issue. */ + 409: { + content: never; + }; + }; + }; + /** + * Replace issue field option + * @description 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](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required for the app providing the field. + */ + replaceIssueFieldOption: { + parameters: { + query?: { + /** @description The ID of the option that will replace the currently selected option. */ + replaceWith?: number; + /** @description A JQL query that specifies the issues to be updated. For example, *project=10000*. */ + jql?: string; + /** @description Whether screen security is overridden to enable hidden fields to be edited. Available to Connect and Forge app users with admin permission. */ + overrideScreenSecurity?: boolean; + /** @description Whether screen security is overridden to enable uneditable fields to be edited. Available to Connect and Forge app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideEditableFlag?: boolean; + }; + path: { + /** + * @description The field key is specified in the following format: **$(app-key)\_\_$(field-key)**. For example, *example-add-on\_\_example-issue-field*. To determine the `fieldKey` value, do one of the following: + * + * * open the app's plugin descriptor, then **app-key** is the key at the top and **field-key** is the key in the `jiraIssueFields` module. **app-key** can also be found in the app listing in the Atlassian Universal Plugin Manager. + * * run [Get fields](#api-rest-api-3-field-get) and in the field details the value is returned in `key`. For example, `"key": "teams-add-on__team-issue-field"` + */ + fieldKey: string; + /** @description The ID of the option to be deselected. */ + optionId: number; + }; + }; + responses: { + /** @description Returned if the long-running task to deselect the option is started. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanRemoveOptionFromIssuesResult"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the field is not found or does not support options, or the options to be replaced are not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete custom field + * @description Deletes a custom field. The custom field is deleted whether it is in the trash or not. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteCustomField: { + parameters: { + path: { + /** @description The ID of a custom field. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** + * @description Returned if any of these are true: + * + * * The custom field is locked. + * * The custom field is used in a issue security scheme or a permission scheme. + * * The custom field ID format is incorrect. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if a task to delete the custom field is running. */ + 409: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Restore custom field from trash + * @description Restores a custom field from trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + restoreCustomField: { + parameters: { + path: { + /** @description The ID of a custom field. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Move custom field to trash + * @description Moves a custom field to trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + trashCustomField: { + parameters: { + path: { + /** @description The ID of a custom field. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the custom field is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all field configurations + * @description Returns a [paginated](#pagination) list of field configurations. The list can be for all field configurations or a subset determined by any combination of these criteria: + * + * * a list of field configuration item IDs. + * * whether the field configuration is a default. + * * whether the field configuration name or description contains a query string. + * + * Only field configurations used in company-managed (classic) projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllFieldConfigurations: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of field configuration IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. */ + id?: number[]; + /** @description If *true* returns default field configurations only. */ + isDefault?: boolean; + /** @description The query string used to match against field configuration names and descriptions. */ + query?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanFieldConfigurationDetails"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Create field configuration + * @description Creates a field configuration. The field configuration is created with the same field properties as the default configuration, with all the fields being optional. + * + * This operation can only create configurations for use in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createFieldConfiguration: { + requestBody: { + content: { + /** + * @example { + * "description": "My field configuration description", + * "name": "My Field Configuration" + * } + */ + "application/json": components["schemas"]["FieldConfigurationDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["FieldConfiguration"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Update field configuration + * @description Updates a field configuration. The name and the description provided in the request override the existing values. + * + * This operation can only update configurations used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateFieldConfiguration: { + parameters: { + path: { + /** @description The ID of the field configuration. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "A brand new description", + * "name": "My Modified Field Configuration" + * } + */ + "application/json": components["schemas"]["FieldConfigurationDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field configuration is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete field configuration + * @description Deletes a field configuration. + * + * This operation can only delete configurations used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteFieldConfiguration: { + parameters: { + path: { + /** @description The ID of the field configuration. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field configuration is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get field configuration items + * @description Returns a [paginated](#pagination) list of all fields for a configuration. + * + * Only the fields from configurations used in company-managed (classic) projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getFieldConfigurationItems: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID of the field configuration. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanFieldConfigurationItem"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field configuration is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update field configuration items + * @description Updates fields in a field configuration. The properties of the field configuration fields provided override the existing values. + * + * This operation can only update field configurations used in company-managed (classic) projects. + * + * The operation can set the renderer for text fields to the default text renderer (`text-renderer`) or wiki style renderer (`wiki-renderer`). However, the renderer cannot be updated for fields using the autocomplete renderer (`autocomplete-renderer`). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateFieldConfigurationItems: { + parameters: { + path: { + /** @description The ID of the field configuration. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "fieldConfigurationItems": [ + * { + * "description": "The new description of this item.", + * "id": "customfield_10012", + * "isHidden": false + * }, + * { + * "id": "customfield_10011", + * "isRequired": true + * }, + * { + * "description": "Another new description.", + * "id": "customfield_10010", + * "isHidden": false, + * "isRequired": false, + * "renderer": "wiki-renderer" + * } + * ] + * } + */ + "application/json": components["schemas"]["FieldConfigurationItemsDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field configuration is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all fieldg rnfiguration schemes + * @description Returns a [paginated](#pagination) list of field configuration schemes. + * + * Only field configuration schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllFieldgRnfigurationSchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of field configuration scheme IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. */ + id?: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanFieldConfigurationScheme"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Create field configuration scheme + * @description Creates a field configuration scheme. + * + * This operation can only create field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createFieldConfigurationScheme: { + /** @description The details of the field configuration scheme. */ + requestBody: { + content: { + /** + * @example { + * "description": "We can use this one for software projects.", + * "name": "Field Configuration Scheme for software related projects" + * } + */ + "application/json": components["schemas"]["UpdateFieldConfigurationSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["FieldConfigurationScheme"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get field configuration issue type items + * @description Returns a [paginated](#pagination) list of field configuration issue type items. + * + * Only items used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getFieldConfigurationSchemeMappings: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of field configuration scheme IDs. To include multiple field configuration schemes separate IDs with ampersand: `fieldConfigurationSchemeId=10000&fieldConfigurationSchemeId=10001`. */ + fieldConfigurationSchemeId?: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanFieldConfigurationIssueTypeItem"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if no field configuration schemes are found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get field configuration schemes for projects + * @description Returns a [paginated](#pagination) list of field configuration schemes and, for each scheme, a list of the projects that use it. + * + * The list is sorted by field configuration scheme ID. The first item contains the list of project IDs assigned to the default field configuration scheme. + * + * Only field configuration schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getFieldConfigurationSchemeProjectMapping: { + parameters: { + query: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of project IDs. To include multiple projects, separate IDs with ampersand: `projectId=10000&projectId=10001`. */ + projectId: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanFieldConfigurationSchemeProjects"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Assign field configuration scheme to project + * @description Assigns a field configuration scheme to a project. If the field configuration scheme ID is `null`, the operation assigns the default field configuration scheme. + * + * Field configuration schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + assignFieldConfigurationSchemeToProject: { + requestBody: { + content: { + /** + * @example { + * "fieldConfigurationSchemeId": "10000", + * "projectId": "10000" + * } + */ + "application/json": components["schemas"]["FieldConfigurationSchemeProjectAssociation"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the project is not a classic project. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the project is missing. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update field configuration scheme + * @description Updates a field configuration scheme. + * + * This operation can only update field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateFieldConfigurationScheme: { + parameters: { + path: { + /** @description The ID of the field configuration scheme. */ + id: number; + }; + }; + /** @description The details of the field configuration scheme. */ + requestBody: { + content: { + /** + * @example { + * "description": "We can use this one for software projects.", + * "name": "Field Configuration Scheme for software related projects" + * } + */ + "application/json": components["schemas"]["UpdateFieldConfigurationSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the field configuration scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete field configuration scheme + * @description Deletes a field configuration scheme. + * + * This operation can only delete field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteFieldConfigurationScheme: { + parameters: { + path: { + /** @description The ID of the field configuration scheme. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field configuration scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Assign issue types to field configurations + * @description Assigns issue types to field configurations on field configuration scheme. + * + * This operation can only modify field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setFieldConfigurationSchemeMapping: { + parameters: { + path: { + /** @description The ID of the field configuration scheme. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "mappings": [ + * { + * "fieldConfigurationId": "10000", + * "issueTypeId": "default" + * }, + * { + * "fieldConfigurationId": "10002", + * "issueTypeId": "10001" + * }, + * { + * "fieldConfigurationId": "10001", + * "issueTypeId": "10002" + * } + * ] + * } + */ + "application/json": components["schemas"]["AssociateFieldConfigurationsWithIssueTypesRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field configuration scheme, the field configuration, or the issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Remove issue types from field configuration scheme + * @description Removes issue types from the field configuration scheme. + * + * This operation can only modify field configuration schemes used in company-managed (classic) projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeIssueTypesFromGlobalFieldConfigurationScheme: { + parameters: { + path: { + /** @description The ID of the field configuration scheme. */ + id: number; + }; + }; + /** @description The issue type IDs to remove. */ + requestBody: { + content: { + /** + * @example { + * "issueTypeIds": [ + * "10000", + * "10001", + * "10002" + * ] + * } + */ + "application/json": components["schemas"]["IssueTypeIdsToRemove"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the field configuration scheme or the issue types are not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Create filter + * @description Creates a filter. The filter is shared according to the [default share scope](#api-rest-api-3-filter-post). The filter is not selected as a favorite. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + createFilter: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + /** @description EXPERIMENTAL: Whether share permissions are overridden to enable filters with any share permissions to be created. Available to users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideSharePermissions?: boolean; + }; + }; + /** @description The filter to create. */ + requestBody: { + content: { + /** + * @example { + * "description": "Lists all open bugs", + * "jql": "type = Bug and resolution is empty", + * "name": "All Open Bugs" + * } + */ + "application/json": components["schemas"]["Filter"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"]; + }; + }; + /** @description Returned if the request object is invalid. For example, the `name` is not unique or the project ID is not specified for a project role share permission. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get default share scope + * @description Returns the default sharing settings for new filters and dashboards for a user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getDefaultShareScope: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DefaultShareScope"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Set default share scope + * @description Sets the default sharing for new filters and dashboards for a user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + setDefaultShareScope: { + requestBody: { + content: { + /** + * @example { + * "scope": "GLOBAL" + * } + */ + "application/json": components["schemas"]["DefaultShareScope"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DefaultShareScope"]; + }; + }; + /** @description Returned if an invalid scope is set. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get favorite filters + * @description Returns the visible favorite filters of the user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** A favorite filter is only visible to the user where the filter is: + * + * * owned by the user. + * * shared with a group that the user is a member of. + * * shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * shared with a public project. + * * shared with the public. + * + * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by this operation. + */ + getFavouriteFilters: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get my filters + * @description Returns the filters owned by the user. If `includeFavourites` is `true`, the user's visible favorite filters are also returned. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, a favorite filters is only visible to the user where the filter is: + * + * * owned by the user. + * * shared with a group that the user is a member of. + * * shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * shared with a public project. + * * shared with the public. + * + * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by this operation. + */ + getMyFilters: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + /** @description Include the user's favorite filters in the response. */ + includeFavourites?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Search for filters + * @description Returns a [paginated](#pagination) list of filters. Use this operation to get: + * + * * specific filters, by defining `id` only. + * * filters that match all of the specified attributes. For example, all filters for a user with a particular word in their name. When multiple attributes are specified only filters matching all attributes are returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, only the following filters that match the query parameters are returned: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + getFiltersPaginated: { + parameters: { + query?: { + /** @description String used to perform a case-insensitive partial match with `name`. */ + filterName?: string; + /** @description User account ID used to return filters with the matching `owner.accountId`. This parameter cannot be used with `owner`. */ + accountId?: string; + /** @description This parameter is deprecated because of privacy changes. Use `accountId` instead. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. User name used to return filters with the matching `owner.name`. This parameter cannot be used with `accountId`. */ + owner?: string; + /** @description As a group's name can change, use of `groupId` is recommended to identify a group. Group name used to returns filters that are shared with a group that matches `sharePermissions.group.groupname`. This parameter cannot be used with the `groupId` parameter. */ + groupname?: string; + /** @description Group ID used to returns filters that are shared with a group that matches `sharePermissions.group.groupId`. This parameter cannot be used with the `groupname` parameter. */ + groupId?: string; + /** @description Project ID used to returns filters that are shared with a project that matches `sharePermissions.project.id`. */ + projectId?: number; + /** @description The list of filter IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. Do not exceed 200 filter IDs. */ + id?: number[]; + /** + * @description [Order](#ordering) the results by a field: + * + * * `description` Sorts by filter description. Note that this sorting works independently of whether the expand to display the description field is in use. + * * `favourite_count` Sorts by the count of how many users have this filter as a favorite. + * * `is_favourite` Sorts by whether the filter is marked as a favorite. + * * `id` Sorts by filter ID. + * * `name` Sorts by filter name. + * * `owner` Sorts by the ID of the filter owner. + * * `is_shared` Sorts by whether the filter is shared. + */ + orderBy?: + | "description" + | "-description" + | "+description" + | "favourite_count" + | "-favourite_count" + | "+favourite_count" + | "id" + | "-id" + | "+id" + | "is_favourite" + | "-is_favourite" + | "+is_favourite" + | "name" + | "-name" + | "+name" + | "owner" + | "-owner" + | "+owner" + | "is_shared" + | "-is_shared" + | "+is_shared"; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `description` Returns the description of the filter. + * * `favourite` Returns an indicator of whether the user has set the filter as a favorite. + * * `favouritedCount` Returns a count of how many users have set this filter as a favorite. + * * `jql` Returns the JQL query that the filter uses. + * * `owner` Returns the owner of the filter. + * * `searchUrl` Returns a URL to perform the filter's JQL query. + * * `sharePermissions` Returns the share permissions defined for the filter. + * * `editPermissions` Returns the edit permissions defined for the filter. + * * `isWritable` Returns whether the current user has permission to edit the filter. + * * `subscriptions` Returns the users that are subscribed to the filter. + * * `viewUrl` Returns a URL to view the filter. + */ + expand?: string; + /** @description EXPERIMENTAL: Whether share permissions are overridden to enable filters with any share permissions to be returned. Available to users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideSharePermissions?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanFilterDetails"]; + }; + }; + /** + * @description Returned if: + * + * * `owner` and `accountId` are provided. + * * `expand` includes an invalid value. + * * `orderBy` is invalid. + * * `id` identifies more than 200 filter IDs. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get filter + * @description Returns a filter. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, the filter is only returned where it is: + * + * * owned by the user. + * * shared with a group that the user is a member of. + * * shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * shared with a public project. + * * shared with the public. + */ + getFilter: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + /** @description EXPERIMENTAL: Whether share permissions are overridden to enable filters with any share permissions to be returned. Available to users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideSharePermissions?: boolean; + }; + path: { + /** @description The ID of the filter to return. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"]; + }; + }; + /** @description Returned if the filter is not found or the user does not have permission to view it. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Update filter + * @description Updates a filter. Use this operation to update a filter's name, description, JQL, or sharing. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however the user must own the filter. + */ + updateFilter: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + /** @description EXPERIMENTAL: Whether share permissions are overridden to enable the addition of any share permissions to filters. Available to users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideSharePermissions?: boolean; + }; + path: { + /** @description The ID of the filter to update. */ + id: number; + }; + }; + /** @description The filter to update. */ + requestBody: { + content: { + /** + * @example { + * "description": "Lists all open bugs", + * "jql": "type = Bug and resolution is empty", + * "name": "All Open Bugs" + * } + */ + "application/json": components["schemas"]["Filter"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"]; + }; + }; + /** @description Returned if the request object is invalid. For example, the `name` is not unique or the project ID is not specified for a project role share permission. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Delete filter + * @description Delete a filter. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however filters can only be deleted by the creator of the filter or a user with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteFilter: { + parameters: { + path: { + /** @description The ID of the filter to delete. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the filter is not found. */ + 400: { + content: never; + }; + /** @description Returned if the user does not have permission to delete the filter. */ + 401: { + content: never; + }; + }; + }; + /** + * Get columns + * @description Returns the columns configured for a filter. The column configuration is used when the filter's results are viewed in *List View* with the *Columns* set to *Filter*. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, column details are only returned for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + getColumns: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ColumnItem"][]; + }; + }; + /** @description Returned if the user does not have permission to view the filter. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if a column configuration is not set for the filter. */ + 404: { + content: never; + }; + }; + }; + /** + * Set columns + * @description Sets the columns for a filter. Only navigable fields can be set as columns. Use [Get fields](#api-rest-api-3-field-get) to get the list fields in Jira. A navigable field has `navigable` set to `true`. + * + * The parameters for this resource are expressed as HTML form data. For example, in curl: + * + * `curl -X PUT -d columns=summary -d columns=description https://your-domain.atlassian.net/rest/api/3/filter/10000/columns` + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, columns are only set for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + setColumns: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + /** @description The IDs of the fields to set as columns. In the form data, specify each field as `columns=id`, where `id` is the *id* of a field (as seen in the response for [Get fields](#api-rest-api--field-get)). For example, `columns=summary`. */ + requestBody?: { + content: { + "*/*": string[]; + "multipart/form-data": string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * a non-navigable field is set as a column. + * * the user does not have permission to view the filter. + */ + 400: { + content: never; + }; + /** @description Returned if the requesting user is not an owner of the filter. */ + 403: { + content: never; + }; + }; + }; + /** + * Reset columns + * @description Reset the user's column configuration for the filter to the default. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, columns are only reset for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + resetColumns: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the user does not have permission to view the filter. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Add filter as favorite + * @description Add a filter as a favorite for the user. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, the user can only favorite: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + setFavouriteForFilter: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + }; + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"]; + }; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the user does not have permission to favorite the filter. + */ + 400: { + content: never; + }; + }; + }; + /** + * Remove filter as favorite + * @description Removes a filter as a favorite for the user. Note that this operation only removes filters visible to the user from the user's favorites list. For example, if the user favorites a public filter that is subsequently made private (and is therefore no longer visible on their favorites list) they cannot remove it from their favorites list. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + deleteFavouriteForFilter: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about filter in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `sharedUsers` Returns the users that the filter is shared with. This includes users that can browse projects that the filter is shared with. If you don't specify `sharedUsers`, then the `sharedUsers` object is returned but it doesn't list any users. The list of users returned is limited to 1000, to access additional users append `[start-index:end-index]` to the expand request. For example, to access the next 1000 users, use `?expand=sharedUsers[1001:2000]`. + * * `subscriptions` Returns the users that are subscribed to the filter. If you don't specify `subscriptions`, the `subscriptions` object is returned but it doesn't list any subscriptions. The list of subscriptions returned is limited to 1000, to access additional subscriptions append `[start-index:end-index]` to the expand request. For example, to access the next 1000 subscriptions, use `?expand=subscriptions[1001:2000]`. + */ + expand?: string; + }; + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Filter"]; + }; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the user does not have permission to view the filter. + */ + 400: { + content: never; + }; + }; + }; + /** + * Change filter owner + * @description Changes the owner of the filter. + * + * **[Permissions](#permissions) required:** Permission to access Jira. However, the user must own the filter or have the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + changeFilterOwner: { + parameters: { + path: { + /** @description The ID of the filter to update. */ + id: number; + }; + }; + /** @description The account ID of the new owner of the filter. */ + requestBody: { + content: { + /** + * @example { + * "accountId": "0000-0000-0000-0000" + * } + */ + "application/json": components["schemas"]["ChangeFilterOwner"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned when: + * + * * The new owner of the filter owns a filter with the same name. + * * An attempt is made to change owner of the default filter. + */ + 400: { + content: never; + }; + /** @description Returned if the requesting user is not an owner of the filter or does not have *Administer Jira* global permission. */ + 403: { + content: never; + }; + /** @description Returned if the filter or the new owner of the filter is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get share permissions + * @description Returns the share permissions for a filter. A filter can be shared with groups, projects, all logged-in users, or the public. Sharing with all logged-in users or the public is known as a global share permission. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, share permissions are only returned for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + getSharePermissions: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SharePermission"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the user does not have permission to view the filter. + */ + 404: { + content: never; + }; + }; + }; + /** + * Add share permission + * @description Add a share permissions to a filter. If you add a global share permission (one for all logged-in users or the public) it will overwrite all share permissions for the filter. + * + * Be aware that this operation uses different objects for updating share permissions compared to [Update filter](#api-rest-api-3-filter-id-put). + * + * **[Permissions](#permissions) required:** *Share dashboards and filters* [global permission](https://confluence.atlassian.com/x/x4dKLg) and the user must own the filter. + */ + addSharePermission: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "groupname": "jira-administrators", + * "rights": 1, + * "type": "group" + * } + */ + "application/json": components["schemas"]["SharePermissionInputBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["SharePermission"][]; + }; + }; + /** + * @description Returned if: + * + * * the request object is invalid. For example, it contains an invalid type, the ID does not match the type, or the project or group is not found. + * * the user does not own the filter. + * * the user does not have the required permissions. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the user does not have permission to view the filter. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get share permission + * @description Returns a share permission for a filter. A filter can be shared with groups, projects, all logged-in users, or the public. Sharing with all logged-in users or the public is known as a global share permission. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None, however, a share permission is only returned for: + * + * * filters owned by the user. + * * filters shared with a group that the user is a member of. + * * filters shared with a private project that the user has *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for. + * * filters shared with a public project. + * * filters shared with the public. + */ + getSharePermission: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + /** @description The ID of the share permission. */ + permissionId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SharePermission"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the permission is not found. + * * the user does not have permission to view the filter. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete share permission + * @description Deletes a share permission from a filter. + * + * **[Permissions](#permissions) required:** Permission to access Jira and the user must own the filter. + */ + deleteSharePermission: { + parameters: { + path: { + /** @description The ID of the filter. */ + id: number; + /** @description The ID of the share permission. */ + permissionId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the filter is not found. + * * the user does not own the filter. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get group + * @deprecated + * @description This operation is deprecated, use [`group/member`](#api-rest-api-3-group-member-get). + * + * Returns all users in a group. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getGroup: { + parameters: { + query?: { + /** + * @description As a group's name can change, use of `groupId` is recommended to identify a group. + * The name of the group. This parameter cannot be used with the `groupId` parameter. + */ + groupname?: string; + /** @description The ID of the group. This parameter cannot be used with the `groupName` parameter. */ + groupId?: string; + /** @description List of fields to expand. */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Group"]; + }; + }; + /** @description Returned if the group name is not specified. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have the Administer Jira global permission. */ + 403: { + content: never; + }; + /** @description Returned if the group is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Create group + * @description Creates a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + createGroup: { + /** @description The name of the group. */ + requestBody: { + content: { + /** + * @example { + * "name": "power-users" + * } + */ + "application/json": components["schemas"]["AddGroupBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Group"]; + }; + }; + /** @description Returned if group name is not specified or the group name is in use. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Remove group + * @description Deletes a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* strategic [group](https://confluence.atlassian.com/x/24xjL)). + */ + removeGroup: { + parameters: { + query?: { + groupname?: string; + /** @description The ID of the group. This parameter cannot be used with the `groupname` parameter. */ + groupId?: string; + /** + * @description As a group's name can change, use of `swapGroupId` is recommended to identify a group. + * The group to transfer restrictions to. Only comments and worklogs are transferred. If restrictions are not transferred, comments and worklogs are inaccessible after the deletion. This parameter cannot be used with the `swapGroupId` parameter. + */ + swapGroup?: string; + /** @description The ID of the group to transfer restrictions to. Only comments and worklogs are transferred. If restrictions are not transferred, comments and worklogs are inaccessible after the deletion. This parameter cannot be used with the `swapGroup` parameter. */ + swapGroupId?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** @description Returned if the group name is not specified. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing from the request. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the group is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Bulk get groups + * @description Returns a [paginated](#pagination) list of groups. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + bulkGetGroups: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The ID of a group. To specify multiple IDs, pass multiple `groupId` parameters. For example, `groupId=5b10a2844c20165700ede21g&groupId=5b10ac8d82e05b22cc7d4ef5`. */ + groupId?: string[]; + /** @description The name of a group. To specify multiple names, pass multiple `groupName` parameters. For example, `groupName=administrators&groupName=jira-software-users`. */ + groupName?: string[]; + /** @description The access level of a group. Valid values: 'site-admin', 'admin', 'user'. */ + accessType?: string; + /** @description The application key of the product user groups to search for. Valid values: 'jira-servicedesk', 'jira-software', 'jira-product-discovery', 'jira-core'. */ + applicationKey?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanGroupDetails"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the group with the given access level can't be retrieved. */ + 500: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get users from group + * @description Returns a [paginated](#pagination) list of all users in a group. + * + * Note that users are ordered by username, however the username is not returned in the results due to privacy reasons. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getUsersFromGroup: { + parameters: { + query?: { + /** + * @description As a group's name can change, use of `groupId` is recommended to identify a group. + * The name of the group. This parameter cannot be used with the `groupId` parameter. + */ + groupname?: string; + /** @description The ID of the group. This parameter cannot be used with the `groupName` parameter. */ + groupId?: string; + /** @description Include inactive users. */ + includeInactiveUsers?: boolean; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanUserDetails"]; + }; + }; + /** @description Returned if the group name is not specified. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have the Administer Jira global permission. */ + 403: { + content: never; + }; + /** @description Returned if the group is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Add user to group + * @description Adds a user to a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + addUserToGroup: { + parameters: { + query?: { + /** + * @description As a group's name can change, use of `groupId` is recommended to identify a group. + * The name of the group. This parameter cannot be used with the `groupId` parameter. + */ + groupname?: string; + /** @description The ID of the group. This parameter cannot be used with the `groupName` parameter. */ + groupId?: string; + }; + }; + /** @description The user to add to the group. */ + requestBody: { + content: { + /** + * @example { + * "accountId": "5b10ac8d82e05b22cc7d4ef5" + * } + */ + "application/json": components["schemas"]["UpdateUserToGroupBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Group"]; + }; + }; + /** + * @description Returned if: + * + * * `groupname` is not provided. + * * `accountId` is missing. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing from the request. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the group or user are not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Remove user from group + * @description Removes a user from a group. + * + * **[Permissions](#permissions) required:** Site administration (that is, member of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + removeUserFromGroup: { + parameters: { + query: { + /** + * @description As a group's name can change, use of `groupId` is recommended to identify a group. + * The name of the group. This parameter cannot be used with the `groupId` parameter. + */ + groupname?: string; + /** @description The ID of the group. This parameter cannot be used with the `groupName` parameter. */ + groupId?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** + * @description Returned if: + * + * * `groupName` is missing. + * * `accountId` is missing. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing from the request. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the group or user are not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Find groups + * @description Returns a list of groups whose names contain a query string. A list of group names can be provided to exclude groups from the results. + * + * The primary use case for this resource is to populate a group picker suggestions list. To this end, the returned object includes the `html` field where the matched query term is highlighted in the group name with the HTML strong tag. Also, the groups list is wrapped in a response object that contains a header for use in the picker, specifically *Showing X of Y matching groups*. + * + * The list returns with the groups sorted. If no groups match the list criteria, an empty list is returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg). Anonymous calls and calls by users without the required permission return an empty list. + * + * *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Without this permission, calls where query is not an exact match to an existing group will return an empty list. + */ + findGroups: { + parameters: { + query?: { + /** @description This parameter is deprecated, setting it does not affect the results. To find groups containing a particular user, use [Get user groups](#api-rest-api-3-user-groups-get). */ + accountId?: string; + /** @description The string to find in group names. */ + query?: string; + /** + * @description As a group's name can change, use of `excludeGroupIds` is recommended to identify a group. + * A group to exclude from the result. To exclude multiple groups, provide an ampersand-separated list. For example, `exclude=group1&exclude=group2`. This parameter cannot be used with the `excludeGroupIds` parameter. + */ + exclude?: string[]; + /** @description A group ID to exclude from the result. To exclude multiple groups, provide an ampersand-separated list. For example, `excludeId=group1-id&excludeId=group2-id`. This parameter cannot be used with the `excludeGroups` parameter. */ + excludeId?: string[]; + /** @description The maximum number of groups to return. The maximum number of groups that can be returned is limited by the system property `jira.ajax.autocomplete.limit`. */ + maxResults?: number; + /** @description Whether the search for groups should be case insensitive. */ + caseInsensitive?: boolean; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + userName?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["FoundGroups"]; + }; + }; + }; + }; + /** + * Find users and groups + * @description Returns a list of users and groups matching a string. The string is used: + * + * * for users, to find a case-insensitive match with display name and e-mail address. Note that if a user has hidden their email address in their user profile, partial matches of the email address will not find the user. An exact match is required. + * * for groups, to find a case-sensitive match with group name. + * + * For example, if the string *tin* is used, records with the display name *Tina*, email address *sarah@tinplatetraining.com*, and the group *accounting* would be returned. + * + * Optionally, the search can be refined to: + * + * * the projects and issue types associated with a custom field, such as a user picker. The search can then be further refined to return only users and groups that have permission to view specific: + * + * * projects. + * * issue types. + * + * If multiple projects or issue types are specified, they must be a subset of those enabled for the custom field or no results are returned. For example, if a field is enabled for projects A, B, and C then the search could be limited to projects B and C. However, if the search is limited to projects B and D, nothing is returned. + * * not return Connect app users and groups. + * * return groups that have a case-insensitive match with the query. + * + * The primary use case for this resource is to populate a picker field suggestion list with users or groups. To this end, the returned object includes an `html` field for each list. This field highlights the matched query term in the item name with the HTML strong tag. Also, each list is wrapped in a response object that contains a header for use in a picker, specifically *Showing X of Y matching groups*. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/yodKLg). + */ + findUsersAndGroups: { + parameters: { + query: { + /** @description The search string. */ + query: string; + /** @description The maximum number of items to return in each list. */ + maxResults?: number; + /** @description Whether the user avatar should be returned. If an invalid value is provided, the default value is used. */ + showAvatar?: boolean; + /** @description The custom field ID of the field this request is for. */ + fieldId?: string; + /** @description The ID of a project that returned users and groups must have permission to view. To include multiple projects, provide an ampersand-separated list. For example, `projectId=10000&projectId=10001`. This parameter is only used when `fieldId` is present. */ + projectId?: string[]; + /** @description The ID of an issue type that returned users and groups must have permission to view. To include multiple issue types, provide an ampersand-separated list. For example, `issueTypeId=10000&issueTypeId=10001`. Special values, such as `-1` (all standard issue types) and `-2` (all subtask issue types), are supported. This parameter is only used when `fieldId` is present. */ + issueTypeId?: string[]; + /** @description The size of the avatar to return. If an invalid value is provided, the default value is used. */ + avatarSize?: + | "xsmall" + | "xsmall@2x" + | "xsmall@3x" + | "small" + | "small@2x" + | "small@3x" + | "medium" + | "medium@2x" + | "medium@3x" + | "large" + | "large@2x" + | "large@3x" + | "xlarge" + | "xlarge@2x" + | "xlarge@3x" + | "xxlarge" + | "xxlarge@2x" + | "xxlarge@3x" + | "xxxlarge" + | "xxxlarge@2x" + | "xxxlarge@3x"; + /** @description Whether the search for groups should be case insensitive. */ + caseInsensitive?: boolean; + /** @description Whether Connect app users and groups should be excluded from the search results. If an invalid value is provided, the default value is used. */ + excludeConnectAddons?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["FoundUsersAndGroups"]; + }; + }; + /** @description Returned if the query parameter is not provided. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Get license + * @description Returns licensing information about the Jira instance. + * + * **[Permissions](#permissions) required:** None. + */ + getLicense: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["License"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create issue + * @description Creates an issue or, where the option to create subtasks is enabled in Jira, a subtask. A transition may be applied, to move the issue or subtask to a workflow step other than the default start step, and issue properties set. + * + * The content of the issue or subtask is defined using `update` and `fields`. The fields that can be set in the issue or subtask are determined using the [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get). These are the same fields that appear on the issue's create screen. Note that the `description`, `environment`, and any `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`) accept a string and don't handle Atlassian Document Format content. + * + * Creating a subtask differs from creating an issue as follows: + * + * * `issueType` must be set to a subtask issue type (use [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get) to find subtask issue types). + * * `parent` must contain the ID or key of the parent issue. + * + * In a next-gen project any issue may be made a child providing that the parent and child are members of the same project. + * + * **[Permissions](#permissions) required:** *Browse projects* and *Create issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in which the issue or subtask is created. + */ + createIssue: { + parameters: { + query?: { + /** @description Whether the project in which the issue is created is added to the user's **Recently viewed** project list, as shown under **Projects** in Jira. When provided, the issue type and request type are added to the user's history for a project. These values are then used to provide defaults on the issue create screen. */ + updateHistory?: boolean; + }; + }; + requestBody: { + content: { + /** + * @example { + * "fields": { + * "assignee": { + * "id": "5b109f2e9729b51b54dc274d" + * }, + * "components": [ + * { + * "id": "10000" + * } + * ], + * "customfield_10000": "09/Jun/19", + * "customfield_20000": "06/Jul/19 3:25 PM", + * "customfield_30000": [ + * "10000", + * "10002" + * ], + * "customfield_40000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Occurs on all orders", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_50000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Could impact day-to-day work.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_60000": "jira-software-users", + * "customfield_70000": [ + * "jira-administrators", + * "jira-software-users" + * ], + * "customfield_80000": { + * "value": "red" + * }, + * "description": { + * "content": [ + * { + * "content": [ + * { + * "text": "Order entry fails when selecting supplier.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "duedate": "2019-05-11", + * "environment": { + * "content": [ + * { + * "content": [ + * { + * "text": "UAT", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "fixVersions": [ + * { + * "id": "10001" + * } + * ], + * "issuetype": { + * "id": "10000" + * }, + * "labels": [ + * "bugfix", + * "blitz_test" + * ], + * "parent": { + * "key": "PROJ-123" + * }, + * "priority": { + * "id": "20000" + * }, + * "project": { + * "id": "10000" + * }, + * "reporter": { + * "id": "5b10a2844c20165700ede21g" + * }, + * "security": { + * "id": "10000" + * }, + * "summary": "Main order flow broken", + * "timetracking": { + * "originalEstimate": "10", + * "remainingEstimate": "5" + * }, + * "versions": [ + * { + * "id": "10000" + * } + * ] + * }, + * "update": {} + * } + */ + "application/json": components["schemas"]["IssueUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["CreatedIssue"]; + }; + }; + /** + * @description Returned if the request: + * + * * is missing required fields. + * * contains invalid field values. + * * contains fields that cannot be set for the issue type. + * * is by a user who does not have the necessary permission. + * * is to create a subtype in a project different that of the parent issue. + * * is for a subtask when the option to create subtasks is disabled. + * * is invalid for any other reason. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if a configuration problem prevents the creation of the issue. (refer to the [changelog](https://developer.atlassian.com/changelog/#CHANGE-1364) *for more details.* */ + 422: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Archive issue(s) by issue ID/key + * @description Enables admins to archive up to 1000 issues in a single request using issue ID/key, returning details of the issue(s) archived in the process and the errors encountered, if any. + * + * **Note that:** + * + * * you can't archive subtasks directly, only through their parent issues + * * you can only archive issues from software, service management, and business projects + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + */ + archiveIssues: { + /** @description Contains a list of issue keys or IDs to be archived. */ + requestBody: { + content: { + /** + * @example { + * "issueIdsOrKeys": [ + * "PR-1", + * "1001", + * "PROJECT-2" + * ] + * } + */ + "application/json": components["schemas"]["IssueArchivalSyncRequest"]; + }; + }; + responses: { + /** @description Returned if there is at least one valid issue to archive in the request. The return message will include the count of archived issues and subtasks, as well as error details for issues which failed to get archived. */ + 200: { + content: { + "application/json": components["schemas"]["IssueArchivalSyncResponse"]; + }; + }; + /** + * @description Returned if none of the issues in the request can be archived. Possible reasons: + * + * * the issues weren't found + * * the issues are subtasks + * * the issues belong to unlicensed projects + * * the issues belong to archived projects + */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were archived because the provided authentication credentials are either missing or invalid. */ + 401: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were archived because the user lacks the required Jira admin or site admin permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if one or more issues were successfully archived, but the operation was incomplete because the number of issue IDs or keys provided exceeds 1000. */ + 412: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Archive issue(s) by JQL + * @description Enables admins to archive up to 100,000 issues in a single request using JQL, returning the URL to check the status of the submitted request. + * + * You can use the [get task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-get) and [cancel task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-cancel-post) APIs to manage the request. + * + * **Note that:** + * + * * you can't archive subtasks directly, only through their parent issues + * * you can only archive issues from software, service management, and business projects + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + * + * **Rate limiting:** Only a single request per jira instance can be active at any given time. + */ + archiveIssuesAsync: { + /** @description A JQL query specifying the issues to archive. Note that subtasks can only be archived through their parent issues. */ + requestBody: { + content: { + /** + * @example { + * "jql": "project = FOO AND updated < -2y" + * } + */ + "application/json": components["schemas"]["ArchiveIssueAsyncRequest"]; + }; + }; + responses: { + /** @description Returns the URL to check the status of the submitted request. */ + 202: { + content: { + "application/json": string; + }; + }; + /** @description Returned if no issues were archived due to a bad request, for example an invalid JQL query. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were archived because the provided authentication credentials are either missing or invalid. */ + 401: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were archived because the user lacks the required Jira admin or site admin permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if a request to archive issue(s) is already running. */ + 412: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Bulk create issue + * @description Creates upto **50** issues and, where the option to create subtasks is enabled in Jira, subtasks. Transitions may be applied, to move the issues or subtasks to a workflow step other than the default start step, and issue properties set. + * + * The content of each issue or subtask is defined using `update` and `fields`. The fields that can be set in the issue or subtask are determined using the [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get). These are the same fields that appear on the issues' create screens. Note that the `description`, `environment`, and any `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`) accept a string and don't handle Atlassian Document Format content. + * + * Creating a subtask differs from creating an issue as follows: + * + * * `issueType` must be set to a subtask issue type (use [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get) to find subtask issue types). + * * `parent` the must contain the ID or key of the parent issue. + * + * **[Permissions](#permissions) required:** *Browse projects* and *Create issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in which each issue or subtask is created. + */ + createIssues: { + requestBody: { + content: { + /** + * @example { + * "issueUpdates": [ + * { + * "fields": { + * "assignee": { + * "id": "5b109f2e9729b51b54dc274d" + * }, + * "components": [ + * { + * "id": "10000" + * } + * ], + * "customfield_10000": "09/Jun/19", + * "customfield_20000": "06/Jul/19 3:25 PM", + * "customfield_30000": [ + * "10000", + * "10002" + * ], + * "customfield_40000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Occurs on all orders", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_50000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Could impact day-to-day work.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_60000": "jira-software-users", + * "customfield_70000": [ + * "jira-administrators", + * "jira-software-users" + * ], + * "customfield_80000": { + * "value": "red" + * }, + * "description": { + * "content": [ + * { + * "content": [ + * { + * "text": "Order entry fails when selecting supplier.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "duedate": "2011-03-11", + * "environment": { + * "content": [ + * { + * "content": [ + * { + * "text": "UAT", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "fixVersions": [ + * { + * "id": "10001" + * } + * ], + * "issuetype": { + * "id": "10000" + * }, + * "labels": [ + * "bugfix", + * "blitz_test" + * ], + * "priority": { + * "id": "20000" + * }, + * "project": { + * "id": "10000" + * }, + * "reporter": { + * "id": "5b10a2844c20165700ede21g" + * }, + * "security": { + * "id": "10000" + * }, + * "summary": "Main order flow broken", + * "timetracking": { + * "originalEstimate": "10", + * "remainingEstimate": "5" + * }, + * "versions": [ + * { + * "id": "10000" + * } + * ] + * }, + * "update": { + * "worklog": [ + * { + * "add": { + * "started": "2019-07-05T11:05:00.000+0000", + * "timeSpent": "60m" + * } + * } + * ] + * } + * }, + * { + * "fields": { + * "assignee": { + * "id": "5b109f2e9729b51b54dc274d" + * }, + * "components": [ + * { + * "id": "10000" + * } + * ], + * "customfield_10000": "09/Jun/19", + * "customfield_20000": "06/Jul/19 3:25 PM", + * "customfield_30000": [ + * "10000", + * "10002" + * ], + * "customfield_40000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Occurs on all orders", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_50000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Could impact day-to-day work.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_60000": "jira-software-users", + * "customfield_70000": [ + * "jira-administrators", + * "jira-software-users" + * ], + * "customfield_80000": { + * "value": "red" + * }, + * "description": { + * "content": [ + * { + * "content": [ + * { + * "text": "Order remains pending after approved.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "duedate": "2019-04-16", + * "environment": { + * "content": [ + * { + * "content": [ + * { + * "text": "UAT", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "fixVersions": [ + * { + * "id": "10001" + * } + * ], + * "issuetype": { + * "id": "10000" + * }, + * "labels": [ + * "new_release" + * ], + * "priority": { + * "id": "20000" + * }, + * "project": { + * "id": "1000" + * }, + * "reporter": { + * "id": "5b10a2844c20165700ede21g" + * }, + * "security": { + * "id": "10000" + * }, + * "summary": "Order stuck in pending", + * "timetracking": { + * "originalEstimate": "15", + * "remainingEstimate": "5" + * }, + * "versions": [ + * { + * "id": "10000" + * } + * ] + * }, + * "update": {} + * } + * ] + * } + */ + "application/json": components["schemas"]["IssuesUpdateBean"]; + }; + }; + responses: { + /** + * @description Returned if any of the issue or subtask creation requests were successful. A request may be unsuccessful when it: + * + * * is missing required fields. + * * contains invalid field values. + * * contains fields that cannot be set for the issue type. + * * is by a user who does not have the necessary permission. + * * is to create a subtype in a project different that of the parent issue. + * * is for a subtask when the option to create subtasks is disabled. + * * is invalid for any other reason. + */ + 201: { + content: { + "application/json": components["schemas"]["CreatedIssues"]; + }; + }; + /** + * @description Returned if all requests are invalid. Requests may be unsuccessful when they: + * + * * are missing required fields. + * * contain invalid field values. + * * contain fields that cannot be set for the issue type. + * * are by a user who does not have the necessary permission. + * * are to create a subtype in a project different that of the parent issue. + * * is for a subtask when the option to create subtasks is disabled. + * * are invalid for any other reason. + */ + 400: { + content: { + "application/json": components["schemas"]["CreatedIssues"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get create issue metadata + * @deprecated + * @description Returns details of projects, issue types within projects, and, when requested, the create screen fields for each issue type for the user. Use the information to populate the requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). + * + * The request can be restricted to specific projects or issue types using the query parameters. The response will contain information for the valid projects, issue types, or project and issue type combinations requested. Note that invalid project, issue type, or project and issue type combinations do not generate errors. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects. + */ + getCreateIssueMeta: { + parameters: { + query?: { + /** @description List of project IDs. This parameter accepts a comma-separated list. Multiple project IDs can also be provided using an ampersand-separated list. For example, `projectIds=10000,10001&projectIds=10020,10021`. This parameter may be provided with `projectKeys`. */ + projectIds?: string[]; + /** @description List of project keys. This parameter accepts a comma-separated list. Multiple project keys can also be provided using an ampersand-separated list. For example, `projectKeys=proj1,proj2&projectKeys=proj3`. This parameter may be provided with `projectIds`. */ + projectKeys?: string[]; + /** @description List of issue type IDs. This parameter accepts a comma-separated list. Multiple issue type IDs can also be provided using an ampersand-separated list. For example, `issuetypeIds=10000,10001&issuetypeIds=10020,10021`. This parameter may be provided with `issuetypeNames`. */ + issuetypeIds?: string[]; + /** @description List of issue type names. This parameter accepts a comma-separated list. Multiple issue type names can also be provided using an ampersand-separated list. For example, `issuetypeNames=name1,name2&issuetypeNames=name3`. This parameter may be provided with `issuetypeIds`. */ + issuetypeNames?: string[]; + /** @description Use [expand](#expansion) to include additional information about issue metadata in the response. This parameter accepts `projects.issuetypes.fields`, which returns information about the fields in the issue creation screen for each issue type. Fields hidden from the screen are not returned. Use the information to populate the `fields` and `update` fields in [Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueCreateMetadata"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get create metadata issue types for a project + * @description Returns a page of issue type metadata for a specified project. Use the information to populate the requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects. + */ + getCreateIssueMetaIssueTypes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID or key of the project. */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageOfCreateMetaIssueTypes"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get create field metadata for a project and issue type id + * @description Returns a page of field metadata for a specified project and issuetype id. Use the information to populate the requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects. + */ + getCreateIssueMetaIssueTypeId: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID or key of the project. */ + projectIdOrKey: string; + /** @description The issuetype ID. */ + issueTypeId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageOfCreateMetaIssueTypeWithField"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get issue picker suggestions + * @description Returns lists of issues matching a query string. Use this resource to provide auto-completion suggestions when the user is looking for an issue using a word or string. + * + * This operation returns two lists: + * + * * `History Search` which includes issues from the user's history of created, edited, or viewed issues that contain the string in the `query` parameter. + * * `Current Search` which includes issues that match the JQL expression in `currentJQL` and contain the string in the `query` parameter. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getIssuePickerResource: { + parameters: { + query?: { + /** @description A string to match against text fields in the issue such as title, description, or comments. */ + query?: string; + /** @description A JQL query defining a list of issues to search for the query term. Note that `username` and `userkey` cannot be used as search terms for this parameter, due to privacy reasons. Use `accountId` instead. */ + currentJQL?: string; + /** @description The key of an issue to exclude from search results. For example, the issue the user is viewing when they perform this query. */ + currentIssueKey?: string; + /** @description The ID of a project that suggested issues must belong to. */ + currentProjectId?: string; + /** @description Indicate whether to include subtasks in the suggestions list. */ + showSubTasks?: boolean; + /** @description When `currentIssueKey` is a subtask, whether to include the parent issue in the suggestions if it matches the query. */ + showSubTaskParent?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssuePickerSuggestions"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Bulk set issues properties by list + * @description Sets or updates a list of entity property values on issues. A list of up to 10 entity properties can be specified along with up to 10,000 issues on which to set or update that list of entity properties. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON. The maximum length of single issue property value is 32768 characters. This operation can be accessed anonymously. + * + * This operation is: + * + * * transactional, either all properties are updated in all eligible issues or, when errors occur, no properties are updated. + * * [asynchronous](#async). 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](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + bulkSetIssuesPropertiesList: { + /** @description Issue properties to be set or updated with values. */ + requestBody: { + content: { + "application/json": components["schemas"]["IssueEntityProperties"]; + }; + }; + responses: { + /** @description Returned if the operation is successful. */ + 303: { + content: never; + }; + /** @description Return if the request is invalid or the user does not have the necessary permission. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Bulk set issue properties by issue + * @description Sets or updates entity property values on issues. Up to 10 entity properties can be specified for each issue and up to 100 issues included in the request. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON. + * + * This operation is: + * + * * [asynchronous](#async). 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. + * * non-transactional. Updating some entities may fail. Such information will available in the task result. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + bulkSetIssuePropertiesByIssue: { + /** @description Details of the issue properties to be set or updated. Note that if an issue is not found, it is ignored. */ + requestBody: { + content: { + /** + * @example { + * "issues": [ + * { + * "issueID": 1000, + * "properties": { + * "myProperty": { + * "owner": "admin", + * "weight": 100 + * } + * } + * }, + * { + * "issueID": 1001, + * "properties": { + * "myOtherProperty": { + * "cost": 150, + * "transportation": "car" + * } + * } + * } + * ] + * } + */ + "application/json": components["schemas"]["MultiIssueEntityProperties"]; + }; + }; + responses: { + /** @description Returned if the operation is successful. */ + 303: { + content: never; + }; + /** @description Return if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Return if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Bulk set issue property + * @description Sets a property value on multiple issues. + * + * The value set can be a constant or determined by a [Jira expression](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/). Expressions must be computable with constant complexity when applied to a set of issues. Expressions must also comply with the [restrictions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#restrictions) that apply to all Jira expressions. + * + * The issues to be updated can be specified by a filter. + * + * The filter identifies issues eligible for update using these criteria: + * + * * `entityIds` Only issues from this list are eligible. + * * `currentValue` Only issues with the property set to this value are eligible. + * * `hasProperty`: + * + * * If *true*, only issues with the property are eligible. + * * If *false*, only issues without the property are eligible. + * + * If more than one criteria is specified, they are joined with the logical *AND*: only issues that satisfy all criteria are eligible. + * + * If an invalid combination of criteria is provided, an error is returned. For example, specifying a `currentValue` and `hasProperty` as *false* would not match any issues (because without the property the property cannot have a value). + * + * The filter is optional. Without the filter all the issues visible to the user and where the user has the EDIT\_ISSUES permission for the issue are considered eligible. + * + * This operation is: + * + * * transactional, either all eligible issues are updated or, when errors occur, none are updated. + * * [asynchronous](#async). 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](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing issues. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Edit issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue. + */ + bulkSetIssueProperty: { + parameters: { + path: { + /** @description The key of the property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "filter": { + * "currentValue": { + * "owner": "admin", + * "weight": 50 + * }, + * "entityIds": [ + * 10100, + * 100010 + * ], + * "hasProperty": true + * }, + * "value": { + * "owner": "admin", + * "weight": 100 + * } + * } + */ + "application/json": components["schemas"]["BulkIssuePropertyUpdateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Bulk delete issue property + * @description Deletes a property value from multiple issues. The issues to be updated can be specified by filter criteria. + * + * The criteria the filter used to identify eligible issues are: + * + * * `entityIds` Only issues from this list are eligible. + * * `currentValue` Only issues with the property set to this value are eligible. + * + * If both criteria is specified, they are joined with the logical *AND*: only issues that satisfy both criteria are considered eligible. + * + * If no filter criteria are specified, all the issues visible to the user and where the user has the EDIT\_ISSUES permission for the issue are considered eligible. + * + * This operation is: + * + * * transactional, either the property is deleted from all eligible issues or, when errors occur, no properties are deleted. + * * [asynchronous](#async). 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](#permissions) required:** + * + * * *Browse projects* [ project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing issues. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Edit issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue. + */ + bulkDeleteIssueProperty: { + parameters: { + path: { + /** @description The key of the property. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "currentValue": "deprecated value", + * "entityIds": [ + * 10100, + * 100010 + * ] + * } + */ + "application/json": components["schemas"]["IssueFilterForBulkPropertyDelete"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Unarchive issue(s) by issue keys/ID + * @description Enables admins to unarchive up to 1000 issues in a single request using issue ID/key, returning details of the issue(s) unarchived in the process and the errors encountered, if any. + * + * **Note that:** + * + * * you can't unarchive subtasks directly, only through their parent issues + * * you can only unarchive issues from software, service management, and business projects + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + */ + unarchiveIssues: { + /** @description Contains a list of issue keys or IDs to be unarchived. */ + requestBody: { + content: { + /** + * @example { + * "issueIdsOrKeys": [ + * "PR-1", + * "1001", + * "PROJECT-2" + * ] + * } + */ + "application/json": components["schemas"]["IssueArchivalSyncRequest"]; + }; + }; + responses: { + /** @description Returned if there is at least one valid issue to unarchive in the request. It will return the count of unarchived issues, which also includes the count of the subtasks unarchived, and it will show the detailed errors for those issues which are not unarchived. */ + 200: { + content: { + "application/json": components["schemas"]["IssueArchivalSyncResponse"]; + }; + }; + /** + * @description Returned if none of the issues in the request are eligible to be unarchived. Possible reasons: + * + * * the issues weren't found + * * the issues are subtasks + * * the issues belong to archived projects + */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were unarchived because the provided authentication credentials are either missing or invalid. */ + 401: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were unarchived because the user lacks the required Jira admin or site admin permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if one or more issues were successfully unarchived, but the operation was incomplete because the number of issue IDs or keys provided exceeds 1000. */ + 412: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get is watching issue bulk + * @description Returns, for the user, details of the watched status of issues from a list. If an issue ID is invalid, the returned watched status is `false`. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getIsWatchingIssueBulk: { + /** @description A list of issue IDs. */ + requestBody: { + content: { + /** + * @example { + * "issueIds": [ + * "10001", + * "10002", + * "10005" + * ] + * } + */ + "application/json": components["schemas"]["IssueList"]; + }; + }; + responses: { + /** @description Returned if the request is successful */ + 200: { + content: { + "application/json": components["schemas"]["BulkIssueIsWatching"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get issue + * @description Returns the details for an issue. + * + * The issue is identified by its ID or key, however, if the identifier doesn't match an issue, a case-insensitive search and check for moved issues is performed. If a matching issue is found its details are returned, a 302 or other redirect is **not** returned. The issue key returned in the response is the key of the issue found. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getIssue: { + parameters: { + query?: { + /** + * @description A list of fields to return for the issue. This parameter accepts a comma-separated list. Use it to retrieve a subset of fields. Allowed values: + * + * * `*all` Returns all fields. + * * `*navigable` Returns navigable fields. + * * Any issue field, prefixed with a minus to exclude. + * + * Examples: + * + * * `summary,comment` Returns only the summary and comments fields. + * * `-description` Returns all (default) fields except description. + * * `*navigable,-comment` Returns all navigable fields except comment. + * + * This parameter may be specified multiple times. For example, `fields=field1,field2& fields=field3`. + * + * Note: All fields are returned by default. This differs from [Search for issues using JQL (GET)](#api-rest-api-3-search-get) and [Search for issues using JQL (POST)](#api-rest-api-3-search-post) where the default is all navigable fields. + */ + fields?: string[]; + /** @description Whether fields in `fields` are referenced by keys rather than IDs. This parameter is useful where fields have been added by a connect app and a field's key may differ from its ID. */ + fieldsByKeys?: boolean; + /** + * @description Use [expand](#expansion) to include additional information about the issues in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `renderedFields` Returns field values rendered in HTML format. + * * `names` Returns the display name of each field. + * * `schema` Returns the schema describing a field type. + * * `transitions` Returns all possible transitions for the issue. + * * `editmeta` Returns information about how each field can be edited. + * * `changelog` Returns a list of recent updates to an issue, sorted by date, starting from the most recent. + * * `versionedRepresentations` Returns a JSON array for each version of a field's value, with the highest number representing the most recent version. Note: When included in the request, the `fields` parameter is ignored. + */ + expand?: string; + /** + * @description A list of issue properties to return for the issue. This parameter accepts a comma-separated list. Allowed values: + * + * * `*all` Returns all issue properties. + * * Any issue property key, prefixed with a minus to exclude. + * + * Examples: + * + * * `*all` Returns all properties. + * * `*all,-prop1` Returns all properties except `prop1`. + * * `prop1,prop2` Returns `prop1` and `prop2` properties. + * + * This parameter may be specified multiple times. For example, `properties=prop1,prop2& properties=prop3`. + */ + properties?: string[]; + /** @description Whether the project in which the issue is created is added to the user's **Recently viewed** project list, as shown under **Projects** in Jira. This also populates the [JQL issues search](#api-rest-api-3-search-get) `lastViewed` field. */ + updateHistory?: boolean; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueBean"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Edit issue + * @description Edits an issue. A transition may be applied and issue properties updated as part of the edit. + * + * The edits to the issue's fields are defined using `update` and `fields`. The fields that can be edited are determined using [ Get edit issue metadata](#api-rest-api-3-issue-issueIdOrKey-editmeta-get). + * + * The parent field may be set by key or ID. For standard issue types, the parent may be removed by setting `update.parent.set.none` to *true*. Note that the `description`, `environment`, and any `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`) accept a string and don't handle Atlassian Document Format content. + * + * Connect apps having an app user with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), can override the screen security configuration using `overrideScreenSecurity` and `overrideEditableFlag`. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [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. + */ + editIssue: { + parameters: { + query?: { + /** @description Whether a notification email about the issue update is sent to all watchers. To disable the notification, administer Jira or administer project permissions are required. If the user doesn't have the necessary permission the request is ignored. */ + notifyUsers?: boolean; + /** @description Whether screen security is overridden to enable hidden fields to be edited. Available to Connect app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideScreenSecurity?: boolean; + /** @description Whether screen security is overridden to enable uneditable fields to be edited. Available to Connect app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideEditableFlag?: boolean; + /** @description Whether the response should contain the issue with fields edited in this request. The returned issue will have the same format as in the [Get issue API](#api-rest-api-3-issue-issueidorkey-get). */ + returnIssue?: boolean; + /** @description The Get issue API expand parameter to use in the response if the `returnIssue` parameter is `true`. */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "fields": { + * "customfield_10000": { + * "content": [ + * { + * "content": [ + * { + * "text": "Investigation underway", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "customfield_10010": 1, + * "summary": "Completed orders still displaying in pending" + * }, + * "historyMetadata": { + * "activityDescription": "Complete order processing", + * "actor": { + * "avatarUrl": "http://mysystem/avatar/tony.jpg", + * "displayName": "Tony", + * "id": "tony", + * "type": "mysystem-user", + * "url": "http://mysystem/users/tony" + * }, + * "cause": { + * "id": "myevent", + * "type": "mysystem-event" + * }, + * "description": "From the order testing process", + * "extraData": { + * "Iteration": "10a", + * "Step": "4" + * }, + * "generator": { + * "id": "mysystem-1", + * "type": "mysystem-application" + * }, + * "type": "myplugin:type" + * }, + * "properties": [ + * { + * "key": "key1", + * "value": "Order number 10784" + * }, + * { + * "key": "key2", + * "value": "Order number 10923" + * } + * ], + * "update": { + * "components": [ + * { + * "set": "" + * } + * ], + * "labels": [ + * { + * "add": "triaged" + * }, + * { + * "remove": "blocker" + * } + * ], + * "summary": [ + * { + * "set": "Bug in business logic" + * } + * ], + * "timetracking": [ + * { + * "edit": { + * "originalEstimate": "1w 1d", + * "remainingEstimate": "4d" + * } + * } + * ] + * } + * } + */ + "application/json": components["schemas"]["IssueUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful and the `returnIssue` parameter is `true` */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * the request body is missing. + * * the user does not have the necessary permission to edit one or more fields. + * * the request includes one or more fields that are not found or are not associated with the issue's edit screen. + * * the request includes an invalid transition. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user uses `overrideScreenSecurity` or `overrideEditableFlag` but doesn't have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + /** @description Returned if the issue could not be updated due to a conflicting update. (refer to the [changelog](https://developer.atlassian.com/changelog/#CHANGE-1364) *for more details.* */ + 409: { + content: never; + }; + /** @description Returned if a configuration problem prevents the issue being updated. (refer to the [changelog](https://developer.atlassian.com/changelog/#CHANGE-1364) *for more details.* */ + 422: { + content: never; + }; + }; + }; + /** + * Delete issue + * @description Deletes an issue. + * + * An issue cannot be deleted if it has one or more subtasks. To delete an issue with subtasks, set `deleteSubtasks`. This causes the issue's subtasks to be deleted with the issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Delete issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + deleteIssue: { + parameters: { + query?: { + /** @description Whether the issue's subtasks are deleted when the issue is deleted. */ + deleteSubtasks?: "true" | "false"; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the issue has subtasks and `deleteSubtasks` is not set to *true*. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to delete the issue. */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Assign issue + * @description Assigns an issue to a user. Use this operation when the calling user does not have the *Edit Issues* permission but has the *Assign issue* permission for the project that the issue is in. + * + * If `name` or `accountId` is set to: + * + * * `"-1"`, the issue is assigned to the default assignee for the project. + * * `null`, the issue is set to unassigned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse Projects* and *Assign Issues* [ 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. + */ + assignIssue: { + parameters: { + path: { + /** @description The ID or key of the issue to be assigned. */ + issueIdOrKey: string; + }; + }; + /** @description The request object with the user that the issue is assigned to. */ + requestBody: { + content: { + /** + * @example { + * "accountId": "5b10ac8d82e05b22cc7d4ef5" + * } + */ + "application/json": components["schemas"]["User"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * the user is not found. + * * `name`, `key`, or `accountId` is missing. + * * more than one of `name`, `key`, and `accountId` are provided. + */ + 400: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Add attachment + * @description Adds one or more attachments to an issue. Attachments are posted as multipart/form-data ([RFC 1867](https://www.ietf.org/rfc/rfc1867.txt)). + * + * Note that: + * + * * The request must have a `X-Atlassian-Token: no-check` header, if not it is blocked. See [Special headers](#special-request-headers) for more information. + * * The name of the multipart/form-data parameter that contains the attachments must be `file`. + * + * The following examples upload a file called *myfile.txt* to the issue *TEST-123*: + * + * #### curl #### + * + * curl --location --request POST 'https://your-domain.atlassian.net/rest/api/3/issue/TEST-123/attachments' + * -u 'email@example.com:' + * -H 'X-Atlassian-Token: no-check' + * --form 'file=@"myfile.txt"' + * + * #### Node.js #### + * + * // This code sample uses the 'node-fetch' and 'form-data' libraries: + * // https://www.npmjs.com/package/node-fetch + * // https://www.npmjs.com/package/form-data + * const fetch = require('node-fetch'); + * const FormData = require('form-data'); + * const fs = require('fs'); + * + * const filePath = 'myfile.txt'; + * const form = new FormData(); + * const stats = fs.statSync(filePath); + * const fileSizeInBytes = stats.size; + * const fileStream = fs.createReadStream(filePath); + * + * form.append('file', fileStream, {knownLength: fileSizeInBytes}); + * + * fetch('https://your-domain.atlassian.net/rest/api/3/issue/TEST-123/attachments', { + * method: 'POST', + * body: form, + * headers: { + * 'Authorization': `Basic ${Buffer.from( + * 'email@example.com:' + * ).toString('base64')}`, + * 'Accept': 'application/json', + * 'X-Atlassian-Token': 'no-check' + * } + * }) + * .then(response => { + * console.log( + * `Response: ${response.status} ${response.statusText}` + * ); + * return response.text(); + * }) + * .then(text => console.log(text)) + * .catch(err => console.error(err)); + * + * #### Java #### + * + * // This code sample uses the 'Unirest' library: + * // http://unirest.io/java.html + * HttpResponse response = Unirest.post("https://your-domain.atlassian.net/rest/api/2/issue/{issueIdOrKey}/attachments") + * .basicAuth("email@example.com", "") + * .header("Accept", "application/json") + * .header("X-Atlassian-Token", "no-check") + * .field("file", new File("myfile.txt")) + * .asJson(); + * + * System.out.println(response.getBody()); + * + * #### Python #### + * + * # This code sample uses the 'requests' library: + * # http://docs.python-requests.org + * import requests + * from requests.auth import HTTPBasicAuth + * import json + * + * url = "https://your-domain.atlassian.net/rest/api/2/issue/{issueIdOrKey}/attachments" + * + * auth = HTTPBasicAuth("email@example.com", "") + * + * headers = { + * "Accept": "application/json", + * "X-Atlassian-Token": "no-check" + * } + * + * response = requests.request( + * "POST", + * url, + * headers = headers, + * auth = auth, + * files = { + * "file": ("myfile.txt", open("myfile.txt","rb"), "application-type") + * } + * ) + * + * print(json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": "))) + * + * #### PHP #### + * + * // This code sample uses the 'Unirest' library: + * // http://unirest.io/php.html + * Unirest\Request::auth('email@example.com', ''); + * + * $headers = array( + * 'Accept' => 'application/json', + * 'X-Atlassian-Token' => 'no-check' + * ); + * + * $parameters = array( + * 'file' => File::add('myfile.txt') + * ); + * + * $response = Unirest\Request::post( + * 'https://your-domain.atlassian.net/rest/api/2/issue/{issueIdOrKey}/attachments', + * $headers, + * $parameters + * ); + * + * var_dump($response) + * + * #### Forge #### + * + * // This sample uses Atlassian Forge and the `form-data` library. + * // https://developer.atlassian.com/platform/forge/ + * // https://www.npmjs.com/package/form-data + * import api from "@forge/api"; + * import FormData from "form-data"; + * + * const form = new FormData(); + * form.append('file', fileStream, {knownLength: fileSizeInBytes}); + * + * const response = await api.asApp().requestJira('/rest/api/2/issue/{issueIdOrKey}/attachments', { + * method: 'POST', + * body: form, + * headers: { + * 'Accept': 'application/json', + * 'X-Atlassian-Token': 'no-check' + * } + * }); + * + * console.log(`Response: ${response.status} ${response.statusText}`); + * console.log(await response.json()); + * + * Tip: Use a client library. Many client libraries have classes for handling multipart POST operations. For example, in Java, the Apache HTTP Components library provides a [MultiPartEntity](http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html) class for multipart POST operations. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse Projects* and *Create attachments* [ 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. + */ + addAttachment: { + parameters: { + path: { + /** @description The ID or key of the issue that attachments are added to. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + "multipart/form-data": components["schemas"]["MultipartFile"][]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Attachment"][]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * the issue is not found. + * * the user does not have permission to view the issue. + */ + 404: { + content: never; + }; + /** @description The attachments exceed the maximum attachment size for issues, or more than 60 files are requested to be uploaded. See [Configuring file attachments](https://confluence.atlassian.com/x/wIXKM) for details. */ + 413: { + content: never; + }; + }; + }; + /** + * Get changelogs + * @description Returns a [paginated](#pagination) list of all changelogs for an issue sorted by date, starting from the oldest. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getChangeLogs: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanChangelog"]; + }; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get changelogs by IDs + * @description Returns changelogs for an issue specified by a list of changelog IDs. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getChangeLogsByIds: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "changelogIds": [ + * 10001, + * 10002 + * ] + * } + */ + "application/json": components["schemas"]["IssueChangelogIds"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageOfChangelogs"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Get comments + * @description Returns all comments for an issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Comments are included in the response where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the comment. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is role visibility is restricted to. + */ + getComments: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description [Order](#ordering) the results by a field. Accepts *created* to sort comments by their created date. */ + orderBy?: "created" | "-created" | "+created"; + /** @description Use [expand](#expansion) to include additional information about comments in the response. This parameter accepts `renderedBody`, which returns the comment body rendered in HTML. */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageOfComments"]; + }; + }; + /** @description Returned if `orderBy` is set to a value other than *created*. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Add comment + * @description Adds a comment to an issue. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Add comments* [ project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue containing the comment is in. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + addComment: { + parameters: { + query?: { + /** @description Use [expand](#expansion) to include additional information about comments in the response. This parameter accepts `renderedBody`, which returns the comment body rendered in HTML. */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "body": { + * "content": [ + * { + * "content": [ + * { + * "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "visibility": { + * "identifier": "Administrators", + * "type": "role", + * "value": "Administrators" + * } + * } + */ + "application/json": components["schemas"]["Comment"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Comment"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get comment + * @description Returns a comment. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the comment. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted to. + */ + getComment: { + parameters: { + query?: { + /** @description Use [expand](#expansion) to include additional information about comments in the response. This parameter accepts `renderedBody`, which returns the comment body rendered in HTML. */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the comment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Comment"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue or comment is not found or the user does not have permission to view the issue or comment. */ + 404: { + content: never; + }; + }; + }; + /** + * Update comment + * @description Updates a comment. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue containing the comment is in. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Edit all comments*[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any comment or *Edit own comments* to update comment created by the user. + * * If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted to. + */ + updateComment: { + parameters: { + query?: { + /** @description Whether users are notified when a comment is updated. */ + notifyUsers?: boolean; + /** @description Whether screen security is overridden to enable uneditable fields to be edited. Available to Connect app users with the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideEditableFlag?: boolean; + /** @description Use [expand](#expansion) to include additional information about comments in the response. This parameter accepts `renderedBody`, which returns the comment body rendered in HTML. */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the comment. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "body": { + * "content": [ + * { + * "content": [ + * { + * "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "visibility": { + * "identifier": "Administrators", + * "type": "role", + * "value": "Administrators" + * } + * } + */ + "application/json": components["schemas"]["Comment"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Comment"]; + }; + }; + /** @description Returned if the user does not have permission to edit the comment or the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue or comment is not found or the user does not have permission to view the issue or comment. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete comment + * @description Deletes a comment. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue containing the comment is in. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * *Delete all comments*[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any comment or *Delete own comments* to delete comment created by the user, + * * If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted to. + */ + deleteComment: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the comment. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the user does not have permission to delete the comment. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue or comment is not found or the user does not have permission to view the issue or comment. */ + 404: { + content: never; + }; + /** @description Returned if an anonymous call is made to the operation. */ + 405: { + content: never; + }; + }; + }; + /** + * Get edit issue metadata + * @description Returns the edit screen fields for an issue that are visible to and editable by the user. Use the information to populate the requests in [Edit issue](#api-rest-api-3-issue-issueIdOrKey-put). + * + * This endpoint will check for these conditions: + * + * 1. Field is available on a field screen - through screen, screen scheme, issue type screen scheme, and issue type scheme configuration. `overrideScreenSecurity=true` skips this condition. + * 2. Field is visible in the [field configuration](https://support.atlassian.com/jira-cloud-administration/docs/change-a-field-configuration/). `overrideScreenSecurity=true` skips this condition. + * 3. Field is shown on the issue: each field has different conditions here. For example: Attachment field only shows if attachments are enabled. Assignee only shows if user has permissions to assign the issue. + * 4. If a field is custom then it must have valid custom field context, applicable for its project and issue type. All system fields are assumed to have context in all projects and all issue types. + * 5. Issue has a project, issue type, and status defined. + * 6. Issue is assigned to a valid workflow, and the current status has assigned a workflow step. `overrideEditableFlag=true` skips this condition. + * 7. The current workflow step is editable. This is true by default, but [can be disabled by setting](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) the `jira.issue.editable` property to `false`. `overrideEditableFlag=true` skips this condition. + * 8. User has [Edit issues permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/). + * 9. Workflow permissions allow editing a field. This is true by default but [can be modified](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) using `jira.permission.*` workflow properties. + * + * Fields hidden using [Issue layout settings page](https://support.atlassian.com/jira-software-cloud/docs/configure-field-layout-in-the-issue-view/) remain editable. + * + * Connect apps having an app user with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), can return additional details using: + * + * * `overrideScreenSecurity` When this flag is `true`, then this endpoint skips checking if fields are available through screens, and field configuration (conditions 1. and 2. from the list above). + * * `overrideEditableFlag` When this flag is `true`, then this endpoint skips checking if workflow is present and if the current step is editable (conditions 6. and 7. from the list above). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * + * Note: For any fields to be editable the user must have the *Edit issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the issue. + */ + getEditIssueMeta: { + parameters: { + query?: { + /** @description Whether hidden fields are returned. Available to Connect app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideScreenSecurity?: boolean; + /** @description Whether non-editable fields are returned. Available to Connect app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) and Forge apps acting on behalf of users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). */ + overrideEditableFlag?: boolean; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueUpdateMetadata"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user uses an override parameter but doesn't have permission to do so. */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Send notification for issue + * @description Creates an email notification for an issue and adds it to the mail queue. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + notify: { + parameters: { + path: { + /** @description ID or key of the issue that the notification is sent for. */ + issueIdOrKey: string; + }; + }; + /** @description The request object for the notification and recipients. */ + requestBody: { + content: { + /** + * @example { + * "htmlBody": "The latest test results for this ticket are now available.", + * "restrict": { + * "groupIds": [], + * "groups": [ + * { + * "name": "notification-group" + * } + * ], + * "permissions": [ + * { + * "key": "BROWSE" + * } + * ] + * }, + * "subject": "Latest test results", + * "textBody": "The latest test results for this ticket are now available.", + * "to": { + * "assignee": false, + * "groupIds": [], + * "groups": [ + * { + * "name": "notification-group" + * } + * ], + * "reporter": false, + * "users": [ + * { + * "accountId": "5b10a2844c20165700ede21g", + * "active": false + * } + * ], + * "voters": true, + * "watchers": true + * } + * } + */ + "application/json": components["schemas"]["Notification"]; + }; + }; + responses: { + /** @description Returned if the email is queued for sending. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * the recipient is the same as the calling user. + * * the recipient is invalid. For example, the recipient is set to the assignee, but the issue is unassigned. + * * the request is invalid. For example, required fields are missing or have invalid values. + */ + 400: { + content: never; + }; + /** + * @description Returned if: + * + * * outgoing emails are disabled. + * * no SMTP server is configured. + */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue property keys + * @description Returns the URLs and keys of an issue's properties. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Property details are only returned where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + getIssuePropertyKeys: { + parameters: { + path: { + /** @description The key or ID of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the issue is not found or the user does not have permissions to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue property + * @description Returns the key and value of an issue's property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + getIssueProperty: { + parameters: { + path: { + /** @description The key or ID of the issue. */ + issueIdOrKey: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue or property is not found or the user does not have permission to see the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Set issue property + * @description Sets the value of an issue's property. Use this resource to store custom data against an issue. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + setIssueProperty: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The key of the issue property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the issue property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to edit the issue. */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue property + * @description Deletes an issue's property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Edit issues* [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + deleteIssueProperty: { + parameters: { + path: { + /** @description The key or ID of the issue. */ + issueIdOrKey: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue or property is not found, or the user does not have permission to edit the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Get remote issue links + * @description Returns the remote issue links for an issue. When a remote issue link global ID is provided the record with that global ID is returned, otherwise all remote issue links are returned. Where a global ID includes reserved URL characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1` as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getRemoteIssueLinks: { + parameters: { + query?: { + /** @description The global ID of the remote issue link. */ + globalId?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["RemoteIssueLink"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if issue linking is disabled. */ + 403: { + content: never; + }; + /** @description Returned if the issue or remote issue link is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Create or update remote issue link + * @description Creates or updates a remote issue link for an issue. + * + * If a `globalId` is provided and a remote issue link with that global ID is found it is updated. Any fields without values in the request are set to null. Otherwise, the remote issue link is created. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Link issues* [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. + */ + createOrUpdateRemoteIssueLink: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "application": { + * "name": "My Acme Tracker", + * "type": "com.acme.tracker" + * }, + * "globalId": "system=http://www.mycompany.com/support&id=1", + * "object": { + * "icon": { + * "title": "Support Ticket", + * "url16x16": "http://www.mycompany.com/support/ticket.png" + * }, + * "status": { + * "icon": { + * "link": "http://www.mycompany.com/support?id=1&details=closed", + * "title": "Case Closed", + * "url16x16": "http://www.mycompany.com/support/resolved.png" + * }, + * "resolved": true + * }, + * "summary": "Customer support issue", + * "title": "TSTSUP-111",board + * "url": "http://www.mycompany.com/support?id=1" + * }, + * "relationship": "causes" + * } + */ + "application/json": components["schemas"]["RemoteIssueLinkRequest"]; + }; + }; + responses: { + /** @description Returned if the remote issue link is updated. */ + 200: { + content: { + "application/json": components["schemas"]["RemoteIssueLinkIdentifies"]; + }; + }; + /** @description Returned if the remote issue link is created. */ + 201: { + content: { + "application/json": components["schemas"]["RemoteIssueLinkIdentifies"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to link issues. */ + 403: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete remote issue link by global ID + * @description Deletes the remote issue link from the issue using the link's global ID. Where the global ID includes reserved URL characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1` as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Link issues* [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 implemented, issue-level security permission to view the issue. + */ + deleteRemoteIssueLinkByGlobalId: { + parameters: { + query: { + /** @description The global ID of a remote issue link. */ + globalId: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if a global ID isn't provided. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to link issues. */ + 403: { + content: never; + }; + /** @description Returned if the issue or remote issue link is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Get remote issue link by ID + * @description Returns a remote issue link for an issue. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + getRemoteIssueLinkById: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the remote issue link. */ + linkId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["RemoteIssueLink"]; + }; + }; + /** @description Returned if the link ID is invalid or the remote issue link does not belong to the issue. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if issue linking is disabled. */ + 403: { + content: never; + }; + /** @description Returned if the issue or remote issue link is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Update remote issue link by ID + * @description Updates a remote issue link for an issue. + * + * Note: Fields without values in the request are set to null. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Link issues* [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. + */ + updateRemoteIssueLink: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the remote issue link. */ + linkId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "application": { + * "name": "My Acme Tracker", + * "type": "com.acme.tracker" + * }, + * "globalId": "system=http://www.mycompany.com/support&id=1", + * "object": { + * "icon": { + * "title": "Support Ticket", + * "url16x16": "http://www.mycompany.com/support/ticket.png" + * }, + * "status": { + * "icon": { + * "link": "http://www.mycompany.com/support?id=1&details=closed", + * "title": "Case Closed", + * "url16x16": "http://www.mycompany.com/support/resolved.png" + * }, + * "resolved": true + * }, + * "summary": "Customer support issue", + * "title": "TSTSUP-111", + * "url": "http://www.mycompany.com/support?id=1" + * }, + * "relationship": "causes" + * } + */ + "application/json": components["schemas"]["RemoteIssueLinkRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * the link ID is invalid. + * * the remote issue link does not belong to the issue. + * * the request body is invalid. + */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to link issues. */ + 403: { + content: never; + }; + /** @description Returned if the issue or remote issue link is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete remote issue link by ID + * @description Deletes a remote issue link from an issue. + * + * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects*, *Edit issues*, and *Link issues* [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. + */ + deleteRemoteIssueLinkById: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of a remote issue link. */ + linkId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the link ID is invalid or the remote issue link does not belong to the issue. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to link issues. */ + 403: { + content: never; + }; + /** @description Returned if the issue or remote issue link is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Get transitions + * @description Returns either all transitions or a transition that can be performed by the user on an issue, based on the issue's status. + * + * Note, if a request is made for a transition that does not exist or cannot be performed on the issue, given its status, the response will return any empty transitions list. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required: A list or transition is returned only when the user has:** + * + * * *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. + * + * However, if the user does not have the *Transition issues* [ project permission](https://confluence.atlassian.com/x/yodKLg) the response will not list any transitions. + */ + getTransitions: { + parameters: { + query?: { + /** @description Use [expand](#expansion) to include additional information about transitions in the response. This parameter accepts `transitions.fields`, which returns information about the fields in the transition screen for each transition. Fields hidden from the screen are not returned. Use this information to populate the `fields` and `update` fields in [Transition issue](#api-rest-api-3-issue-issueIdOrKey-transitions-post). */ + expand?: string; + /** @description The ID of the transition. */ + transitionId?: string; + /** @description Whether transitions with the condition *Hide From User Condition* are included in the response. */ + skipRemoteOnlyCondition?: boolean; + /** @description Whether details of transitions that fail a condition are included in the response */ + includeUnavailableTransitions?: boolean; + /** @description Whether the transitions are sorted by ops-bar sequence value first then category order (Todo, In Progress, Done) or only by ops-bar sequence value. */ + sortByOpsBarAndStatus?: boolean; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Transitions"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Transition issue + * @description Performs an issue transition and, if the transition has a screen, updates the fields from the transition screen. + * + * sortByCategory To update the fields on the transition screen, specify the fields in the `fields` or `update` parameters in the request body. Get details about the fields using [ Get transitions](#api-rest-api-3-issue-issueIdOrKey-transitions-get) with the `transitions.fields` expand. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Transition issues* [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. + */ + doTransition: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "fields": { + * "assignee": { + * "name": "bob" + * }, + * "resolution": { + * "name": "Fixed" + * } + * }, + * "historyMetadata": { + * "activityDescription": "Complete order processing", + * "actor": { + * "avatarUrl": "http://mysystem/avatar/tony.jpg", + * "displayName": "Tony", + * "id": "tony", + * "type": "mysystem-user", + * "url": "http://mysystem/users/tony" + * }, + * "cause": { + * "id": "myevent", + * "type": "mysystem-event" + * }, + * "description": "From the order testing process", + * "extraData": { + * "Iteration": "10a", + * "Step": "4" + * }, + * "generator": { + * "id": "mysystem-1", + * "type": "mysystem-application" + * }, + * "type": "myplugin:type" + * }, + * "transition": { + * "id": "5" + * }, + * "update": { + * "comment": [ + * { + * "add": { + * "body": { + * "content": [ + * { + * "content": [ + * { + * "text": "Bug has been fixed", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * } + * } + * } + * ] + * } + * } + */ + "application/json": components["schemas"]["IssueUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * no transition is specified. + * * the user does not have permission to transition the issue. + * * a field that isn't included on the transition screen is defined in `fields` or `update`. + * * a field is specified in both `fields` and `update`. + * * the request is invalid for any other reason. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + /** @description Returned if the issue could not be updated due to a conflicting update. (refer to the [changelog](https://developer.atlassian.com/changelog/#CHANGE-1364) *for more details.* */ + 409: { + content: never; + }; + /** @description Returned if a configuration problem prevents the creation of the issue. (refer to the [changelog](https://developer.atlassian.com/changelog/#CHANGE-1364) *for more details.* */ + 422: { + content: never; + }; + }; + }; + /** + * Get votes + * @description Returns details about the votes on an issue. + * + * This operation requires the **Allow users to vote on issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is ini + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * + * Note that users with the necessary permissions for this operation but without the *View voters and watchers* project permissions are not returned details in the `voters` field. + */ + getVotes: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Votes"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * voting is disabled. + * * the user does not have permission to view the issue. + * * the issue is not found. + */ + 404: { + content: never; + }; + }; + }; + /** + * Add vote + * @description Adds the user's vote to an issue. This is the equivalent of the user clicking *Vote* on an issue in Jira. + * + * This operation requires the **Allow users to vote on issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + addVote: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * voting is disabled. + * * the issue is not found. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete vote + * @description Deletes a user's vote from an issue. This is the equivalent of the user clicking *Unvote* on an issue in Jira. + * + * This operation requires the **Allow users to vote on issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + */ + removeVote: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * voting is disabled. + * * the user has not voted on the issue. + * * the issue is not found. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue watchers + * @description Returns the watchers for an issue. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is ini + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * To see details of users on the watchlist other than themselves, *View voters and watchers* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in. + */ + getIssueWatchers: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful */ + 200: { + content: { + "application/json": components["schemas"]["Watchers"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Add watcher + * @description Adds a user as a watcher of an issue by passing the account ID of the user. For example, `"5b10ac8d82e05b22cc7d4ef5"`. If no user is specified the calling user is added. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * To add users other than themselves to the watchlist, *Manage watcher list* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in. + */ + addWatcher: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + /** @description The account ID of the user. Note that username cannot be used due to privacy changes. */ + requestBody: { + content: { + "application/json": string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the permission to manage the watcher list. */ + 403: { + content: never; + }; + /** @description Returned if the issue or the user is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete watcher + * @description Deletes a user as a watcher of an issue. + * + * This operation requires the **Allow users to watch issues** option to be *ON*. This option is set in General configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for details. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * To remove users other than themselves from the watchlist, *Manage watcher list* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in. + */ + removeWatcher: { + parameters: { + query?: { + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Required. */ + accountId?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if `accountId` is not supplied. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the permission to manage the watcher list. */ + 403: { + content: never; + }; + /** @description Returned if the issue or the user is not found or the user does not have permission to view the issue. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue worklogs + * @description Returns worklogs for an issue, starting from the oldest worklog or from the worklog started on or after a date and time. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Workloads are only returned where the user has: + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getIssueWorklog: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The worklog start date and time, as a UNIX timestamp in milliseconds, after which worklogs are returned. */ + startedAfter?: number; + /** @description The worklog start date and time, as a UNIX timestamp in milliseconds, before which worklogs are returned. */ + startedBefore?: number; + /** @description Use [expand](#expansion) to include additional information about worklogs in the response. This parameter accepts`properties`, which returns worklog properties. */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful */ + 200: { + content: { + "application/json": components["schemas"]["PageOfWorklogs"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue is not found or the user does not have permission to view the issue. + * * `startAt` or `maxResults` has non-numeric values. + * * time tracking is disabled. + */ + 404: { + content: never; + }; + }; + }; + /** + * Add worklog + * @description Adds a worklog to an issue. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse projects* and *Work on issues* [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. + */ + addWorklog: { + parameters: { + query?: { + /** @description Whether users watching the issue are notified by email. */ + notifyUsers?: boolean; + /** + * @description Defines how to update the issue's time estimate, the options are: + * + * * `new` Sets the estimate to a specific value, defined in `newEstimate`. + * * `leave` Leaves the estimate unchanged. + * * `manual` Reduces the estimate by amount specified in `reduceBy`. + * * `auto` Reduces the estimate by the value of `timeSpent` in the worklog. + */ + adjustEstimate?: "new" | "leave" | "manual" | "auto"; + /** @description The value to set as the issue's remaining time estimate, as days (\#d), hours (\#h), or minutes (\#m or \#). For example, *2d*. Required when `adjustEstimate` is `new`. */ + newEstimate?: string; + /** @description The amount to reduce the issue's remaining estimate by, as days (\#d), hours (\#h), or minutes (\#m). For example, *2d*. Required when `adjustEstimate` is `manual`. */ + reduceBy?: string; + /** @description Use [expand](#expansion) to include additional information about work logs in the response. This parameter accepts `properties`, which returns worklog properties. */ + expand?: string; + /** @description Whether the worklog entry should be added to the issue even if the issue is not editable, because jira.issue.editable set to false or missing. For example, the issue is closed. Connect and Forge app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) can use this flag. */ + overrideEditableFlag?: boolean; + }; + path: { + /** @description The ID or key the issue. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "comment": { + * "content": [ + * { + * "content": [ + * { + * "text": "I did some work here.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "started": "2021-01-17T12:34:00.000+0000", + * "timeSpentSeconds": 12000, + * "visibility": { + * "identifier": "276f955c-63d7-42c8-9520-92d01dca0625", + * "type": "group" + * } + * } + */ + "application/json": components["schemas"]["Worklog"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Worklog"]; + }; + }; + /** + * @description Returned if: + * + * * `adjustEstimate` is set to `new` but `newEstimate` is not provided or is invalid. + * * `adjustEstimate` is set to `manual` but `reduceBy` is not provided or is invalid. + * * the user does not have permission to add the worklog. + * * the request JSON is malformed. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the issue is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get worklog + * @description Returns a worklog. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getWorklog: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about work logs in the response. This parameter accepts + * + * `properties`, which returns worklog properties. + */ + expand?: string; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Worklog"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue is not found or the user does not have permission to view it. + * * the worklog is not found or the user does not have permission to view it. + * * time tracking is disabled. + * + * . + */ + 404: { + content: never; + }; + }; + }; + /** + * Update worklog + * @description Updates a worklog. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * *Edit all worklogs*[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or *Edit own worklogs* to update worklogs created by the user. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + updateWorklog: { + parameters: { + query?: { + /** @description Whether users watching the issue are notified by email. */ + notifyUsers?: boolean; + /** + * @description Defines how to update the issue's time estimate, the options are: + * + * * `new` Sets the estimate to a specific value, defined in `newEstimate`. + * * `leave` Leaves the estimate unchanged. + * * `auto` Updates the estimate by the difference between the original and updated value of `timeSpent` or `timeSpentSeconds`. + */ + adjustEstimate?: "new" | "leave" | "manual" | "auto"; + /** @description The value to set as the issue's remaining time estimate, as days (\#d), hours (\#h), or minutes (\#m or \#). For example, *2d*. Required when `adjustEstimate` is `new`. */ + newEstimate?: string; + /** @description Use [expand](#expansion) to include additional information about worklogs in the response. This parameter accepts `properties`, which returns worklog properties. */ + expand?: string; + /** @description Whether the worklog should be added to the issue even if the issue is not editable. For example, because the issue is closed. Connect and Forge app users with *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) can use this flag. */ + overrideEditableFlag?: boolean; + }; + path: { + /** @description The ID or key the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "comment": { + * "content": [ + * { + * "content": [ + * { + * "text": "I did some work here.", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "started": "2021-01-17T12:34:00.000+0000", + * "timeSpentSeconds": 12000, + * "visibility": { + * "identifier": "276f955c-63d7-42c8-9520-92d01dca0625", + * "type": "group" + * } + * } + */ + "application/json": components["schemas"]["Worklog"]; + }; + }; + responses: { + /** @description Returned if the request is successful */ + 200: { + content: { + "application/json": components["schemas"]["Worklog"]; + }; + }; + /** + * @description Returned if: + * + * * `adjustEstimate` is set to `new` but `newEstimate` is not provided or is invalid. + * * the user does not have permission to update the worklog. + * * the request JSON is malformed. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue is not found or user does not have permission to view the issue. + * * the worklog is not found or the user does not have permission to view it. + * * time tracking is disabled. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete worklog + * @description Deletes a worklog from an issue. + * + * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * *Delete all worklogs*[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any worklog or *Delete own worklogs* to delete worklogs created by the user, + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + deleteWorklog: { + parameters: { + query?: { + /** @description Whether users watching the issue are notified by email. */ + notifyUsers?: boolean; + /** + * @description Defines how to update the issue's time estimate, the options are: + * + * * `new` Sets the estimate to a specific value, defined in `newEstimate`. + * * `leave` Leaves the estimate unchanged. + * * `manual` Increases the estimate by amount specified in `increaseBy`. + * * `auto` Reduces the estimate by the value of `timeSpent` in the worklog. + */ + adjustEstimate?: "new" | "leave" | "manual" | "auto"; + /** @description The value to set as the issue's remaining time estimate, as days (\#d), hours (\#h), or minutes (\#m or \#). For example, *2d*. Required when `adjustEstimate` is `new`. */ + newEstimate?: string; + /** @description The amount to increase the issue's remaining estimate by, as days (\#d), hours (\#h), or minutes (\#m or \#). For example, *2d*. Required when `adjustEstimate` is `manual`. */ + increaseBy?: string; + /** @description Whether the work log entry should be added to the issue even if the issue is not editable, because jira.issue.editable set to false or missing. For example, the issue is closed. Connect and Forge app users with admin permission can use this flag. */ + overrideEditableFlag?: boolean; + }; + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** + * @description Returned if: + * + * * `adjustEstimate` is set to `new` but `newEstimate` is not provided or is invalid. + * * `adjustEstimate` is set to `manual` but `reduceBy` is not provided or is invalid. + * * the user does not have permission to delete the worklog. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue is not found or user does not have permission to view the issue. + * * the worklog is not found or the user does not have permission to view it. + * * time tracking is disabled. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get worklog property keys + * @description Returns the keys of all properties for a worklog. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getWorklogPropertyKeys: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + worklogId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the worklog ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue or worklog is not found. + * * the user does not have permission to view the issue or worklog. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get worklog property + * @description Returns the value of a worklog property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + getWorklogProperty: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + worklogId: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the worklog ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue, worklog, or property is not found. + * * the user does not have permission to view the issue or worklog. + */ + 404: { + content: never; + }; + }; + }; + /** + * Set worklog property + * @description Sets the value of a worklog property. Use this operation to store custom data against the worklog. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * *Edit all worklogs*[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or *Edit own worklogs* to update worklogs created by the user. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + setWorklogProperty: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + worklogId: string; + /** @description The key of the issue property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the worklog property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the worklog property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the worklog ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to edit the worklog. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue or worklog is not found. + * * the user does not have permission to view the issue or worklog. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete worklog property + * @description Deletes a worklog property. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *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. + * * If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + deleteWorklogProperty: { + parameters: { + path: { + /** @description The ID or key of the issue. */ + issueIdOrKey: string; + /** @description The ID of the worklog. */ + worklogId: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the worklog property is removed. */ + 204: { + content: never; + }; + /** @description Returned if the worklog key or id is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to edit the worklog. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue, worklog, or property is not found. + * * the user does not have permission to view the issue or worklog. + */ + 404: { + content: never; + }; + }; + }; + /** + * Create issue link + * @description Creates a link between two issues. Use this operation to indicate a relationship between two issues and optionally add a comment to the from (outward) issue. To use this resource the site must have [Issue Linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * This resource returns nothing on the creation of an issue link. To obtain the ID of the issue link, use `https://your-domain.atlassian.net/rest/api/3/issue/[linked issue key]?fields=issuelinks`. + * + * If the link request duplicates a link, the response indicates that the issue link was created. If the request included a comment, the comment is added. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse project* [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the issues to be linked, + * * *Link issues* [project permission](https://confluence.atlassian.com/x/yodKLg) on the project containing the from (outward) issue, + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + * * If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to. + */ + linkIssues: { + /** @description The issue link request. */ + requestBody: { + content: { + /** + * @example { + * "comment": { + * "body": { + * "content": [ + * { + * "content": [ + * { + * "text": "Linked related issue!", + * "type": "text" + * } + * ], + * "type": "paragraph" + * } + * ], + * "type": "doc", + * "version": 1 + * }, + * "visibility": { + * "identifier": "276f955c-63d7-42c8-9520-92d01dca0625", + * "type": "group", + * "value": "jira-software-users" + * } + * }, + * "inwardIssue": { + * "key": "HSP-1" + * }, + * "outwardIssue": { + * "key": "MKY-1" + * }, + * "type": { + * "name": "Duplicate" + * } + * } + */ + "application/json": components["schemas"]["LinkIssueRequestJsonBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the comment is not created. The response contains an error message indicating why the comment wasn't created. The issue link is also not created. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the user cannot view one or both of the issues. For example, the user doesn't have *Browse project* project permission for a project containing one of the issues. + * * the user does not have *link issues* project permission. + * * either of the link issues are not found. + * * the issue link type is not found. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue link + * @description Returns an issue link. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Browse project* [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the linked issues. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the issues. + */ + getIssueLink: { + parameters: { + path: { + /** @description The ID of the issue link. */ + linkId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueLink"]; + }; + }; + /** @description Returned if the issue link ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the issue link is not found. + * * the user doesn't have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue link + * @description Deletes an issue link. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * Browse project [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the issues in the link. + * * *Link issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one of the projects containing issues in the link. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the issues. + */ + deleteIssueLink: { + parameters: { + path: { + /** @description The ID of the issue link. */ + linkId: string; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: never; + }; + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the issue link ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the issue link is not found. + * * the user doesn't have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue link types + * @description Returns a list of all issue link types. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site. + */ + getIssueLinkTypes: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueLinkTypes"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if issue linking is disabled. */ + 404: { + content: never; + }; + }; + }; + /** + * Create issue link type + * @description Creates an issue link type. Use this operation to create descriptions of the reasons why issues are linked. The issue link type consists of a name and descriptions for a link's inward and outward relationships. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createIssueLinkType: { + requestBody: { + content: { + /** + * @example { + * "inward": "Duplicated by", + * "name": "Duplicate", + * "outward": "Duplicates" + * } + */ + "application/json": components["schemas"]["IssueLinkType"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["IssueLinkType"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the issue link type name is in use. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue link type + * @description Returns an issue link type. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site. + */ + getIssueLinkType: { + parameters: { + path: { + /** @description The ID of the issue link type. */ + issueLinkTypeId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueLinkType"]; + }; + }; + /** @description Returned if the issue link type ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the issue link type is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Update issue link type + * @description Updates an issue link type. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateIssueLinkType: { + parameters: { + path: { + /** @description The ID of the issue link type. */ + issueLinkTypeId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "inward": "Duplicated by", + * "name": "Duplicate", + * "outward": "Duplicates" + * } + */ + "application/json": components["schemas"]["IssueLinkType"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueLinkType"]; + }; + }; + /** @description Returned if the issue link type ID or the request body are invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the issue link type is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue link type + * @description Deletes an issue link type. + * + * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteIssueLinkType: { + parameters: { + path: { + /** @description The ID of the issue link type. */ + issueLinkTypeId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the issue link type ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * issue linking is disabled. + * * the issue link type is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Export archived issue(s) + * @description Enables admins to retrieve details of all archived issues. Upon a successful request, the admin who submitted it will receive an email with a link to download a CSV file with the issue details. + * + * Note that this API only exports the values of system fields and archival-specific fields (`ArchivedBy` and `ArchivedDate`). Custom fields aren't supported. + * + * **[Permissions](#permissions) required:** Jira admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg) + * + * **License required:** Premium or Enterprise + * + * **Signed-in users only:** This API can't be accessed anonymously. + * + * **Rate limiting:** Only a single request can be active at any given time. + */ + exportArchivedIssues: { + /** @description You can filter the issues in your request by the `projects`, `archivedBy`, `archivedDate`, `issueTypes`, and `reporters` fields. All filters are optional. If you don't provide any filters, you'll get a list of up to one million archived issues. */ + requestBody: { + content: { + /** + * @example { + * "archivedBy": [ + * "uuid-rep-001", + * "uuid-rep-002" + * ], + * "archivedDate": { + * "dateAfter": "2023-01-01", + * "dateBefore": "2023-01-12" + * }, + * "archivedDateRange": { + * "dateAfter": "2023-01-01", + * "dateBefore": "2023-01-12" + * }, + * "issueTypes": [ + * "10001", + * "10002" + * ], + * "projects": [ + * "FOO", + * "BAR" + * ], + * "reporters": [ + * "uuid-rep-001", + * "uuid-rep-002" + * ] + * } + */ + "application/json": components["schemas"]["ArchivedIssuesFilterRequest"]; + }; + }; + responses: { + /** @description Returns the details of your export task. You can use the [get task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-get) API to view the progress of your request. */ + 202: { + content: { + "application/json": components["schemas"]["ExportArchivedIssuesTaskProgressResponse"]; + }; + }; + /** + * @description Returned when: + * + * * The request is invalid, or the filters provided are incorrect + * * You requested too many issues for export. The limit is one million issues per request + */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were unarchived because the provided authentication credentials are either missing or invalid. */ + 401: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no issues were unarchived because the user lacks the required Jira admin or site admin permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if a request to export archived issues is already running. */ + 412: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue security schemes + * @description Returns all [issue security schemes](https://confluence.atlassian.com/x/J4lKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueSecuritySchemes: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SecuritySchemes"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to administer issue security schemes. */ + 403: { + content: never; + }; + }; + }; + /** + * Create issue security scheme + * @description Creates a security scheme with security scheme levels and levels' members. You can create up to 100 security scheme levels and security scheme levels' members per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createIssueSecurityScheme: { + requestBody: { + content: { + /** + * @example { + * "description": "Newly created issue security scheme", + * "levels": [ + * { + * "description": "Newly created level", + * "isDefault": true, + * "members": [ + * { + * "parameter": "administrators", + * "type": "group" + * } + * ], + * "name": "New level" + * } + * ], + * "name": "New security scheme" + * } + */ + "application/json": components["schemas"]["CreateIssueSecuritySchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["SecuritySchemeId"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get issue security levels + * @description Returns a [paginated](#pagination) list of issue security levels. + * + * Only issue security levels in the context of classic projects are returned. + * + * Filtering using IDs is inclusive: if you specify both security scheme IDs and level IDs, the result will include both specified issue security levels and all issue security levels from the specified schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getSecurityLevels: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of issue security scheme level IDs. To include multiple issue security levels, separate IDs with an ampersand: `id=10000&id=10001`. */ + id?: string[]; + /** @description The list of issue security scheme IDs. To include multiple issue security schemes, separate IDs with an ampersand: `schemeId=10000&schemeId=10001`. */ + schemeId?: string[]; + /** @description When set to true, returns multiple default levels for each security scheme containing a default. If you provide scheme and level IDs not associated with the default, returns an empty page. The default value is false. */ + onlyDefault?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanSecurityLevel"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Set default issue security levels + * @description Sets default issue security levels for schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setDefaultLevels: { + requestBody: { + content: { + /** + * @example { + * "defaultValues": [ + * { + * "defaultLevelId": "20000", + * "issueSecuritySchemeId": "10000" + * }, + * { + * "defaultLevelId": "30000", + * "issueSecuritySchemeId": "12000" + * } + * ] + * } + */ + "application/json": components["schemas"]["SetDefaultLevelsRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue resolution isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get issue security level members + * @description Returns a [paginated](#pagination) list of issue security level members. + * + * Only issue security level members in the context of classic projects are returned. + * + * Filtering using parameters is inclusive: if you specify both security scheme IDs and level IDs, the result will include all issue security level members from the specified schemes and levels. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getSecurityLevelMembers: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of issue security level member IDs. To include multiple issue security level members separate IDs with an ampersand: `id=10000&id=10001`. */ + id?: string[]; + /** @description The list of issue security scheme IDs. To include multiple issue security schemes separate IDs with an ampersand: `schemeId=10000&schemeId=10001`. */ + schemeId?: string[]; + /** @description The list of issue security level IDs. To include multiple issue security levels separate IDs with an ampersand: `levelId=10000&levelId=10001`. */ + levelId?: string[]; + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `all` Returns all expandable information + * * `field` Returns information about the custom field granted the permission + * * `group` Returns information about the group that is granted the permission + * * `projectRole` Returns information about the project role granted the permission + * * `user` Returns information about the user who is granted the permission + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanSecurityLevelMember"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get projects using issue security schemes + * @description Returns a [paginated](#pagination) mapping of projects that are using security schemes. You can provide either one or multiple security scheme IDs or project IDs to filter by. If you don't provide any, this will return a list of all mappings. Only issue security schemes in the context of classic projects are supported. **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + searchProjectsUsingSecuritySchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of security scheme IDs to be filtered out. */ + issueSecuritySchemeId?: string[]; + /** @description The list of project IDs to be filtered out. */ + projectId?: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueSecuritySchemeToProjectMapping"]; + }; + }; + /** @description Returned if the search criteria is invalid.If you specify the project ID parameter */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Associate security scheme to project + * @description Associates an issue security scheme with a project and remaps security levels of issues to the new levels, if provided. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + associateSchemesToProjects: { + requestBody: { + content: { + /** + * @example { + * "oldToNewSecurityLevelMappings": [ + * { + * "newLevelId": "30001", + * "oldLevelId": "30000" + * } + * ], + * "projectId": "10000", + * "schemeId": "20000" + * } + */ + "application/json": components["schemas"]["AssociateSecuritySchemeWithProjectDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the security scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if a task to remove the issue security level is already running. */ + 409: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Search issue security schemes + * @description Returns a [paginated](#pagination) list of issue security schemes. + * If you specify the project ID parameter, the result will contain issue security schemes and related project IDs you filter by. Use \{@link IssueSecuritySchemeResource\#searchProjectsUsingSecuritySchemes(String, String, Set, Set)\} to obtain all projects related to scheme. + * + * Only issue security schemes in the context of classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + searchSecuritySchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of issue security scheme IDs. To include multiple issue security scheme IDs, separate IDs with an ampersand: `id=10000&id=10001`. */ + id?: string[]; + /** @description The list of project IDs. To include multiple project IDs, separate IDs with an ampersand: `projectId=10000&projectId=10001`. */ + projectId?: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanSecuritySchemeWithProjects"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue security scheme + * @description Returns an issue security scheme along with its security levels. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project that uses the requested issue security scheme. + */ + getIssueSecurityScheme: { + parameters: { + path: { + /** @description The ID of the issue security scheme. Use the [Get issue security schemes](#api-rest-api-3-issuesecurityschemes-get) operation to get a list of issue security scheme IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SecurityScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the administrator permission and the scheme is not used in any project where the user has administrative permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Update issue security scheme + * @description Updates the issue security scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateIssueSecurityScheme: { + parameters: { + path: { + /** @description The ID of the issue security scheme. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "My issue security scheme description", + * "name": "My issue security scheme name" + * } + */ + "application/json": components["schemas"]["UpdateIssueSecuritySchemeRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue security scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get issue security level members + * @description Returns issue security level members. + * + * Only issue security level members in context of classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueSecurityLevelMembers: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of issue security level IDs. To include multiple issue security levels separate IDs with ampersand: `issueSecurityLevelId=10000&issueSecurityLevelId=10001`. */ + issueSecurityLevelId?: string[]; + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + path: { + /** @description The ID of the issue security scheme. Use the [Get issue security schemes](#api-rest-api-3-issuesecurityschemes-get) operation to get a list of issue security scheme IDs. */ + issueSecuritySchemeId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueSecurityLevelMember"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if no issue security level members are found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue security scheme + * @description Deletes an issue security scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteSecurityScheme: { + parameters: { + path: { + /** @description The ID of the issue security scheme. */ + schemeId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue security scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Add issue security levels + * @description Adds levels and levels' members to the issue security scheme. You can add up to 100 levels per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addSecurityLevel: { + parameters: { + path: { + /** @description The ID of the issue security scheme. */ + schemeId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "levels": [ + * { + * "description": "First Level Description", + * "isDefault": true, + * "members": [ + * { + * "type": "reporter" + * }, + * { + * "parameter": "jira-administrators", + * "type": "group" + * } + * ], + * "name": "First Level" + * } + * ] + * } + */ + "application/json": components["schemas"]["AddSecuritySchemeLevelsRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the security scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Update issue security level + * @description Updates the issue security level. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateSecurityLevel: { + parameters: { + path: { + /** @description The ID of the issue security scheme level belongs to. */ + schemeId: string; + /** @description The ID of the issue security level to update. */ + levelId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "New level description", + * "name": "New level name" + * } + */ + "application/json": components["schemas"]["UpdateIssueSecurityLevelDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue security level isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Remove issue security level + * @description Deletes an issue security level. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeLevel: { + parameters: { + query?: { + /** @description The ID of the issue security level that will replace the currently selected level. */ + replaceWith?: string; + }; + path: { + /** @description The ID of the issue security scheme. */ + schemeId: string; + /** @description The ID of the issue security level to remove. */ + levelId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue security level isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if a task to remove the issue security level is already running. */ + 409: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Add issue security level members + * @description Adds members to the issue security level. You can add up to 100 members per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addSecurityLevelMembers: { + parameters: { + path: { + /** @description The ID of the issue security scheme. */ + schemeId: string; + /** @description The ID of the issue security level. */ + levelId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "members": [ + * { + * "type": "reporter" + * }, + * { + * "parameter": "jira-administrators", + * "type": "group" + * } + * ] + * } + */ + "application/json": components["schemas"]["SecuritySchemeMembersRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the security scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Remove member from issue security level + * @description Removes an issue security level member from an issue security scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeMemberFromSecurityLevel: { + parameters: { + path: { + /** @description The ID of the issue security scheme. */ + schemeId: string; + /** @description The ID of the issue security level. */ + levelId: string; + /** @description The ID of the issue security level member to be removed. */ + memberId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the security scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all issue types for user + * @description Returns all issue types. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Issue types are only returned as follows: + * + * * if the user has the *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), all issue types are returned. + * * if the user has the *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, the issue types associated with the projects the user has permission to browse are returned. + */ + getIssueAllTypes: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeDetails"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create issue type + * @description Creates an issue type and adds it to the default issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createIssueType: { + requestBody: { + content: { + /** + * @example { + * "description": "description", + * "name": "name", + * "type": "standard" + * } + */ + "application/json": components["schemas"]["IssueTypeCreateBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["IssueTypeDetails"]; + }; + }; + /** + * @description Returned if the request is invalid because: + * + * * no content is sent. + * * the issue type name exceeds 60 characters. + * * a subtask issue type is requested on an instance where subtasks are disabled. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue type name is in use. */ + 409: { + content: never; + }; + }; + }; + /** + * Get issue types for project + * @description Returns issue types for a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) in the relevant project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypesForProject: { + parameters: { + query: { + /** @description The ID of the project. */ + projectId: number; + /** + * @description The level of the issue type to filter by. Use: + * + * * `-1` for Subtask. + * * `0` for Base. + * * `1` for Epic. + */ + level?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeDetails"][]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the project is not found. + * * the user does not have the necessary permission. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue type + * @description Returns an issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) in a project the issue type is associated with or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueType: { + parameters: { + path: { + /** @description The ID of the issue type. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeDetails"]; + }; + }; + /** @description Returned if the issue type ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue type is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Update issue type + * @description Updates the issue type. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateIssueType: { + parameters: { + path: { + /** @description The ID of the issue type. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "avatarId": 1, + * "description": "description", + * "name": "name" + * } + */ + "application/json": components["schemas"]["IssueTypeUpdateBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeDetails"]; + }; + }; + /** + * @description Returned if the request is invalid because: + * + * * no content is sent. + * * the issue type name exceeds 60 characters. + * * the avatar is not associated with this issue type. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue type is not found. */ + 404: { + content: never; + }; + /** @description Returned if the issue type name is in use. */ + 409: { + content: never; + }; + }; + }; + /** + * Delete issue type + * @description Deletes the issue type. If the issue type is in use, all uses are updated with the alternative issue type (`alternativeIssueTypeId`). A list of alternative issue types are obtained from the [Get alternative issue types](#api-rest-api-3-issuetype-id-alternatives-get) resource. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteIssueType: { + parameters: { + query?: { + /** @description The ID of the replacement issue type. */ + alternativeIssueTypeId?: string; + }; + path: { + /** @description The ID of the issue type. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if any issues cannot be updated with the alternative issue type. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue type is in use and an alternative issue type is not specified. + * * the issue type or alternative issue type is not found. + */ + 404: { + content: never; + }; + /** + * @description Returned if the issue type is in use and: + * + * * also specified as the alternative issue type. + * * is a *standard* issue type and the alternative issue type is a *subtask*. + */ + 409: { + content: never; + }; + }; + }; + /** + * Get alternative issue types + * @description Returns a list of issue types that can be used to replace the issue type. The alternative issue types are those assigned to the same workflow scheme, field configuration scheme, and screen scheme. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAlternativeIssueTypes: { + parameters: { + path: { + /** @description The ID of the issue type. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeDetails"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue type is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Load issue type avatar + * @description Loads an avatar for the issue type. + * + * Specify the avatar's local file location in the body of the request. Also, include the following headers: + * + * * `X-Atlassian-Token: no-check` To prevent XSRF protection blocking the request, for more information see [Special Headers](#special-request-headers). + * * `Content-Type: image/image type` Valid image types are JPEG, GIF, or PNG. + * + * For example: + * `curl --request POST \ --user email@example.com: \ --header 'X-Atlassian-Token: no-check' \ --header 'Content-Type: image/< image_type>' \ --data-binary "<@/path/to/file/with/your/avatar>" \ --url 'https://your-domain.atlassian.net/rest/api/3/issuetype/{issueTypeId}'This` + * + * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of the image. The length of the square's sides is set to the smaller of the height or width of the image. + * + * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size. + * + * After creating the avatar, use [ Update issue type](#api-rest-api-3-issuetype-id-put) to set it as the issue type's displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createIssueTypeAvatar: { + parameters: { + query: { + /** @description The X coordinate of the top-left corner of the crop region. */ + x?: number; + /** @description The Y coordinate of the top-left corner of the crop region. */ + y?: number; + /** @description The length of each side of the crop region. */ + size: number; + }; + path: { + /** @description The ID of the issue type. */ + id: string; + }; + }; + requestBody: { + content: { + "*/*": unknown; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Avatar"]; + }; + }; + /** + * @description Returned if: + * + * * an image isn't included in the request. + * * the image type is unsupported. + * * the crop parameters extend the crop area beyond the edge of the image. + * * `cropSize` is missing. + * * the issue type ID is invalid. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue type property keys + * @description Returns all the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties) keys of the issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the property keys of any issue type. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) to get the property keys of any issue types associated with the projects the user has permission to browse. + */ + getIssueTypePropertyKeys: { + parameters: { + path: { + /** @description The ID of the issue type. */ + issueTypeId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the issue type ID is invalid. */ + 400: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue type is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue type property + * @description Returns the key and value of the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the details of any issue type. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) to get the details of any issue types associated with the projects the user has permission to browse. + */ + getIssueTypeProperty: { + parameters: { + path: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The key of the property. Use [Get issue type property keys](#api-rest-api-3-issuetype-issueTypeId-properties-get) to get a list of all issue type property keys. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the issue type ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue type or property is not found or the user does not have the required permissions. */ + 404: { + content: never; + }; + }; + }; + /** + * Set issue type property + * @description Creates or updates the value of the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). Use this resource to store and update data against an issue type. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setIssueTypeProperty: { + parameters: { + path: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The key of the issue type property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "number": 5, + * "string": "string-value" + * } + */ + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the issue type property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * the issue type ID is invalid. + * * a property value is not provided. + * * the property value JSON content is invalid. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to modify the issue type. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the issue type is not found. + * * the user does not have the permission view the issue type. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue type property + * @description Deletes the [issue type property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteIssueTypeProperty: { + parameters: { + path: { + /** @description The ID of the issue type. */ + issueTypeId: string; + /** @description The key of the property. Use [Get issue type property keys](#api-rest-api-3-issuetype-issueTypeId-properties-get) to get a list of all issue type property keys. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the issue type property is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the issue type ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue type or property is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all issue type schemes + * @description Returns a [paginated](#pagination) list of issue type schemes. + * + * Only issue type schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllIssueTypeSchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of issue type schemes IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. */ + id?: number[]; + /** + * @description [Order](#ordering) the results by a field: + * + * * `name` Sorts by issue type scheme name. + * * `id` Sorts by issue type scheme ID. + */ + orderBy?: "name" | "-name" | "+name" | "id" | "-id" | "+id"; + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `projects` For each issue type schemes, returns information about the projects the issue type scheme is assigned to. + * * `issueTypes` For each issue type schemes, returns information about the issueTypes the issue type scheme have. + */ + expand?: string; + /** @description String used to perform a case-insensitive partial match with issue type scheme name. */ + queryString?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeScheme"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Create issue type scheme + * @description Creates an issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createIssueTypeScheme: { + requestBody: { + content: { + /** + * @example { + * "defaultIssueTypeId": "10002", + * "description": "A collection of issue types suited to use in a kanban style project.", + * "issueTypeIds": [ + * "10001", + * "10002", + * "10003" + * ], + * "name": "Kanban Issue Type Scheme" + * } + */ + "application/json": components["schemas"]["IssueTypeSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["IssueTypeSchemeID"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the scheme name is used by another scheme. */ + 409: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue type scheme items + * @description Returns a [paginated](#pagination) list of issue type scheme items. + * + * Only issue type scheme items used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypeSchemesMapping: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of issue type scheme IDs. To include multiple IDs, provide an ampersand-separated list. For example, `issueTypeSchemeId=10000&issueTypeSchemeId=10001`. */ + issueTypeSchemeId?: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeSchemeMapping"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Get issue type schemes for projects + * @description Returns a [paginated](#pagination) list of issue type schemes and, for each issue type scheme, a list of the projects that use it. + * + * Only issue type schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypeSchemeForProjects: { + parameters: { + query: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of project IDs. To include multiple project IDs, provide an ampersand-separated list. For example, `projectId=10000&projectId=10001`. */ + projectId: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeSchemeProjects"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Assign issue type scheme to project + * @description Assigns an issue type scheme to a project. + * + * If any issues in the project are assigned issue types not present in the new scheme, the operation will fail. To complete the assignment those issues must be updated to use issue types in the new scheme. + * + * Issue type schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + assignIssueTypeSchemeToProject: { + requestBody: { + content: { + /** + * @example { + * "issueTypeSchemeId": "10000", + * "projectId": "10000" + * } + */ + "application/json": components["schemas"]["IssueTypeSchemeProjectAssociation"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type scheme or the project is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update issue type scheme + * @description Updates an issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateIssueTypeScheme: { + parameters: { + path: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "defaultIssueTypeId": "10002", + * "description": "A collection of issue types suited to use in a kanban style project.", + * "name": "Kanban Issue Type Scheme" + * } + */ + "application/json": components["schemas"]["IssueTypeSchemeUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete issue type scheme + * @description Deletes an issue type scheme. + * + * Only issue type schemes used in classic projects can be deleted. + * + * Any projects assigned to the scheme are reassigned to the default issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteIssueTypeScheme: { + parameters: { + path: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: number; + }; + }; + responses: { + /** @description Returned if the issue type scheme is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is to delete the default issue type scheme. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Add issue types to issue type scheme + * @description Adds issue types to an issue type scheme. + * + * The added issue types are appended to the issue types list. + * + * If any of the issue types exist in the issue type scheme, the operation fails and no issue types are added. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addIssueTypesToIssueTypeScheme: { + parameters: { + path: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypeIds": [ + * "10000", + * "10002", + * "10003" + * ] + * } + */ + "application/json": components["schemas"]["IssueTypeIds"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type or the issue type scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Change order of issue types + * @description Changes the order of issue types in an issue type scheme. + * + * The request body parameters must meet the following requirements: + * + * * all of the issue types must belong to the issue type scheme. + * * either `after` or `position` must be provided. + * * the issue type in `after` must not be in the issue type list. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + reorderIssueTypesInIssueTypeScheme: { + parameters: { + path: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "after": "10008", + * "issueTypeIds": [ + * "10001", + * "10004", + * "10002" + * ] + * } + */ + "application/json": components["schemas"]["OrderOfIssueTypes"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Remove issue type from issue type scheme + * @description Removes an issue type from an issue type scheme. + * + * This operation cannot remove: + * + * * any issue type used by issues. + * * any issue types from the default issue type scheme. + * * the last standard issue type from an issue type scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeIssueTypeFromIssueTypeScheme: { + parameters: { + path: { + /** @description The ID of the issue type scheme. */ + issueTypeSchemeId: number; + /** @description The ID of the issue type. */ + issueTypeId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type scheme is missing or the issue type is not found in the issue type scheme. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue type screen schemes + * @description Returns a [paginated](#pagination) list of issue type screen schemes. + * + * Only issue type screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypeScreenSchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of issue type screen scheme IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. */ + id?: number[]; + /** @description String used to perform a case-insensitive partial match with issue type screen scheme name. */ + queryString?: string; + /** + * @description [Order](#ordering) the results by a field: + * + * * `name` Sorts by issue type screen scheme name. + * * `id` Sorts by issue type screen scheme ID. + */ + orderBy?: "name" | "-name" | "+name" | "id" | "-id" | "+id"; + /** @description Use [expand](#expansion) to include additional information in the response. This parameter accepts `projects` that, for each issue type screen schemes, returns information about the projects the issue type screen scheme is assigned to. */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeScreenScheme"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Create issue type screen scheme + * @description Creates an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createIssueTypeScreenScheme: { + /** @description An issue type screen scheme bean. */ + requestBody: { + content: { + /** + * @example { + * "issueTypeMappings": [ + * { + * "issueTypeId": "default", + * "screenSchemeId": "10001" + * }, + * { + * "issueTypeId": "10001", + * "screenSchemeId": "10002" + * }, + * { + * "issueTypeId": "10002", + * "screenSchemeId": "10002" + * } + * ], + * "name": "Scrum issue type screen scheme" + * } + */ + "application/json": components["schemas"]["IssueTypeScreenSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["IssueTypeScreenSchemeId"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type or screen scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type is a sub-task, but sub-tasks are disabled in Jira settings. */ + 409: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue type screen scheme items + * @description Returns a [paginated](#pagination) list of issue type screen scheme items. + * + * Only issue type screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypeScreenSchemeMappings: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of issue type screen scheme IDs. To include multiple issue type screen schemes, separate IDs with ampersand: `issueTypeScreenSchemeId=10000&issueTypeScreenSchemeId=10001`. */ + issueTypeScreenSchemeId?: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeScreenSchemeItem"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Get issue type screen schemes for projects + * @description Returns a [paginated](#pagination) list of issue type screen schemes and, for each issue type screen scheme, a list of the projects that use it. + * + * Only issue type screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueTypeScreenSchemeProjectAssociations: { + parameters: { + query: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of project IDs. To include multiple projects, separate IDs with ampersand: `projectId=10000&projectId=10001`. */ + projectId: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanIssueTypeScreenSchemesProjects"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Assign issue type screen scheme to project + * @description Assigns an issue type screen scheme to a project. + * + * Issue type screen schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + assignIssueTypeScreenSchemeToProject: { + requestBody: { + content: { + /** + * @example { + * "issueTypeScreenSchemeId": "10001", + * "projectId": "10002" + * } + */ + "application/json": components["schemas"]["IssueTypeScreenSchemeProjectAssociation"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** + * @description Returned if: + * + * * project is not found. + * * issue type screen scheme is not found. + * * the project is not a classic project. + */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type screen scheme or the project are missing. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update issue type screen scheme + * @description Updates an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateIssueTypeScreenScheme: { + parameters: { + path: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: string; + }; + }; + /** @description The issue type screen scheme update details. */ + requestBody: { + content: { + /** + * @example { + * "description": "Screens for scrum issue types.", + * "name": "Scrum scheme" + * } + */ + "application/json": components["schemas"]["IssueTypeScreenSchemeUpdateDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type screen scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete issue type screen scheme + * @description Deletes an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteIssueTypeScreenScheme: { + parameters: { + path: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: string; + }; + }; + responses: { + /** @description Returned if the issue type screen scheme is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the issue type screen scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Append mappings to issue type screen scheme + * @description Appends issue type to screen scheme mappings to an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + appendMappingsForIssueTypeScreenScheme: { + parameters: { + path: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypeMappings": [ + * { + * "issueTypeId": "10000", + * "screenSchemeId": "10001" + * }, + * { + * "issueTypeId": "10001", + * "screenSchemeId": "10002" + * }, + * { + * "issueTypeId": "10002", + * "screenSchemeId": "10002" + * } + * ] + * } + */ + "application/json": components["schemas"]["IssueTypeScreenSchemeMappingDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the issue type screen scheme, issue type, or screen scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type is a sub-task, but sub-tasks are disabled in Jira settings. */ + 409: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update issue type screen scheme default screen scheme + * @description Updates the default screen scheme of an issue type screen scheme. The default screen scheme is used for all unmapped issue types. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateDefaultScreenScheme: { + parameters: { + path: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "screenSchemeId": "10010" + * } + */ + "application/json": components["schemas"]["UpdateDefaultScreenScheme"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type screen scheme or the screen scheme is not found, or the screen scheme isn't used in classic projects. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Remove mappings from issue type screen scheme + * @description Removes issue type to screen scheme mappings from an issue type screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeMappingsFromIssueTypeScreenScheme: { + parameters: { + path: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypeIds": [ + * "10000", + * "10001", + * "10004" + * ] + * } + */ + "application/json": components["schemas"]["IssueTypeIds"]; + }; + }; + responses: { + /** @description Returned if the screen scheme mappings are removed from the issue type screen scheme. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the issue type screen scheme or one or more issue type mappings are not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue type screen scheme projects + * @description Returns a [paginated](#pagination) list of projects associated with an issue type screen scheme. + * + * Only company-managed projects associated with an issue type screen scheme are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getProjectsForIssueTypeScreenScheme: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + query?: string; + }; + path: { + /** @description The ID of the issue type screen scheme. */ + issueTypeScreenSchemeId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanProjectDetails"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Get field reference data (GET) + * @description Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom query builder. + * + * To filter visible field details by project or collapse non-unique fields by field type then [Get field reference data (POST)](#api-rest-api-3-jql-autocompletedata-post) can be used. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAutoComplete: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["JQLReferenceData"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get field reference data (POST) + * @description Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom query builder. + * + * This operation can filter the custom fields returned by project. Invalid project IDs in `projectIds` are ignored. System fields are always returned. + * + * It can also return the collapsed field for custom fields. Collapsed fields enable searches to be performed across all fields with the same name and of the same field type. For example, the collapsed field `Component - Component[Dropdown]` enables dropdown fields `Component - cf[10061]` and `Component - cf[10062]` to be searched simultaneously. + * + * **[Permissions](#permissions) required:** None. + */ + getAutoCompletePost: { + requestBody: { + content: { + /** + * @example { + * "includeCollapsedFields": true, + * "projectIds": [ + * 10000, + * 10001, + * 10002 + * ] + * } + */ + "application/json": components["schemas"]["SearchAutoCompleteFilter"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["JQLReferenceData"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get field auto complete suggestions + * @description Returns the JQL search auto complete suggestions for a field. + * + * Suggestions can be obtained by providing: + * + * * `fieldName` to get a list of all values for the field. + * * `fieldName` and `fieldValue` to get a list of values containing the text in `fieldValue`. + * * `fieldName` and `predicateName` to get a list of all predicate values for the field. + * * `fieldName`, `predicateName`, and `predicateValue` to get a list of predicate values containing the text in `predicateValue`. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getFieldAutoCompleteForQueryString: { + parameters: { + query?: { + /** @description The name of the field. */ + fieldName?: string; + /** @description The partial field item name entered by the user. */ + fieldValue?: string; + /** @description The name of the [ CHANGED operator predicate](https://confluence.atlassian.com/x/hQORLQ#Advancedsearching-operatorsreference-CHANGEDCHANGED) for which the suggestions are generated. The valid predicate operators are *by*, *from*, and *to*. */ + predicateName?: string; + /** @description The partial predicate item name entered by the user. */ + predicateValue?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["AutoCompleteSuggestions"]; + }; + }; + /** @description Returned if an invalid combination of parameters is passed. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get precomputations (apps) + * @description Returns the list of a function's precomputations along with information about when they were created, updated, and last used. Each precomputation has a `value` \- the JQL fragment to replace the custom function clause with. + * + * **[Permissions](#permissions) required:** This API is only accessible to apps and apps can only inspect their own functions. + */ + getPrecomputations: { + parameters: { + query?: { + /** + * @description The function key in format: + * + * * Forge: `ari:cloud:ecosystem::extension/[App ID]/[Environment ID]/static/[Function key from manifest]` + * * Connect: `[App key]__[Module key]` + */ + functionKey?: string[]; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** + * @description [Order](#ordering) the results by a field: + * + * * `functionKey` Sorts by the functionKey. + * * `used` Sorts by the used timestamp. + * * `created` Sorts by the created timestamp. + * * `updated` Sorts by the updated timestamp. + */ + orderBy?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanJqlFunctionPrecomputationBean"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request is not authenticated as the app that provided the function. */ + 403: { + content: never; + }; + /** @description Returned if the function is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update precomputations (apps) + * @description Update the precomputation value of a function created by a Forge/Connect app. + * + * **[Permissions](#permissions) required:** An API for apps to update their own precomputations. + */ + updatePrecomputations: { + requestBody: { + content: { + /** + * @example { + * "values": [ + * { + * "id": "f2ef228b-367f-4c6b-bd9d-0d0e96b5bd7b", + * "value": "issue in (TEST-1, TEST-2, TEST-3)" + * }, + * { + * "error": "Error message to be displayed to the user", + * "id": "2a854f11-d0e1-4260-aea8-64a562a7062a" + * } + * ] + * } + */ + "application/json": components["schemas"]["JqlFunctionPrecomputationUpdateRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the request is not authenticated as the app that provided the function. */ + 403: { + content: never; + }; + /** @description Returned if the function is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Check issues against JQL + * @description Checks whether one or more issues would be returned by one or more JQL queries. + * + * **[Permissions](#permissions) required:** None, however, issues are only matched against JQL queries where the user has: + * + * * *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. + */ + matchIssues: { + requestBody: { + content: { + /** + * @example { + * "issueIds": [ + * 10001, + * 1000, + * 10042 + * ], + * "jqls": [ + * "project = FOO", + * "issuetype = Bug", + * "summary ~ \"some text\" AND project in (FOO, BAR)" + * ] + * } + */ + "application/json": components["schemas"]["IssuesAndJQLQueries"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueMatches"]; + }; + }; + /** @description Returned if `jqls` exceeds the maximum number of JQL queries or `issueIds` exceeds the maximum number of issue IDs. */ + 400: { + content: never; + }; + }; + }; + /** + * Parse JQL query + * @description Parses and validates JQL queries. + * + * Validation is performed in context of the current user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + parseJqlQueries: { + parameters: { + query?: { + /** + * @description How to validate the JQL query and treat the validation results. Validation options include: + * + * * `strict` Returns all errors. If validation fails, the query structure is not returned. + * * `warn` Returns all errors. If validation fails but the JQL query is correctly formed, the query structure is returned. + * * `none` No validation is performed. If JQL query is correctly formed, the query structure is returned. + */ + validation?: "strict" | "warn" | "none"; + }; + }; + requestBody: { + content: { + /** + * @example { + * "queries": [ + * "summary ~ test AND (labels in (urgent, blocker) OR lastCommentedBy = currentUser()) AND status CHANGED AFTER startOfMonth(-1M) ORDER BY updated DESC", + * "issue.property[\"spaces here\"].value in (\"Service requests\", Incidents)", + * "invalid query", + * "summary = test", + * "summary in test", + * "project = INVALID", + * "universe = 42" + * ] + * } + */ + "application/json": components["schemas"]["JqlQueriesToParse"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ParsedJqlQueries"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Convert user identifiers to account IDs in JQL queries + * @description Converts one or more JQL queries with user identifiers (username or user key) to equivalent JQL queries with account IDs. + * + * You may wish to use this operation if your system stores JQL queries and you want to make them GDPR-compliant. For more information about GDPR-related changes, see the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/). + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + migrateQueries: { + requestBody: { + content: { + /** + * @example { + * "queryStrings": [ + * "assignee = mia", + * "issuetype = Bug AND assignee in (mia) AND reporter in (alana) order by lastViewed DESC" + * ] + * } + */ + "application/json": components["schemas"]["JQLPersonalDataMigrationRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. Note that the JQL queries are returned in the same order that they were passed. */ + 200: { + content: { + "application/json": components["schemas"]["ConvertedJQLQueries"]; + }; + }; + /** @description Returned if at least one of the queries cannot be converted. For example, the JQL has invalid operators or invalid keywords, or the users in the query cannot be found. */ + 400: { + content: { + "application/json": string; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": string; + }; + }; + }; + }; + /** + * Sanitize JQL queries + * @description Sanitizes one or more JQL queries by converting readable details into IDs where a user doesn't have permission to view the entity. + * + * For example, if the query contains the clause *project = 'Secret project'*, and a user does not have browse permission for the project "Secret project", the sanitized query replaces the clause with *project = 12345"* (where 12345 is the ID of the project). If a user has the required permission, the clause is not sanitized. If the account ID is null, sanitizing is performed for an anonymous user. + * + * Note that sanitization doesn't make the queries GDPR-compliant, because it doesn't remove user identifiers (username or user key). If you need to make queries GDPR-compliant, use [Convert user identifiers to account IDs in JQL queries](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-jql/#api-rest-api-3-jql-sanitize-post). + * + * Before sanitization each JQL query is parsed. The queries are returned in the same order that they were passed. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + sanitiseJqlQueries: { + requestBody: { + content: { + /** + * @example { + * "queries": [ + * { + * "query": "project = 'Sample project'" + * }, + * { + * "accountId": "5b10ac8d82e05b22cc7d4ef5", + * "query": "project = 'Sample project'" + * }, + * { + * "accountId": "cda2aa1395ac195d951b3387", + * "query": "project = 'Sample project'" + * }, + * { + * "accountId": "5b10ac8d82e05b22cc7d4ef5", + * "query": "invalid query" + * } + * ] + * } + */ + "application/json": components["schemas"]["JqlQueriesToSanitize"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SanitizedJqlQueries"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all labels + * @description Returns a [paginated](#pagination) list of labels. + */ + getAllLabels: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanString"]; + }; + }; + }; + }; + /** + * Get approximate license count + * @description Returns the approximate number of user accounts across all Jira licenses. Note that this information is cached with a 7-day lifecycle and could be stale at the time of call. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getApproximateLicenseCount: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["LicenseMetric"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollections"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollections"]; + }; + }; + }; + }; + /** + * Get approximate application license count + * @description Returns the total approximate number of user accounts for a single Jira license. Note that this information is cached with a 7-day lifecycle and could be stale at the time of call. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getApproximateApplicationLicenseCount: { + parameters: { + path: { + /** @description The ID of the application, represents a specific version of Jira. */ + applicationKey: "jira-core" | "jira-product-discovery" | "jira-software" | "jira-servicedesk"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["LicenseMetric"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get my permissions + * @description Returns a list of permissions indicating which permissions the user has. Details of the user's permissions can be obtained in a global, project, issue or comment context. + * + * The user is reported as having a project permission: + * + * * in the global context, if the user has the project permission in any project. + * * for a project, where the project permission is determined using issue data, if the user meets the permission's criteria for any issue in the project. Otherwise, if the user has the project permission in the project. + * * for an issue, where a project permission is determined using issue data, if the user has the permission in the issue. Otherwise, if the user has the project permission in the project containing the issue. + * * for a comment, where the user has both the permission to browse the comment and the project permission for the comment's parent issue. Only the BROWSE\_PROJECTS permission is supported. If a `commentId` is provided whose `permissions` does not equal BROWSE\_PROJECTS, a 400 error will be returned. + * + * This means that users may be shown as having an issue permission (such as EDIT\_ISSUES) in the global context or a project context but may not have the permission for any or all issues. For example, if Reporters have the EDIT\_ISSUES permission a user would be shown as having this permission in the global context or the context of a project, because any user can be a reporter. However, if they are not the user who reported the issue queried they would not have EDIT\_ISSUES permission for that issue. + * + * Global permissions are unaffected by context. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:permission:jira` + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getMyPermissions: { + parameters: { + query?: { + /** @description The key of project. Ignored if `projectId` is provided. */ + projectKey?: string; + /** @description The ID of project. */ + projectId?: string; + /** @description The key of the issue. Ignored if `issueId` is provided. */ + issueKey?: string; + /** @description The ID of the issue. */ + issueId?: string; + /** @description A list of permission keys. (Required) This parameter accepts a comma-separated list. To get the list of available permissions, use [Get all permissions](#api-rest-api-3-permissions-get). */ + permissions?: string; + projectUuid?: string; + projectConfigurationUuid?: string; + /** @description The ID of the comment. */ + commentId?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Permissions"]; + }; + }; + /** @description Returned if `permissions` is empty, contains an invalid key, or does not equal BROWSE\_PROJECTS when commentId is provided. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the project or issue is not found or the user does not have permission to view the project or issue. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get preference + * @description Returns the value of a preference of the current user. + * + * Note that these keys are deprecated: + * + * * *jira.user.locale* The locale of the user. By default this is not set and the user takes the locale of the instance. + * * *jira.user.timezone* The time zone of the user. By default this is not set and the user takes the timezone of the instance. + * + * These system preferences keys will be deprecated by 15/07/2024. You can still retrieve these keys, but it will not have any impact on Notification behaviour. + * + * * *user.notifiy.own.changes* Whether the user gets notified of their own changes. + * * *user.notifications.watcher* Whether the user gets notified when they are watcher. + * * *user.notifications.assignee* Whether the user gets notified when they are assignee. + * * *user.notifications.reporter* Whether the user gets notified when they are reporter. + * * *user.notifications.mentions* Whether the user gets notified when they are mentions. + * + * Use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API to manage timezone and locale instead. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getPreference: { + parameters: { + query: { + /** @description The key of the preference. */ + key: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": string; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the key is not provided or not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set preference + * @description Creates a preference for the user or updates a preference's value by sending a plain text string. For example, `false`. An arbitrary preference can be created with the value containing up to 255 characters. In addition, the following keys define system preferences that can be set or created: + * + * * *user.notifications.mimetype* The mime type used in notifications sent to the user. Defaults to `html`. + * * *user.default.share.private* Whether new [ filters](https://confluence.atlassian.com/x/eQiiLQ) are set to private. Defaults to `true`. + * * *user.keyboard.shortcuts.disabled* Whether keyboard shortcuts are disabled. Defaults to `false`. + * * *user.autowatch.disabled* Whether the user automatically watches issues they create or add a comment to. By default, not set: the user takes the instance autowatch setting. + * + * Note that these keys are deprecated: + * + * * *jira.user.locale* The locale of the user. By default, not set. The user takes the instance locale. + * * *jira.user.timezone* The time zone of the user. By default, not set. The user takes the instance timezone. + * + * These system preferences keys will be deprecated by 15/07/2024. You can still use these keys to create arbitrary preferences, but it will not have any impact on Notification behaviour. + * + * * *user.notifiy.own.changes* Whether the user gets notified of their own changes. + * * *user.notifications.watcher* Whether the user gets notified when they are watcher. + * * *user.notifications.assignee* Whether the user gets notified when they are assignee. + * * *user.notifications.reporter* Whether the user gets notified when they are reporter. + * * *user.notifications.mentions* Whether the user gets notified when they are mentions. + * + * Use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API to manage timezone and locale instead. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + setPreference: { + parameters: { + query: { + /** @description The key of the preference. The maximum length is 255 characters. */ + key: string; + }; + }; + /** @description The value of the preference as a plain text string. The maximum length is 255 characters. */ + requestBody: { + content: { + "application/json": string; + "text/plain": string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the key or value is not provided or invalid. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete preference + * @description Deletes a preference of the user, which restores the default value of system defined settings. + * + * Note that these keys are deprecated: + * + * * *jira.user.locale* The locale of the user. By default, not set. The user takes the instance locale. + * * *jira.user.timezone* The time zone of the user. By default, not set. The user takes the instance timezone. + * + * Use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API to manage timezone and locale instead. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + removePreference: { + parameters: { + query: { + /** @description The key of the preference. */ + key: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the key is not provided or not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get locale + * @description Returns the locale for the user. + * + * If the user has no language preference set (which is the default setting) or this resource is accessed anonymous, the browser locale detected by Jira is returned. Jira detects the browser locale using the *Accept-Language* header in the request. However, if this doesn't match a locale available Jira, the site default locale is returned. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getLocale: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Locale"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Set locale + * @deprecated + * @description Deprecated, use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API instead. + * + * Sets the locale of the user. The locale must be one supported by the instance of Jira. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + setLocale: { + /** @description The locale defined in a LocaleBean. */ + requestBody: { + content: { + /** + * @example { + * "locale": "en_US" + * } + */ + "application/json": components["schemas"]["Locale"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Delete locale + * @deprecated + * @description Deprecated, use [ Update a user profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch) from the user management REST API instead. + * + * Deletes the locale of the user, which restores the default setting. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + deleteLocale: { + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get current user + * @description Returns details for the current user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getCurrentUser: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about user in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `groups` Returns all groups, including nested groups, the user belongs to. + * * `applicationRoles` Returns the application roles the user is assigned to. + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get notification schemes paginated + * @description Returns a [paginated](#pagination) list of [notification schemes](https://confluence.atlassian.com/x/8YdKLg) ordered by the display name. + * + * *Note that you should allow for events without recipients to appear in responses.* + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, the user must have permission to administer at least one project associated with a notification scheme for it to be returned. + */ + getNotificationSchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of notification schemes IDs to be filtered by */ + id?: string[]; + /** @description The list of projects IDs to be filtered by */ + projectId?: string[]; + /** @description When set to true, returns only the default notification scheme. If you provide project IDs not associated with the default, returns an empty page. The default value is false. */ + onlyDefault?: boolean; + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `all` Returns all expandable information + * * `field` Returns information about any custom fields assigned to receive an event + * * `group` Returns information about any groups assigned to receive an event + * * `notificationSchemeEvents` Returns a list of event associations. This list is returned for all expandable information + * * `projectRole` Returns information about any project roles assigned to receive an event + * * `user` Returns information about any users assigned to receive an event + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. Only returns notification schemes that the user has permission to access. An empty list is returned if the user lacks permission to access all notification schemes. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanNotificationScheme"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create notification scheme + * @description Creates a notification scheme with notifications. You can create up to 1000 notifications per request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createNotificationScheme: { + requestBody: { + content: { + /** + * @example { + * "description": "My new scheme description", + * "name": "My new notification scheme", + * "notificationSchemeEvents": [ + * { + * "event": { + * "id": "1" + * }, + * "notifications": [ + * { + * "notificationType": "Group", + * "parameter": "jira-administrators" + * } + * ] + * } + * ] + * } + */ + "application/json": components["schemas"]["CreateNotificationSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["NotificationSchemeId"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get projects using notification schemes paginated + * @description Returns a [paginated](#pagination) mapping of project that have notification scheme assigned. You can provide either one or multiple notification scheme IDs or project IDs to filter by. If you don't provide any, this will return a list of all mappings. Note that only company-managed (classic) projects are supported. This is because team-managed projects don't have a concept of a default notification scheme. The mappings are ordered by projectId. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getNotificationSchemeToProjectMappings: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of notifications scheme IDs to be filtered out */ + notificationSchemeId?: string[]; + /** @description The list of project IDs to be filtered out */ + projectId?: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanNotificationSchemeAndProjectMappingJsonBean"]; + }; + }; + /** @description Returned if search criteria are invalid, strings vs numbers for projectId, notificationSchemeId, startAt and maxResult */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get notification scheme + * @description Returns a [notification scheme](https://confluence.atlassian.com/x/8YdKLg), including the list of events and the recipients who will receive notifications for those events. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, the user must have permission to administer at least one project associated with the notification scheme. + */ + getNotificationScheme: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `all` Returns all expandable information + * * `field` Returns information about any custom fields assigned to receive an event + * * `group` Returns information about any groups assigned to receive an event + * * `notificationSchemeEvents` Returns a list of event associations. This list is returned for all expandable information + * * `projectRole` Returns information about any project roles assigned to receive an event + * * `user` Returns information about any users assigned to receive an event + */ + expand?: string; + }; + path: { + /** @description The ID of the notification scheme. Use [Get notification schemes paginated](#api-rest-api-3-notificationscheme-get) to get a list of notification scheme IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["NotificationScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the notification scheme is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Update notification scheme + * @description Updates a notification scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateNotificationScheme: { + parameters: { + path: { + /** @description The ID of the notification scheme. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "My updated notification scheme description", + * "name": "My updated notification scheme" + * } + */ + "application/json": components["schemas"]["UpdateNotificationSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the notification scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Add notifications to notification scheme + * @description Adds notifications to a notification scheme. You can add up to 1000 notifications per request. + * + * *Deprecated: The notification type `EmailAddress` is no longer supported in Cloud. Refer to the [changelog](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-1031) for more details.* + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addNotifications: { + parameters: { + path: { + /** @description The ID of the notification scheme. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "notificationSchemeEvents": [ + * { + * "event": { + * "id": "1" + * }, + * "notifications": [ + * { + * "notificationType": "Group", + * "parameter": "jira-administrators" + * } + * ] + * } + * ] + * } + */ + "application/json": components["schemas"]["AddNotificationsDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the notification scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Delete notification scheme + * @description Deletes a notification scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteNotificationScheme: { + parameters: { + path: { + /** @description The ID of the notification scheme. */ + notificationSchemeId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the notification scheme isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Remove notification from notification scheme + * @description Removes a notification from a notification scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeNotificationFromNotificationScheme: { + parameters: { + path: { + /** @description The ID of the notification scheme. */ + notificationSchemeId: string; + /** @description The ID of the notification. */ + notificationId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if either the notification scheme or notification isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all permissions + * @description Returns all permissions, including: + * + * * global permissions. + * * project permissions. + * * global permissions added by plugins. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllPermissions: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Permissions"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get bulk permissions + * @description Returns: + * + * * for a list of global permissions, the global permissions granted to a user. + * * for a list of project permissions and lists of projects and issues, for each project permission a list of the projects and issues a user can access or manipulate. + * + * If no account ID is provided, the operation returns details for the logged in user. + * + * Note that: + * + * * Invalid project and issue IDs are ignored. + * * A maximum of 1000 projects and 1000 issues can be checked. + * * Null values in `globalPermissions`, `projectPermissions`, `projectPermissions.projects`, and `projectPermissions.issues` are ignored. + * * Empty strings in `projectPermissions.permissions` are ignored. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:permission:jira` + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) to check the permissions for other users, otherwise none. However, Connect apps can make a call from the app server to the product to obtain permission details for any user, without admin permission. This Connect app ability doesn't apply to calls made using AP.request() in a browser. + */ + getBulkPermissions: { + /** @description Details of the permissions to check. */ + requestBody: { + content: { + /** + * @example { + * "accountId": "5b10a2844c20165700ede21g", + * "globalPermissions": [ + * "ADMINISTER" + * ], + * "projectPermissions": [ + * { + * "issues": [ + * 10010, + * 10011, + * 10012, + * 10013, + * 10014 + * ], + * "permissions": [ + * "EDIT_ISSUES" + * ], + * "projects": [ + * 10001 + * ] + * } + * ] + * } + */ + "application/json": components["schemas"]["BulkPermissionsRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["BulkPermissionGrants"]; + }; + }; + /** + * @description Returned if: + * + * * `projectPermissions` is provided without at least one project permission being provided. + * * an invalid global permission is provided in the global permissions list. + * * an invalid project permission is provided in the project permissions list. + * * more than 1000 valid project IDs or more than 1000 valid issue IDs are provided. + * * an invalid account ID is provided. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get permitted projects + * @description Returns all the projects where the user is granted a list of project permissions. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024. + * + * * **Classic**: `read:jira-work` + * * **Granular**: `read:permission:jira`, `read:project:jira` + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getPermittedProjects: { + requestBody: { + content: { + "application/json": components["schemas"]["PermissionsKeysBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermittedProjects"]; + }; + }; + /** @description Returned if a project permission is not found. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get all permission schemes + * @description Returns all permission schemes. + * + * ### About permission schemes and grants ### + * + * A permission scheme is a collection of permission grants. A permission grant consists of a `holder` and a `permission`. + * + * #### Holder object #### + * + * The `holder` object contains information about the user or group being granted the permission. For example, the *Administer projects* permission is granted to a group named *Teams in space administrators*. In this case, the type is `"type": "group"`, and the parameter is the group name, `"parameter": "Teams in space administrators"` and the value is group ID, `"value": "ca85fac0-d974-40ca-a615-7af99c48d24f"`. + * + * The `holder` object is defined by the following properties: + * + * * `type` Identifies the user or group (see the list of types below). + * * `parameter` As a group's name can change, use of `value` is recommended. The value of this property depends on the `type`. For example, if the `type` is a group, then you need to specify the group name. + * * `value` The value of this property depends on the `type`. If the `type` is a group, then you need to specify the group ID. For other `type` it has the same value as `parameter` + * + * The following `types` are available. The expected values for `parameter` and `value` are given in parentheses (some types may not have a `parameter` or `value`): + * + * * `anyone` Grant for anonymous users. + * * `applicationRole` Grant for users with access to the specified application (application name, application name). See [Update product access settings](https://confluence.atlassian.com/x/3YxjL) for more information. + * * `assignee` Grant for the user currently assigned to an issue. + * * `group` Grant for the specified group (`parameter` : group name, `value` : group ID). + * * `groupCustomField` Grant for a user in the group selected in the specified custom field (`parameter` : custom field ID, `value` : custom field ID). + * * `projectLead` Grant for a project lead. + * * `projectRole` Grant for the specified project role (`parameter` :project role ID, `value` : project role ID). + * * `reporter` Grant for the user who reported the issue. + * * `sd.customer.portal.only` Jira Service Desk only. Grants customers permission to access the customer portal but not Jira. See [Customizing Jira Service Desk permissions](https://confluence.atlassian.com/x/24dKLg) for more information. + * * `user` Grant for the specified user (`parameter` : user ID - historically this was the userkey but that is deprecated and the account ID should be used, `value` : user ID). + * * `userCustomField` Grant for a user selected in the specified custom field (`parameter` : custom field ID, `value` : custom field ID). + * + * #### Built-in permissions #### + * + * The [built-in Jira permissions](https://confluence.atlassian.com/x/yodKLg) are listed below. Apps can also define custom permissions. See the [project permission](https://developer.atlassian.com/cloud/jira/platform/modules/project-permission/) and [global permission](https://developer.atlassian.com/cloud/jira/platform/modules/global-permission/) module documentation for more information. + * + * **Project permissions** + * + * * `ADMINISTER_PROJECTS` + * * `BROWSE_PROJECTS` + * * `MANAGE_SPRINTS_PERMISSION` (Jira Software only) + * * `SERVICEDESK_AGENT` (Jira Service Desk only) + * * `VIEW_DEV_TOOLS` (Jira Software only) + * * `VIEW_READONLY_WORKFLOW` + * + * **Issue permissions** + * + * * `ASSIGNABLE_USER` + * * `ASSIGN_ISSUES` + * * `CLOSE_ISSUES` + * * `CREATE_ISSUES` + * * `DELETE_ISSUES` + * * `EDIT_ISSUES` + * * `LINK_ISSUES` + * * `MODIFY_REPORTER` + * * `MOVE_ISSUES` + * * `RESOLVE_ISSUES` + * * `SCHEDULE_ISSUES` + * * `SET_ISSUE_SECURITY` + * * `TRANSITION_ISSUES` + * + * **Voters and watchers permissions** + * + * * `MANAGE_WATCHERS` + * * `VIEW_VOTERS_AND_WATCHERS` + * + * **Comments permissions** + * + * * `ADD_COMMENTS` + * * `DELETE_ALL_COMMENTS` + * * `DELETE_OWN_COMMENTS` + * * `EDIT_ALL_COMMENTS` + * * `EDIT_OWN_COMMENTS` + * + * **Attachments permissions** + * + * * `CREATE_ATTACHMENTS` + * * `DELETE_ALL_ATTACHMENTS` + * * `DELETE_OWN_ATTACHMENTS` + * + * **Time tracking permissions** + * + * * `DELETE_ALL_WORKLOGS` + * * `DELETE_OWN_WORKLOGS` + * * `EDIT_ALL_WORKLOGS` + * * `EDIT_OWN_WORKLOGS` + * * `WORK_ON_ISSUES` + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getAllPermissionSchemes: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionSchemes"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create permission scheme + * @description Creates a new permission scheme. You can create a permission scheme with or without defining a set of permission grants. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createPermissionScheme: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are always included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + }; + /** @description The permission scheme to create. */ + requestBody: { + content: { + /** + * @example { + * "description": "description", + * "name": "Example permission scheme", + * "permissions": [ + * { + * "holder": { + * "parameter": "jira-core-users", + * "type": "group", + * "value": "ca85fac0-d974-40ca-a615-7af99c48d24f" + * }, + * "permission": "ADMINISTER_PROJECTS" + * } + * ] + * } + */ + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + responses: { + /** @description Returned if the permission scheme is created. */ + 201: { + content: { + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or the feature is not available in the Jira plan. */ + 403: { + content: never; + }; + }; + }; + /** + * Get permission scheme + * @description Returns a permission scheme. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getPermissionScheme: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + path: { + /** @description The ID of the permission scheme to return. */ + schemeId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the permission scheme is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Update permission scheme + * @description Updates a permission scheme. Below are some important things to note when using this resource: + * + * * If a permissions list is present in the request, then it is set in the permission scheme, overwriting *all existing* grants. + * * If you want to update only the name and description, then do not send a permissions list in the request. + * * Sending an empty list will remove all permission grants from the permission scheme. + * + * If you want to add or delete a permission grant instead of updating the whole list, see [Create permission grant](#api-rest-api-3-permissionscheme-schemeId-permission-post) or [Delete permission scheme entity](#api-rest-api-3-permissionscheme-schemeId-permission-permissionId-delete). + * + * See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more details. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updatePermissionScheme: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are always included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + path: { + /** @description The ID of the permission scheme to update. */ + schemeId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "description", + * "name": "Example permission scheme", + * "permissions": [ + * { + * "holder": { + * "parameter": "jira-core-users", + * "type": "group", + * "value": "ca85fac0-d974-40ca-a615-7af99c48d24f" + * }, + * "permission": "ADMINISTER_PROJECTS" + * } + * ] + * } + */ + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + responses: { + /** @description Returned if the scheme is updated. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the user does not have the necessary permission to update permission schemes. + * * the Jira instance is Jira Core Free or Jira Software Free. Permission schemes cannot be updated on free plans. + */ + 403: { + content: never; + }; + /** @description Returned if the permission scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete permission scheme + * @description Deletes a permission scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deletePermissionScheme: { + parameters: { + path: { + /** @description The ID of the permission scheme being deleted. */ + schemeId: number; + }; + }; + responses: { + /** @description Returned if the permission scheme is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the permission scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get permission scheme grants + * @description Returns all permission grants for a permission scheme. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getPermissionSchemeGrants: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are always included when you specify any value. Expand options include: + * + * * `permissions` Returns all permission grants for each permission scheme. + * * `user` Returns information about the user who is granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `projectRole` Returns information about the project role granted the permission. + * * `field` Returns information about the custom field granted the permission. + * * `all` Returns all expandable information. + */ + expand?: string; + }; + path: { + /** @description The ID of the permission scheme. */ + schemeId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionGrants"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the permission schemes is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Create permission grant + * @description Creates a permission grant in a permission scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createPermissionGrant: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are always included when you specify any value. Expand options include: + * + * * `permissions` Returns all permission grants for each permission scheme. + * * `user` Returns information about the user who is granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `projectRole` Returns information about the project role granted the permission. + * * `field` Returns information about the custom field granted the permission. + * * `all` Returns all expandable information. + */ + expand?: string; + }; + path: { + /** @description The ID of the permission scheme in which to create a new permission grant. */ + schemeId: number; + }; + }; + /** @description The permission grant to create. */ + requestBody: { + content: { + /** + * @example { + * "holder": { + * "parameter": "jira-core-users", + * "type": "group", + * "value": "ca85fac0-d974-40ca-a615-7af99c48d24f" + * }, + * "permission": "ADMINISTER_PROJECTS" + * } + */ + "application/json": components["schemas"]["PermissionGrant"]; + }; + }; + responses: { + /** @description Returned if the scheme permission is created. */ + 201: { + content: { + "application/json": components["schemas"]["PermissionGrant"]; + }; + }; + /** @description Returned if the value for expand is invalid or the same permission grant is present. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get permission scheme grant + * @description Returns a permission grant. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getPermissionSchemeGrant: { + parameters: { + query?: { + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are always included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + path: { + /** @description The ID of the permission scheme. */ + schemeId: number; + /** @description The ID of the permission grant. */ + permissionId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionGrant"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the permission scheme or permission grant is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete permission scheme grant + * @description Deletes a permission grant from a permission scheme. See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more details. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deletePermissionSchemeEntity: { + parameters: { + path: { + /** @description The ID of the permission scheme to delete the permission grant from. */ + schemeId: number; + /** @description The ID of the permission grant to delete. */ + permissionId: number; + }; + }; + responses: { + /** @description Returned if the permission grant is deleted. */ + 204: { + content: never; + }; + /** @description Returned if permission grant with the provided ID is not found. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get priorities + * @deprecated + * @description Returns the list of all issue priorities. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getPriorities: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Priority"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Create priority + * @description Creates an issue priority. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createPriority: { + requestBody: { + content: { + /** + * @example { + * "description": "My priority description", + * "iconUrl": "images/icons/priorities/major.png", + * "name": "My new priority", + * "statusColor": "#ABCDEF" + * } + */ + "application/json": components["schemas"]["CreatePriorityDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["PriorityId"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Set default priority + * @description Sets default issue priority. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setDefaultPriority: { + requestBody: { + content: { + /** + * @example { + * "id": "3" + * } + */ + "application/json": components["schemas"]["SetDefaultPriorityRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue priority isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Move priorities + * @description Changes the order of issue priorities. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + movePriorities: { + requestBody: { + content: { + /** + * @example { + * "after": "10003", + * "ids": [ + * "10004", + * "10005" + * ] + * } + */ + "application/json": components["schemas"]["ReorderIssuePriorities"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue priority isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Search priorities + * @description Returns a [paginated](#pagination) list of priorities. The list can contain all priorities or a subset determined by any combination of these criteria: + * + * * a list of priority IDs. Any invalid priority IDs are ignored. + * * a list of project IDs. Only priorities that are available in these projects will be returned. Any invalid project IDs are ignored. + * * whether the field configuration is a default. This returns priorities from company-managed (classic) projects only, as there is no concept of default priorities in team-managed projects. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + searchPriorities: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of priority IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=2&id=3`. */ + id?: string[]; + /** @description The list of projects IDs. To include multiple IDs, provide an ampersand-separated list. For example, `projectId=10010&projectId=10111`. */ + projectId?: string[]; + /** @description The name of priority to search for. */ + priorityName?: string; + /** @description Whether only the default priority is returned. */ + onlyDefault?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanPriority"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get priority + * @description Returns an issue priority. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getPriority: { + parameters: { + path: { + /** @description The ID of the issue priority. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Priority"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the issue priority isn't found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update priority + * @description Updates an issue priority. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updatePriority: { + parameters: { + path: { + /** @description The ID of the issue priority. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "My updated priority description", + * "iconUrl": "images/icons/priorities/minor.png", + * "name": "My updated priority", + * "statusColor": "#123456" + * } + */ + "application/json": components["schemas"]["UpdatePriorityDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue priority isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Delete priority + * @deprecated + * @description *Deprecated: please refer to the* [changelog](https://developer.atlassian.com/changelog/#CHANGE-1066) *for more details.* + * + * Deletes an issue priority. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deletePriority: { + parameters: { + query: { + /** @description The ID of the issue priority that will replace the currently selected resolution. */ + replaceWith: string; + }; + path: { + /** @description The ID of the issue priority. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue priority isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if a task to delete the issue priority is already running. */ + 409: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all projects + * @deprecated + * @description Returns all projects visible to the user. Deprecated, use [ Get projects paginated](#api-rest-api-3-project-search-get) that supports search and pagination. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Projects are returned only where the user has *Browse Projects* or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getAllProjects: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expanded options include: + * + * * `description` Returns the project description. + * * `issueTypes` Returns all issue types associated with the project. + * * `lead` Returns information about the project lead. + * * `projectKeys` Returns all project keys associated with the project. + */ + expand?: string; + /** @description Returns the user's most recently accessed projects. You may specify the number of results to return up to a maximum of 20. If access is anonymous, then the recently accessed projects are based on the current HTTP session. */ + recent?: number; + /** @description A list of project properties to return for the project. This parameter accepts a comma-separated list. */ + properties?: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Project"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create project + * @description Creates a project based on a project type template, as shown in the following table: + * + * | Project Type Key | Project Template Key | + * |--|--| + * | `business` | `com.atlassian.jira-core-project-templates:jira-core-simplified-content-management`, `com.atlassian.jira-core-project-templates:jira-core-simplified-document-approval`, `com.atlassian.jira-core-project-templates:jira-core-simplified-lead-tracking`, `com.atlassian.jira-core-project-templates:jira-core-simplified-process-control`, `com.atlassian.jira-core-project-templates:jira-core-simplified-procurement`, `com.atlassian.jira-core-project-templates:jira-core-simplified-project-management`, `com.atlassian.jira-core-project-templates:jira-core-simplified-recruitment`, `com.atlassian.jira-core-project-templates:jira-core-simplified-task-tracking` | + * | `service_desk` | `com.atlassian.servicedesk:simplified-it-service-management`, `com.atlassian.servicedesk:simplified-general-service-desk-it`, `com.atlassian.servicedesk:simplified-general-service-desk-business`, `com.atlassian.servicedesk:simplified-external-service-desk`, `com.atlassian.servicedesk:simplified-hr-service-desk`, `com.atlassian.servicedesk:simplified-facilities-service-desk`, `com.atlassian.servicedesk:simplified-legal-service-desk`, `com.atlassian.servicedesk:simplified-analytics-service-desk`, `com.atlassian.servicedesk:simplified-marketing-service-desk`, `com.atlassian.servicedesk:simplified-design-service-desk`, `com.atlassian.servicedesk:simplified-sales-service-desk`, `com.atlassian.servicedesk:simplified-blank-project-business`, `com.atlassian.servicedesk:simplified-blank-project-it`, `com.atlassian.servicedesk:simplified-finance-service-desk`, `com.atlassian.servicedesk:next-gen-it-service-desk`, `com.atlassian.servicedesk:next-gen-hr-service-desk`, `com.atlassian.servicedesk:next-gen-legal-service-desk`, `com.atlassian.servicedesk:next-gen-marketing-service-desk`, `com.atlassian.servicedesk:next-gen-facilities-service-desk`, `com.atlassian.servicedesk:next-gen-general-it-service-desk`, `com.atlassian.servicedesk:next-gen-general-business-service-desk`, `com.atlassian.servicedesk:next-gen-analytics-service-desk`, `com.atlassian.servicedesk:next-gen-finance-service-desk`, `com.atlassian.servicedesk:next-gen-design-service-desk`, `com.atlassian.servicedesk:next-gen-sales-service-desk` | + * | `software` | `com.pyxis.greenhopper.jira:gh-simplified-agility-kanban`, `com.pyxis.greenhopper.jira:gh-simplified-agility-scrum`, `com.pyxis.greenhopper.jira:gh-simplified-basic`, `com.pyxis.greenhopper.jira:gh-simplified-kanban-classic`, `com.pyxis.greenhopper.jira:gh-simplified-scrum-classic` | + * The project types are available according to the installed Jira features as follows: + * + * * Jira Core, the default, enables `business` projects. + * * Jira Service Management enables `service_desk` projects. + * * Jira Software enables `software` projects. + * + * To determine which features are installed, go to **Jira settings** > **Apps** > **Manage apps** and review the System Apps list. To add Jira Software or Jira Service Management into a JIRA instance, use **Jira settings** > **Apps** > **Finding new apps**. For more information, see [ Managing add-ons](https://confluence.atlassian.com/x/S31NLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createProject: { + /** @description The JSON representation of the project being created. */ + requestBody: { + content: { + /** + * @example { + * "assigneeType": "PROJECT_LEAD", + * "avatarId": 10200, + * "categoryId": 10120, + * "description": "Cloud migration initiative", + * "issueSecurityScheme": 10001, + * "key": "EX", + * "leadAccountId": "5b10a0effa615349cb016cd8", + * "name": "Example", + * "notificationScheme": 10021, + * "permissionScheme": 10011, + * "projectTemplateKey": "com.atlassian.jira-core-project-templates:jira-core-simplified-process-control", + * "projectTypeKey": "business", + * "url": "http://atlassian.com" + * } + */ + "application/json": components["schemas"]["CreateProjectDetails"]; + }; + }; + responses: { + /** @description Returned if the project is created. */ + 201: { + content: { + "application/json": components["schemas"]["ProjectIdentifiers"]; + }; + }; + /** @description Returned if the request is not valid and the project could not be created. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to create projects. */ + 403: { + content: never; + }; + }; + }; + /** + * Get recent projects + * @description Returns a list of up to 20 projects recently viewed by the user that are still visible to the user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Projects are returned only where the user has one of: + * + * * *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getRecent: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expanded options include: + * + * * `description` Returns the project description. + * * `projectKeys` Returns all project keys associated with a project. + * * `lead` Returns information about the project lead. + * * `issueTypes` Returns all issue types associated with the project. + * * `url` Returns the URL associated with the project. + * * `permissions` Returns the permissions associated with the project. + * * `insight` EXPERIMENTAL. Returns the insight details of total issue count and last issue update time for the project. + * * `*` Returns the project with all available expand options. + */ + expand?: string; + /** @description EXPERIMENTAL. A list of project properties to return for the project. This parameter accepts a comma-separated list. Invalid property names are ignored. */ + properties?: components["schemas"]["StringList"][]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Project"][]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get projects paginated + * @description Returns a [paginated](#pagination) list of projects visible to the user. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Projects are returned only where the user has one of: + * + * * *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + searchProjects: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** + * @description [Order](#ordering) the results by a field. + * + * * `category` Sorts by project category. A complete list of category IDs is found using [Get all project categories](#api-rest-api-3-projectCategory-get). + * * `issueCount` Sorts by the total number of issues in each project. + * * `key` Sorts by project key. + * * `lastIssueUpdatedTime` Sorts by the last issue update time. + * * `name` Sorts by project name. + * * `owner` Sorts by project lead. + * * `archivedDate` EXPERIMENTAL. Sorts by project archived date. + * * `deletedDate` EXPERIMENTAL. Sorts by project deleted date. + */ + orderBy?: + | "category" + | "-category" + | "+category" + | "key" + | "-key" + | "+key" + | "name" + | "-name" + | "+name" + | "owner" + | "-owner" + | "+owner" + | "issueCount" + | "-issueCount" + | "+issueCount" + | "lastIssueUpdatedDate" + | "-lastIssueUpdatedDate" + | "+lastIssueUpdatedDate" + | "archivedDate" + | "+archivedDate" + | "-archivedDate" + | "deletedDate" + | "+deletedDate" + | "-deletedDate"; + /** @description The project IDs to filter the results by. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. Up to 50 project IDs can be provided. */ + id?: number[]; + /** @description The project keys to filter the results by. To include multiple keys, provide an ampersand-separated list. For example, `keys=PA&keys=PB`. Up to 50 project keys can be provided. */ + keys?: string[]; + /** @description Filter the results using a literal string. Projects with a matching `key` or `name` are returned (case insensitive). */ + query?: string; + /** @description Orders results by the [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes). This parameter accepts a comma-separated list. Valid values are `business`, `service_desk`, and `software`. */ + typeKey?: string; + /** @description The ID of the project's category. A complete list of category IDs is found using the [Get all project categories](#api-rest-api-3-projectCategory-get) operation. */ + categoryId?: number; + /** + * @description Filter results by projects for which the user can: + * + * * `view` the project, meaning that they have one of the following permissions: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * `browse` the project, meaning that they have the *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * `edit` the project, meaning that they have one of the following permissions: + * + * * *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * `create` the project, meaning that they have the *Create issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the issue is created. + */ + action?: "view" | "browse" | "edit" | "create"; + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expanded options include: + * + * * `description` Returns the project description. + * * `projectKeys` Returns all project keys associated with a project. + * * `lead` Returns information about the project lead. + * * `issueTypes` Returns all issue types associated with the project. + * * `url` Returns the URL associated with the project. + * * `insight` EXPERIMENTAL. Returns the insight details of total issue count and last issue update time for the project. + */ + expand?: string; + /** + * @description EXPERIMENTAL. Filter results by project status: + * + * * `live` Search live projects. + * * `archived` Search archived projects. + * * `deleted` Search deleted projects, those in the recycle bin. + */ + status?: ("live" | "archived" | "deleted")[]; + /** @description EXPERIMENTAL. A list of project properties to return for the project. This parameter accepts a comma-separated list. */ + properties?: components["schemas"]["StringList"][]; + /** @description EXPERIMENTAL. A query string used to search properties. The query string cannot be specified using a JSON object. For example, to search for the value of `nested` from `{"something":{"nested":1,"other":2}}` use `[thepropertykey].something.nested=1`. Note that the propertyQuery key is enclosed in square brackets to enable searching where the propertyQuery key includes dot (.) or equals (=) characters. Note that `thepropertykey` is only returned when included in `properties`. */ + propertyQuery?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanProject"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if no projects matching the search criteria are found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all project types + * @description Returns all [project types](https://confluence.atlassian.com/x/Var1Nw), whether or not the instance has a valid license for each type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAllProjectTypes: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectType"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get licensed project types + * @description Returns all [project types](https://confluence.atlassian.com/x/Var1Nw) with a valid license. + */ + getAllAccessibleProjectTypes: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectType"][]; + }; + }; + }; + }; + /** + * Get project type by key + * @description Returns a [project type](https://confluence.atlassian.com/x/Var1Nw). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getProjectTypeByKey: { + parameters: { + path: { + /** @description The key of the project type. */ + projectTypeKey: "software" | "service_desk" | "business" | "product_discovery"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectType"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the project type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get accessible project type by key + * @description Returns a [project type](https://confluence.atlassian.com/x/Var1Nw) if it is accessible to the user. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getAccessibleProjectTypeByKey: { + parameters: { + path: { + /** @description The key of the project type. */ + projectTypeKey: "software" | "service_desk" | "business" | "product_discovery"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectType"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project type is not accessible to the user. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project + * @description Returns the [project details](https://confluence.atlassian.com/x/ahLpNw) for a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProject: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Note that the project description, issue types, and project lead are included in all responses by default. Expand options include: + * + * * `description` The project description. + * * `issueTypes` The issue types associated with the project. + * * `lead` The project lead. + * * `projectKeys` All project keys associated with the project. + * * `issueTypeHierarchy` The project issue type hierarchy. + */ + expand?: string; + /** @description A list of project properties to return for the project. This parameter accepts a comma-separated list. */ + properties?: string[]; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if successful. */ + 200: { + content: { + "application/json": components["schemas"]["Project"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Update project + * @description Updates the [project details](https://confluence.atlassian.com/x/ahLpNw) of a project. + * + * All parameters are optional in the body of the request. Schemes will only be updated if they are included in the request, any omitted schemes will be left unchanged. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). is only needed when changing the schemes or project key. Otherwise you will only need *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) + */ + updateProject: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Note that the project description, issue types, and project lead are included in all responses by default. Expand options include: + * + * * `description` The project description. + * * `issueTypes` The issue types associated with the project. + * * `lead` The project lead. + * * `projectKeys` All project keys associated with the project. + */ + expand?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + /** @description The project details to be updated. */ + requestBody: { + content: { + /** + * @example { + * "assigneeType": "PROJECT_LEAD", + * "avatarId": 10200, + * "categoryId": 10120, + * "description": "Cloud migration initiative", + * "issueSecurityScheme": 10001, + * "key": "EX", + * "leadAccountId": "5b10a0effa615349cb016cd8", + * "name": "Example", + * "notificationScheme": 10021, + * "permissionScheme": 10011, + * "url": "http://atlassian.com" + * } + */ + "application/json": components["schemas"]["UpdateProjectDetails"]; + }; + }; + responses: { + /** @description Returned if the project is updated. */ + 200: { + content: { + "application/json": components["schemas"]["Project"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the user does not have the necessary permission to update project details. + * * the permission scheme is being changed and the Jira instance is Jira Core Free or Jira Software Free. Permission schemes cannot be changed on free plans. + */ + 403: { + content: never; + }; + /** @description Returned if the project is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete project + * @description Deletes a project. + * + * You can't delete a project if it's archived. To delete an archived project, restore the project and then delete it. To restore a project, use the Jira UI. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteProject: { + parameters: { + query?: { + /** @description Whether this project is placed in the Jira recycle bin where it will be available for restoration. */ + enableUndo?: boolean; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the project is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to delete it. */ + 404: { + content: never; + }; + }; + }; + /** + * Archive project + * @description Archives a project. You can't delete a project if it's archived. To delete an archived project, restore the project and then delete it. To restore a project, use the Jira UI. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + archiveProject: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set project avatar + * @description Sets the avatar displayed for a project. + * + * Use [Load project avatar](#api-rest-api-3-project-projectIdOrKey-avatar2-post) to store avatars against the project, before using this operation to set the displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + updateProjectAvatar: { + parameters: { + path: { + /** @description The ID or (case-sensitive) key of the project. */ + projectIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "id": "10010" + * } + */ + "application/json": components["schemas"]["Avatar"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to administer the project. */ + 403: { + content: never; + }; + /** @description Returned if the project or avatar is not found or the user does not have permission to view the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete project avatar + * @description Deletes a custom avatar from a project. Note that system avatars cannot be deleted. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + deleteProjectAvatar: { + parameters: { + path: { + /** @description The project ID or (case-sensitive) key. */ + projectIdOrKey: string; + /** @description The ID of the avatar. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the avatar is a system avatar or the user does not have permission to administer the project. */ + 403: { + content: never; + }; + /** @description Returned if the project or avatar is not found or the user does not have permission to view the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Load project avatar + * @description Loads an avatar for a project. + * + * Specify the avatar's local file location in the body of the request. Also, include the following headers: + * + * * `X-Atlassian-Token: no-check` To prevent XSRF protection blocking the request, for more information see [Special Headers](#special-request-headers). + * * `Content-Type: image/image type` Valid image types are JPEG, GIF, or PNG. + * + * For example: + * `curl --request POST ` + * + * `--user email@example.com: ` + * + * `--header 'X-Atlassian-Token: no-check' ` + * + * `--header 'Content-Type: image/< image_type>' ` + * + * `--data-binary "<@/path/to/file/with/your/avatar>" ` + * + * `--url 'https://your-domain.atlassian.net/rest/api/3/project/{projectIdOrKey}/avatar2'` + * + * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of the image. The length of the square's sides is set to the smaller of the height or width of the image. + * + * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size. + * + * After creating the avatar use [Set project avatar](#api-rest-api-3-project-projectIdOrKey-avatar-put) to set it as the project's displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + createProjectAvatar: { + parameters: { + query?: { + /** @description The X coordinate of the top-left corner of the crop region. */ + x?: number; + /** @description The Y coordinate of the top-left corner of the crop region. */ + y?: number; + /** @description The length of each side of the crop region. */ + size?: number; + }; + path: { + /** @description The ID or (case-sensitive) key of the project. */ + projectIdOrKey: string; + }; + }; + requestBody: { + content: { + "*/*": unknown; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Avatar"]; + }; + }; + /** + * @description Returned if: + * + * * an image isn't included in the request. + * * the image type is unsupported. + * * the crop parameters extend the crop area beyond the edge of the image. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to administer the project or an anonymous call is made to the operation. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all project avatars + * @description Returns all project avatars, grouped by system and custom avatars. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getAllProjectAvatars: { + parameters: { + path: { + /** @description The ID or (case-sensitive) key of the project. */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectAvatars"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project components paginated + * @description Returns a [paginated](#pagination) list of all components in a project. See the [Get project components](#api-rest-api-3-project-projectIdOrKey-components-get) resource if you want to get a full list of versions without pagination. + * + * If your project uses Compass components, this API will return a list of Compass components that are linked to issues in that project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectComponentsPaginated: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** + * @description [Order](#ordering) the results by a field: + * + * * `description` Sorts by the component description. + * * `issueCount` Sorts by the count of issues associated with the component. + * * `lead` Sorts by the user key of the component's project lead. + * * `name` Sorts by component name. + */ + orderBy?: + | "description" + | "-description" + | "+description" + | "issueCount" + | "-issueCount" + | "+issueCount" + | "lead" + | "-lead" + | "+lead" + | "name" + | "-name" + | "+name"; + /** @description The source of the components to return. Can be `jira` (default), `compass` or `auto`. When `auto` is specified, the API will return connected Compass components if the project is opted into Compass, otherwise it will return Jira components. Defaults to `jira`. */ + componentSource?: "jira" | "compass" | "auto"; + /** @description Filter the results using a literal string. Components with a matching `name` or `description` are returned (case insensitive). */ + query?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanComponentWithIssueCount"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project components + * @description Returns all components in a project. See the [Get project components paginated](#api-rest-api-3-project-projectIdOrKey-component-get) resource if you want to get a full list of components with pagination. + * + * If your project uses Compass components, this API will return a paginated list of Compass components that are linked to issues in that project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectComponents: { + parameters: { + query?: { + /** @description The source of the components to return. Can be `jira` (default), `compass` or `auto`. When `auto` is specified, the API will return connected Compass components if the project is opted into Compass, otherwise it will return Jira components. Defaults to `jira`. */ + componentSource?: "jira" | "compass" | "auto"; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectComponent"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete project asynchronously + * @description Deletes a project asynchronously. + * + * This operation is: + * + * * transactional, that is, if part of the delete fails the project is not deleted. + * * [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteProjectAsynchronously: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project features + * @description Returns the list of features for a project. + */ + getFeaturesForProject: { + parameters: { + path: { + /** @description The ID or (case-sensitive) key of the project. */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ContainerForProjectFeatures"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set project feature state + * @description Sets the state of a project feature. + */ + toggleFeatureForProject: { + parameters: { + path: { + /** @description The ID or (case-sensitive) key of the project. */ + projectIdOrKey: string; + /** @description The key of the feature. */ + featureKey: string; + }; + }; + /** @description Details of the feature state change. */ + requestBody: { + content: { + /** + * @example { + * "state": "ENABLED" + * } + */ + "application/json": components["schemas"]["ProjectFeatureState"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ContainerForProjectFeatures"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project or project feature is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project property keys + * @description Returns all [project property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties) keys for the project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectPropertyKeys: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to view the project. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project property + * @description Returns the value of a [project property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property. + */ + getProjectProperty: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The project property key. Use [Get project property keys](#api-rest-api-3-project-projectIdOrKey-properties-get) to get a list of all project property keys. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to view the project. */ + 403: { + content: never; + }; + /** @description Returned if the project or property is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set project property + * @description Sets the value of the [project property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties). You can use project properties to store custom data against the project. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the property is created. + */ + setProjectProperty: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The key of the project property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "number": 5, + * "string": "string-value" + * } + */ + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the project property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the project property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the project key or id is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to administer the project. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete project property + * @description Deletes the [property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties) from a project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property. + */ + deleteProjectProperty: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The project property key. Use [Get project property keys](#api-rest-api-3-project-projectIdOrKey-properties-get) to get a list of all project property keys. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the project property is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to administer the project. */ + 403: { + content: never; + }; + /** @description Returned if the project or property is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Restore deleted or archived project + * @description Restores a project that has been archived or placed in the Jira recycle bin. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg)for Company managed projects. + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project for Team managed projects. + */ + restore: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Project"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project roles for project + * @description Returns a list of [project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) for the project returning the name and self URL for each role. + * + * Note that all project roles are shared with all projects in Jira Cloud. See [Get all project roles](#api-rest-api-3-role-get) for more information. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for any project on the site or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getProjectRoles: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": { + [key: string]: string; + }; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing or if the user lacks administrative permissions for the project. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or or if the user does not have administrative permissions for the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project role for project + * @description Returns a project role's details and actors associated with the project. The list of actors is sorted by display name. + * + * To check whether a user belongs to a role based on their group memberships, use [Get user](#api-rest-api-3-user-get) with the `groups` expand parameter selected. Then check whether the user keys and groups match with the actors returned for the project. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getProjectRole: { + parameters: { + query?: { + /** @description Exclude inactive users. */ + excludeInactiveUsers?: boolean; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the project or project role is not found. + * * the user does not have administrative permission. + */ + 404: { + content: never; + }; + }; + }; + /** + * Set actors for project role + * @description Sets the actors for a project role for a project, replacing all existing actors. + * + * To add actors to the project without overwriting the existing list, use [Add actors to project role](#api-rest-api-3-project-projectIdOrKey-role-id-post). + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setActors: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + /** @description The groups or users to associate with the project role for this project. Provide the user account ID, group name, or group ID. As a group's name can change, use of group ID is recommended. */ + requestBody: { + content: { + /** + * @example { + * "categorisedActors": { + * "atlassian-group-role-actor-id": [ + * "952d12c3-5b5b-4d04-bb32-44d383afc4b2" + * ], + * "atlassian-user-role-actor": [ + * "12345678-9abc-def1-2345-6789abcdef12" + * ] + * } + * } + */ + "application/json": components["schemas"]["ProjectRoleActorsUpdateBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. The complete list of actors for the project is returned. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing or if the calling user lacks administrative permissions for the project. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the project is not found. + * * a user or group is not found. + * * a group or user is not active. + */ + 404: { + content: never; + }; + }; + }; + /** + * Add actors to project role + * @description Adds actors to a project role for the project. + * + * To replace all actors for the project, use [Set actors for project role](#api-rest-api-3-project-projectIdOrKey-role-id-put). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addActorUsers: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + /** @description The groups or users to associate with the project role for this project. Provide the user account ID, group name, or group ID. As a group's name can change, use of group ID is recommended. */ + requestBody: { + content: { + /** + * @example { + * "groupId": [ + * "952d12c3-5b5b-4d04-bb32-44d383afc4b2" + * ] + * } + */ + "application/json": components["schemas"]["ActorsMap"]; + }; + }; + responses: { + /** + * @description Returned if the request is successful. The complete list of actors for the project is returned. + * + * For example, the cURL request above adds a group, *jira-developers*. For the response below to be returned as a result of that request, the user *Mia Krystof* would have previously been added as a `user` actor for this project. + */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing or if the calling user lacks administrative permissions for the project. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the project is not found. + * * the user or group is not found. + * * the group or user is not active. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete actors from project role + * @description Deletes actors from a project role for the project. + * + * To remove default actors from the project role, use [Delete default actors from project role](#api-rest-api-3-role-id-actors-delete). + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteActor: { + parameters: { + query?: { + /** @description The user account ID of the user to remove from the project role. */ + user?: string; + /** @description The name of the group to remove from the project role. This parameter cannot be used with the `groupId` parameter. As a group's name can change, use of `groupId` is recommended. */ + group?: string; + /** @description The ID of the group to remove from the project role. This parameter cannot be used with the `group` parameter. */ + groupId?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** + * @description Returned if: + * + * * the project or project role is not found. + * * the calling user does not have administrative permission. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get project role details + * @description Returns all [project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) and the details for each role. Note that the list of project roles is common to all projects. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectRoleDetails: { + parameters: { + query?: { + /** @description Whether the roles should be filtered to include only those the user is assigned to. */ + currentMember?: boolean; + excludeConnectAddons?: boolean; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRoleDetails"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or if the user does not have the necessary permissions for the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all statuses for project + * @description Returns the valid statuses for a project. The statuses are grouped by issue type, as each project has a set of valid issue types and each issue type has a set of valid statuses. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getAllStatuses: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeWithStatus"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project versions paginated + * @description Returns a [paginated](#pagination) list of all versions in a project. See the [Get project versions](#api-rest-api-3-project-projectIdOrKey-versions-get) resource if you want to get a full list of versions without pagination. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectVersionsPaginated: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** + * @description [Order](#ordering) the results by a field: + * + * * `description` Sorts by version description. + * * `name` Sorts by version name. + * * `releaseDate` Sorts by release date, starting with the oldest date. Versions with no release date are listed last. + * * `sequence` Sorts by the order of appearance in the user interface. + * * `startDate` Sorts by start date, starting with the oldest date. Versions with no start date are listed last. + */ + orderBy?: + | "description" + | "-description" + | "+description" + | "name" + | "-name" + | "+name" + | "releaseDate" + | "-releaseDate" + | "+releaseDate" + | "sequence" + | "-sequence" + | "+sequence" + | "startDate" + | "-startDate" + | "+startDate"; + /** @description Filter the results using a literal string. Versions with matching `name` or `description` are returned (case insensitive). */ + query?: string; + /** @description A list of status values used to filter the results by version status. This parameter accepts a comma-separated list. The status values are `released`, `unreleased`, and `archived`. */ + status?: string; + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `issuesstatus` Returns the number of issues in each status category for each version. + * * `operations` Returns actions that can be performed on the specified version. + * * `driver` Returns the Atlassian account ID of the version driver. + * * `approvers` Returns a list containing the approvers for this version. + */ + expand?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanVersion"]; + }; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project versions + * @description Returns all versions in a project. The response is not paginated. Use [Get project versions paginated](#api-rest-api-3-project-projectIdOrKey-version-get) if you want to get the versions in a project with pagination. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectVersions: { + parameters: { + query?: { + /** @description Use [expand](#expansion) to include additional information in the response. This parameter accepts `operations`, which returns actions that can be performed on the version. */ + expand?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Version"][]; + }; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project's sender email + * @description Returns the [project's sender email address](https://confluence.atlassian.com/x/dolKLg). + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getProjectEmail: { + parameters: { + path: { + /** @description The project ID. */ + projectId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectEmailAddress"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to read project. */ + 403: { + content: never; + }; + /** @description Returned if the project or project's sender email address is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set project's sender email + * @description Sets the [project's sender email address](https://confluence.atlassian.com/x/dolKLg). + * + * If `emailAddress` is an empty string, the default email address is restored. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + updateProjectEmail: { + parameters: { + path: { + /** @description The project ID. */ + projectId: number; + }; + }; + /** @description The project's sender email address to be set. */ + requestBody: { + content: { + /** + * @example { + * "emailAddress": "jira@example.atlassian.net" + * } + */ + "application/json": components["schemas"]["ProjectEmailAddress"]; + }; + }; + responses: { + /** @description Returned if the project's sender email address is successfully set. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid, if the email address is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to administer the project. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project issue type hierarchy + * @deprecated + * @description Get the issue type hierarchy for a next-gen project. + * + * The issue type hierarchy for a project consists of: + * + * * *Epic* at level 1 (optional). + * * One or more issue types at level 0 such as *Story*, *Task*, or *Bug*. Where the issue type *Epic* is defined, these issue types are used to break down the content of an epic. + * * *Subtask* at level -1 (optional). This issue type enables level 0 issue types to be broken down into components. Issues based on a level -1 issue type must have a parent issue. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project. + */ + getHierarchy: { + parameters: { + path: { + /** @description The ID of the project. */ + projectId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectIssueTypeHierarchy"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project issue security scheme + * @description Returns the [issue security scheme](https://confluence.atlassian.com/x/J4lKLg) associated with the project. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or the *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + getProjectIssueSecurityScheme: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SecurityScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is visible to the user but the user doesn't have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project notification scheme + * @description Gets a [notification scheme](https://confluence.atlassian.com/x/8YdKLg) associated with the project. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + getNotificationSchemeForProject: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `all` Returns all expandable information + * * `field` Returns information about any custom fields assigned to receive an event + * * `group` Returns information about any groups assigned to receive an event + * * `notificationSchemeEvents` Returns a list of event associations. This list is returned for all expandable information + * * `projectRole` Returns information about any project roles assigned to receive an event + * * `user` Returns information about any users assigned to receive an event + */ + expand?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["NotificationScheme"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project is not found or the user is not an administrator. */ + 404: { + content: never; + }; + }; + }; + /** + * Get assigned permission scheme + * @description Gets the [permission scheme](https://confluence.atlassian.com/x/yodKLg) associated with the project. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg). + */ + getAssignedPermissionScheme: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have permission to view the project's configuration. */ + 403: { + content: never; + }; + /** @description Returned if the project is not found or the user does not have permission to view the project. */ + 404: { + content: never; + }; + }; + }; + /** + * Assign permission scheme + * @description Assigns a permission scheme with a project. See [Managing project permissions](https://confluence.atlassian.com/x/yodKLg) for more information about permission schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) + */ + assignPermissionScheme: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Note that permissions are included when you specify any value. Expand options include: + * + * * `all` Returns all expandable information. + * * `field` Returns information about the custom field granted the permission. + * * `group` Returns information about the group that is granted the permission. + * * `permissions` Returns all permission grants for each permission scheme. + * * `projectRole` Returns information about the project role granted the permission. + * * `user` Returns information about the user who is granted the permission. + */ + expand?: string; + }; + path: { + /** @description The project ID or project key (case sensitive). */ + projectKeyOrId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "id": 10000 + * } + */ + "application/json": components["schemas"]["IdBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PermissionScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the user does not have the necessary permission to edit the project's configuration. + * * the Jira instance is Jira Core Free or Jira Software Free. Permission schemes cannot be assigned to projects on free plans. + */ + 403: { + content: never; + }; + /** @description Returned if the project or permission scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get project issue security levels + * @description Returns all [issue security](https://confluence.atlassian.com/x/J4lKLg) levels for the project that the user has access to. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project, however, issue security levels are only returned for authenticated user with *Set Issue Security* [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project. + */ + getSecurityLevelsForProject: { + parameters: { + path: { + /** @description The project ID or project key (case sensitive). */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectIssueSecurityLevels"]; + }; + }; + /** @description Returned if the project is not found or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all project categories + * @description Returns all project categories. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getAllProjectCategories: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectCategory"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create project category + * @description Creates a project category. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createProjectCategory: { + requestBody: { + content: { + /** + * @example { + * "description": "Created Project Category", + * "name": "CREATED" + * } + */ + "application/json": components["schemas"]["ProjectCategory"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["ProjectCategory"]; + }; + }; + /** + * @description Returned if: + * + * * `name` is not provided or exceeds 255 characters. + * * `description` exceeds 1000 characters. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the project category name is in use. */ + 409: { + content: never; + }; + }; + }; + /** + * Get project category by ID + * @description Returns a project category. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getProjectCategoryById: { + parameters: { + path: { + /** @description The ID of the project category. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectCategory"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project category is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update project category + * @description Updates a project category. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateProjectCategory: { + parameters: { + path: { + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "Updated Project Category", + * "name": "UPDATED" + * } + */ + "application/json": components["schemas"]["ProjectCategory"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["UpdatedProjectCategory"]; + }; + }; + /** + * @description Returned if: + * + * * `name` has been modified and exceeds 255 characters. + * * `description` has been modified and exceeds 1000 characters. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the project category is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete project category + * @description Deletes a project category. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeProjectCategory: { + parameters: { + path: { + /** @description ID of the project category to delete. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the project category is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Validate project key + * @description Validates a project key by confirming the key is a valid string and not in use. + * + * **[Permissions](#permissions) required:** None. + */ + validateProjectKey: { + parameters: { + query?: { + /** @description The project key. */ + key?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get valid project key + * @description Validates a project key and, if the key is invalid or in use, generates a valid random string for the project key. + * + * **[Permissions](#permissions) required:** None. + */ + getValidProjectKey: { + parameters: { + query?: { + /** @description The project key. */ + key?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": string; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get valid project name + * @description Checks that a project name isn't in use. If the name isn't in use, the passed string is returned. If the name is in use, this operation attempts to generate a valid project name based on the one supplied, usually by adding a sequence number. If a valid project name cannot be generated, a 404 response is returned. + * + * **[Permissions](#permissions) required:** None. + */ + getValidProjectName: { + parameters: { + query: { + /** @description The project name. */ + name: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": string; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if a valid project name cannot be generated. */ + 404: { + content: never; + }; + }; + }; + /** + * Get resolutions + * @deprecated + * @description Returns a list of all issue resolution values. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getResolutions: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Resolution"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Create resolution + * @description Creates an issue resolution. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createResolution: { + requestBody: { + content: { + /** + * @example { + * "description": "My resolution description", + * "name": "My new resolution" + * } + */ + "application/json": components["schemas"]["CreateResolutionDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["ResolutionId"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Set default resolution + * @description Sets default issue resolution. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setDefaultResolution: { + requestBody: { + content: { + /** + * @example { + * "id": "3" + * } + */ + "application/json": components["schemas"]["SetDefaultResolutionRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue resolution isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Move resolutions + * @description Changes the order of issue resolutions. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + moveResolutions: { + requestBody: { + content: { + /** + * @example { + * "after": "10002", + * "ids": [ + * "10000", + * "10001" + * ] + * } + */ + "application/json": components["schemas"]["ReorderIssueResolutionsRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue resolution isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Search resolutions + * @description Returns a [paginated](#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](#permissions) required:** Permission to access Jira. + */ + searchResolutions: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: string; + /** @description The maximum number of items to return per page. */ + maxResults?: string; + /** @description The list of resolutions IDs to be filtered out */ + id?: string[]; + /** @description When set to true, return default only, when IDs provided, if none of them is default, return empty page. Default value is false */ + onlyDefault?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanResolutionJsonBean"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get resolution + * @description Returns an issue resolution value. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getResolution: { + parameters: { + path: { + /** @description The ID of the issue resolution value. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Resolution"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue resolution value is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update resolution + * @description Updates an issue resolution. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateResolution: { + parameters: { + path: { + /** @description The ID of the issue resolution. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "My updated resolution description", + * "name": "My updated resolution" + * } + */ + "application/json": components["schemas"]["UpdateResolutionDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue resolution isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Delete resolution + * @description Deletes an issue resolution. + * + * This operation is [asynchronous](#async). 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](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteResolution: { + parameters: { + query: { + /** @description The ID of the issue resolution that will replace the currently selected resolution. */ + replaceWith: string; + }; + path: { + /** @description The ID of the issue resolution. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request isn't valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the issue resolution isn't found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if a task to delete the issue resolution is already running. */ + 409: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all project roles + * @description Gets a list of all project roles, complete with project role details and default actors. + * + * ### About project roles ### + * + * [Project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) are a flexible way to to associate users and groups with projects. In Jira Cloud, the list of project roles is shared globally with all projects, but each project can have a different set of actors associated with it (unlike groups, which have the same membership throughout all Jira applications). + * + * Project roles are used in [permission schemes](#api-rest-api-3-permissionscheme-get), [email notification schemes](#api-rest-api-3-notificationscheme-get), [issue security levels](#api-rest-api-3-issuesecurityschemes-get), [comment visibility](#api-rest-api-3-comment-list-post), and workflow conditions. + * + * #### Members and actors #### + * + * In the Jira REST API, a member of a project role is called an *actor*. An *actor* is a group or user associated with a project role. + * + * Actors may be set as [default members](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/#Specifying-'default-members'-for-a-project-role) of the project role or set at the project level: + * + * * Default actors: Users and groups that are assigned to the project role for all newly created projects. The default actors can be removed at the project level later if desired. + * * Actors: Users and groups that are associated with a project role for a project, which may differ from the default actors. This enables you to assign a user to different roles in different projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllProjectRoles: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + }; + }; + /** + * Create project role + * @description Creates a new project role with no [default actors](#api-rest-api-3-resolution-get). You can use the [Add default actors to project role](#api-rest-api-3-role-id-actors-post) operation to add default actors to the project role after creating it. + * + * *Note that although a new project role is available to all projects upon creation, any default actors that are associated with the project role are not added to projects that existed prior to the role being created.*< + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createProjectRole: { + requestBody: { + content: { + /** + * @example { + * "description": "A project role that represents developers in a project", + * "name": "Developers" + * } + */ + "application/json": components["schemas"]["CreateUpdateRoleRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is not valid. The `name` cannot be empty or start or end with whitespace. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if a project role with the provided name already exists. */ + 409: { + content: never; + }; + }; + }; + /** + * Get project role by ID + * @description Gets the project role details and the default actors associated with the role. The list of default actors is sorted by display name. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getProjectRoleById: { + parameters: { + path: { + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Fully update project role + * @description Updates the project role's name and description. You must include both a name and a description in the request. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + fullyUpdateProjectRole: { + parameters: { + path: { + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "A project role that represents developers in a project", + * "name": "Developers" + * } + */ + "application/json": components["schemas"]["CreateUpdateRoleRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is not valid. The `name` cannot be empty or start or end with whitespace. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Partial update project role + * @description Updates either the project role's name or its description. + * + * You cannot update both the name and description at the same time using this operation. If you send a request with a name and a description only the name is updated. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + partialUpdateProjectRole: { + parameters: { + path: { + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "A project role that represents developers in a project", + * "name": "Developers" + * } + */ + "application/json": components["schemas"]["CreateUpdateRoleRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete project role + * @description Deletes a project role. You must specify a replacement project role if you wish to delete a project role that is in use. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteProjectRole: { + parameters: { + query?: { + /** @description The ID of the project role that will replace the one being deleted. */ + swap?: number; + }; + path: { + /** @description The ID of the project role to delete. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid or if the replacement project role is not found. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role being deleted is not found. */ + 404: { + content: never; + }; + /** @description Returned if the project role being deleted is in use and a replacement project role is not specified in the request. */ + 409: { + content: never; + }; + }; + }; + /** + * Get default actors for project role + * @description Returns the [default actors](#api-rest-api-3-resolution-get) for the project role. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getProjectRoleActorsForRole: { + parameters: { + path: { + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Add default actors to project role + * @description Adds [default actors](#api-rest-api-3-resolution-get) to a role. You may add groups or users, but you cannot add groups and users in the same request. + * + * Changing a project role's default actors does not affect project role members for projects already created. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addProjectRoleActorsToRole: { + parameters: { + path: { + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "user": [ + * "admin" + * ] + * } + */ + "application/json": components["schemas"]["ActorInputBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete default actors from project role + * @description Deletes the [default actors](#api-rest-api-3-resolution-get) from a project role. You may delete a group or user, but you cannot delete a group and a user in the same request. + * + * Changing a project role's default actors does not affect project role members for projects already created. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteProjectRoleActorsFromRole: { + parameters: { + query?: { + /** @description The user account ID of the user to remove as a default actor. */ + user?: string; + /** @description The group ID of the group to be removed as a default actor. This parameter cannot be used with the `group` parameter. */ + groupId?: string; + /** @description The group name of the group to be removed as a default actor.This parameter cannot be used with the `groupId` parameter. As a group's name can change, use of `groupId` is recommended. */ + group?: string; + }; + path: { + /** @description The ID of the project role. Use [Get all project roles](#api-rest-api-3-role-get) to get a list of project role IDs. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ProjectRole"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have administrative permissions. */ + 403: { + content: never; + }; + /** @description Returned if the project role is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get screens + * @description Returns a [paginated](#pagination) list of all screens or those specified by one or more screen IDs. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getScreens: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of screen IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. */ + id?: number[]; + /** @description String used to perform a case-insensitive partial match with screen name. */ + queryString?: string; + /** @description The scope filter string. To filter by multiple scope, provide an ampersand-separated list. For example, `scope=GLOBAL&scope=PROJECT`. */ + scope?: ("GLOBAL" | "TEMPLATE" | "PROJECT")[]; + /** + * @description [Order](#ordering) the results by a field: + * + * * `id` Sorts by screen ID. + * * `name` Sorts by screen name. + */ + orderBy?: "name" | "-name" | "+name" | "id" | "-id" | "+id"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanScreen"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Create screen + * @description Creates a screen with a default field tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createScreen: { + requestBody: { + content: { + /** + * @example { + * "description": "Enables changes to resolution and linked issues.", + * "name": "Resolve Security Issue Screen" + * } + */ + "application/json": components["schemas"]["ScreenDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Screen"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Add field to default screen + * @description Adds a field to the default tab of the default screen. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addFieldToDefaultScreen: { + parameters: { + path: { + /** @description The ID of the field. */ + fieldId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the field it not found or the field is already present. */ + 404: { + content: never; + }; + }; + }; + /** + * Get bulk screen tabs + * @description Returns the list of tabs for a bulk of screens. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getBulkScreenTabs: { + parameters: { + query?: { + /** @description The list of screen IDs. To include multiple screen IDs, provide an ampersand-separated list. For example, `screenId=10000&screenId=10001`. */ + screenId?: number[]; + /** @description The list of tab IDs. To include multiple tab IDs, provide an ampersand-separated list. For example, `tabId=10000&tabId=10001`. */ + tabId?: number[]; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. The maximum number is 100, */ + maxResult?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the screen ID or the tab ID is empty. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Update screen + * @description Updates a screen. Only screens used in classic projects can be updated. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateScreen: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "Enables changes to resolution and linked issues for accessibility related issues.", + * "name": "Resolve Accessibility Issue Screen" + * } + */ + "application/json": components["schemas"]["UpdateScreenDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Screen"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the screen is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete screen + * @description Deletes a screen. A screen cannot be deleted if it is used in a screen scheme, workflow, or workflow draft. + * + * Only screens used in classic projects can be deleted. + */ + deleteScreen: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the screen is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get available screen fields + * @description Returns the fields that can be added to a tab on a screen. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAvailableScreenFields: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ScreenableField"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all screen tabs + * @description Returns the list of tabs for a screen. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen Scheme. + */ + getAllScreenTabs: { + parameters: { + query?: { + /** @description The key of the project. */ + projectKey?: string; + }; + path: { + /** @description The ID of the screen. */ + screenId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ScreenableTab"][]; + }; + }; + /** @description Returned if the screen ID is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Create screen tab + * @description Creates a tab for a screen. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addScreenTab: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "name": "Fields Tab" + * } + */ + "application/json": components["schemas"]["ScreenableTab"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ScreenableTab"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update screen tab + * @description Updates the name of a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + renameScreenTab: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["ScreenableTab"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ScreenableTab"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen or screen tab is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete screen tab + * @description Deletes a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteScreenTab: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen or screen tab is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all screen tab fields + * @description Returns all fields for a screen tab. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen Scheme. + */ + getAllScreenTabFields: { + parameters: { + query?: { + /** @description The key of the project. */ + projectKey?: string; + }; + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ScreenableField"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen or screen tab is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Add screen tab field + * @description Adds a field to a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + addScreenTabField: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "fieldId": "summary" + * } + */ + "application/json": components["schemas"]["AddFieldBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ScreenableField"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen, screen tab, or field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Remove screen tab field + * @description Removes a field from a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + removeScreenTabField: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + /** @description The ID of the field. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen, screen tab, or field is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Move screen tab field + * @description Moves a screen tab field. + * + * If `after` and `position` are provided in the request, `position` is ignored. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + moveScreenTabField: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + /** @description The ID of the field. */ + id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["MoveFieldBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen, screen tab, or field is not found or the field can't be moved to the requested position. */ + 404: { + content: never; + }; + }; + }; + /** + * Move screen tab + * @description Moves a screen tab. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + moveScreenTab: { + parameters: { + path: { + /** @description The ID of the screen. */ + screenId: number; + /** @description The ID of the screen tab. */ + tabId: number; + /** @description The position of tab. The base index is 0. */ + pos: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the screen or screen tab is not found or the position is invalid. */ + 404: { + content: never; + }; + }; + }; + /** + * Get screen schemes + * @description Returns a [paginated](#pagination) list of screen schemes. + * + * Only screen schemes used in classic projects are returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getScreenSchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The list of screen scheme IDs. To include multiple IDs, provide an ampersand-separated list. For example, `id=10000&id=10001`. */ + id?: number[]; + /** @description Use [expand](#expansion) include additional information in the response. This parameter accepts `issueTypeScreenSchemes` that, for each screen schemes, returns information about the issue type screen scheme the screen scheme is assigned to. */ + expand?: string; + /** @description String used to perform a case-insensitive partial match with screen scheme name. */ + queryString?: string; + /** + * @description [Order](#ordering) the results by a field: + * + * * `id` Sorts by screen scheme ID. + * * `name` Sorts by screen scheme name. + */ + orderBy?: "name" | "-name" | "+name" | "id" | "-id" | "+id"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanScreenScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Create screen scheme + * @description Creates a screen scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createScreenScheme: { + requestBody: { + content: { + /** + * @example { + * "description": "Manage employee data", + * "name": "Employee screen scheme", + * "screens": { + * "default": 10017, + * "edit": 10019, + * "view": 10020 + * } + * } + */ + "application/json": components["schemas"]["ScreenSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["ScreenSchemeId"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if a screen used as one of the screen types in the screen scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Update screen scheme + * @description Updates a screen scheme. Only screen schemes used in classic projects can be updated. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateScreenScheme: { + parameters: { + path: { + /** @description The ID of the screen scheme. */ + screenSchemeId: string; + }; + }; + /** @description The screen scheme update details. */ + requestBody: { + content: { + /** + * @example { + * "name": "Employee screen scheme v2", + * "screens": { + * "create": "10019", + * "default": "10018" + * } + * } + */ + "application/json": components["schemas"]["UpdateScreenSchemeDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the screen scheme or a screen used as one of the screen types is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete screen scheme + * @description Deletes a screen scheme. A screen scheme cannot be deleted if it is used in an issue type screen scheme. + * + * Only screens schemes used in classic projects can be deleted. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteScreenScheme: { + parameters: { + path: { + /** @description The ID of the screen scheme. */ + screenSchemeId: string; + }; + }; + responses: { + /** @description Returned if the screen scheme is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the screen scheme is used in an issue type screen scheme. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the screen scheme is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Search for issues using JQL (GET) + * @description Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). + * + * If the JQL query expression is too large to be encoded as a query parameter, use the [POST](#api-rest-api-3-search-post) version of this resource. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Issues are included in the response where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + searchForIssuesUsingJql: { + parameters: { + query?: { + /** + * @description The [JQL](https://confluence.atlassian.com/x/egORLQ) that defines the search. Note: + * + * * If no JQL expression is provided, all issues are returned. + * * `username` and `userkey` cannot be used as search terms due to privacy reasons. Use `accountId` instead. + * * If a user has hidden their email address in their user profile, partial matches of the email address will not find the user. An exact match is required. + */ + jql?: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. To manage page size, Jira may return fewer items per page where a large number of fields are requested. The greatest number of items returned per page is achieved when requesting `id` or `key` only. */ + maxResults?: number; + /** + * @description Determines how to validate the JQL query and treat the validation results. Supported values are: + * + * * `strict` Returns a 400 response code if any errors are found, along with a list of all errors (and warnings). + * * `warn` Returns all errors as warnings. + * * `none` No validation is performed. + * * `true` *Deprecated* A legacy synonym for `strict`. + * * `false` *Deprecated* A legacy synonym for `warn`. + * + * Note: If the JQL is not correctly formed a 400 response code is returned, regardless of the `validateQuery` value. + */ + validateQuery?: "strict" | "warn" | "none" | "true" | "false"; + /** + * @description A list of fields to return for each issue, use it to retrieve a subset of fields. This parameter accepts a comma-separated list. Expand options include: + * + * * `*all` Returns all fields. + * * `*navigable` Returns navigable fields. + * * Any issue field, prefixed with a minus to exclude. + * + * Examples: + * + * * `summary,comment` Returns only the summary and comments fields. + * * `-description` Returns all navigable (default) fields except description. + * * `*all,-comment` Returns all fields except comments. + * + * This parameter may be specified multiple times. For example, `fields=field1,field2&fields=field3`. + * + * Note: All navigable fields are returned by default. This differs from [GET issue](#api-rest-api-3-issue-issueIdOrKey-get) where the default is all fields. + */ + fields?: string[]; + /** + * @description Use [expand](#expansion) to include additional information about issues in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `renderedFields` Returns field values rendered in HTML format. + * * `names` Returns the display name of each field. + * * `schema` Returns the schema describing a field type. + * * `transitions` Returns all possible transitions for the issue. + * * `operations` Returns all possible operations for the issue. + * * `editmeta` Returns information about how each field can be edited. + * * `changelog` Returns a list of recent updates to an issue, sorted by date, starting from the most recent. + * * `versionedRepresentations` Instead of `fields`, returns `versionedRepresentations` a JSON array containing each version of a field's value, with the highest numbered item representing the most recent version. + */ + expand?: string; + /** @description A list of issue property keys for issue properties to include in the results. This parameter accepts a comma-separated list. Multiple properties can also be provided using an ampersand separated list. For example, `properties=prop1,prop2&properties=prop3`. A maximum of 5 issue property keys can be specified. */ + properties?: string[]; + /** @description Reference fields by their key (rather than ID). */ + fieldsByKeys?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SearchResults"]; + }; + }; + /** @description Returned if the JQL query is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Search for issues using JQL (POST) + * @description Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). + * + * There is a [GET](#api-rest-api-3-search-get) version of this resource that can be used for smaller JQL query expressions. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** Issues are included in the response where the user has: + * + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the issue. + * * If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue. + */ + searchForIssuesUsingJqlPost: { + /** @description A JSON object containing the search request. */ + requestBody: { + content: { + /** + * @example { + * "expand": [ + * "names", + * "schema", + * "operations" + * ], + * "fields": [ + * "summary", + * "status", + * "assignee" + * ], + * "fieldsByKeys": false, + * "jql": "project = HSP", + * "maxResults": 15, + * "startAt": 0 + * } + */ + "application/json": components["schemas"]["SearchRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SearchResults"]; + }; + }; + /** @description Returned if the JQL query is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get issue security level + * @description Returns details of an issue security level. + * + * Use [Get issue security scheme](#api-rest-api-3-issuesecurityschemes-id-get) to obtain the IDs of issue security levels associated with the issue security scheme. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getIssueSecurityLevel: { + parameters: { + path: { + /** @description The ID of the issue security level. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["SecurityLevel"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the issue security level is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get Jira instance info + * @description Returns information about the Jira instance. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getServerInfo: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ServerInformation"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + }; + }; + /** + * Get issue navigator default columns + * @description Returns the default issue navigator columns. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getIssueNavigatorDefaultColumns: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ColumnItem"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Set issue navigator default columns + * @description Sets the default issue navigator columns. + * + * The `columns` parameter accepts a navigable field value and is expressed as HTML form data. To specify multiple columns, pass multiple `columns` parameters. For example, in curl: + * + * `curl -X PUT -d columns=summary -d columns=description https://your-domain.atlassian.net/rest/api/3/settings/columns` + * + * If no column details are sent, then all default columns are removed. + * + * A navigable field is one that can be used as a column on the issue navigator. Find details of navigable issue columns using [Get fields](#api-rest-api-3-field-get). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setIssueNavigatorDefaultColumns: { + /** @description A navigable field value. */ + requestBody: { + content: { + "*/*": components["schemas"]["ColumnRequestBody"]; + "multipart/form-data": components["schemas"]["ColumnRequestBody"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** @description Returned if invalid parameters are passed. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if a navigable field value is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all statuses + * @description Returns a list of all statuses associated with active workflows. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getStatuses: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["StatusDetails"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get status + * @description Returns a status. The status must be associated with an active workflow to be returned. + * + * If a name is used on more than one status, only the status found first is returned. Therefore, identifying the status by its ID may be preferable. + * + * This operation can be accessed anonymously. + * + * [Permissions](#permissions) required: None. + */ + getStatus: { + parameters: { + path: { + /** @description The ID or name of the status. */ + idOrName: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["StatusDetails"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the status is not found. + * * the status is not associated with a workflow. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get all status categories + * @description Returns a list of all status categories. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getStatusCategories: { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["StatusCategory"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get status category + * @description Returns a status category. Status categories provided a mechanism for categorizing [statuses](#api-rest-api-3-status-idOrName-get). + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getStatusCategory: { + parameters: { + path: { + /** @description The ID or key of the status category. */ + idOrKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["StatusCategory"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the status category is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Bulk get statuses + * @description Returns a list of the statuses specified by one or more status IDs. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + getStatusesById: { + parameters: { + query: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `usages` Returns the project and issue types that use the status in their workflow. + * * `workflowUsages` Returns the workflows that use the status. + */ + expand?: string; + /** + * @description The list of status IDs. To include multiple IDs, provide an ampersand-separated list. For example, id=10000&id=10001. + * + * Min items `1`, Max items `50` + */ + id: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["JiraStatus"][]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Bulk update statuses + * @description Updates statuses by ID. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + updateStatuses: { + /** @description The list of statuses that will be updated. */ + requestBody: { + content: { + /** + * @example { + * "statuses": [ + * { + * "description": "The issue is resolved", + * "id": "1000", + * "name": "Finished", + * "statusCategory": "DONE" + * } + * ] + * } + */ + "application/json": components["schemas"]["StatusUpdateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + /** @description Returned if another workflow configuration update task is ongoing. */ + 409: { + content: never; + }; + }; + }; + /** + * Bulk create statuses + * @description Creates statuses for a global or project scope. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + createStatuses: { + /** @description Details of the statuses being created and their scope. */ + requestBody: { + content: { + /** + * @example { + * "scope": { + * "project": { + * "id": "1" + * }, + * "type": "PROJECT" + * }, + * "statuses": [ + * { + * "description": "The issue is resolved", + * "name": "Finished", + * "statusCategory": "DONE" + * } + * ] + * } + */ + "application/json": components["schemas"]["StatusCreateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["JiraStatus"][]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + /** @description Returned if another workflow configuration update task is ongoing. */ + 409: { + content: never; + }; + }; + }; + /** + * Bulk delete Statuses + * @description Deletes statuses by ID. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + deleteStatusesById: { + parameters: { + query: { + /** + * @description The list of status IDs. To include multiple IDs, provide an ampersand-separated list. For example, id=10000&id=10001. + * + * Min items `1`, Max items `50` + */ + id: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Search statuses paginated + * @description Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of statuses that match a search on name or project. + * + * **[Permissions](#permissions) required:** + * + * * *Administer projects* [project permission.](https://confluence.atlassian.com/x/yodKLg) + * * *Administer Jira* [project permission.](https://confluence.atlassian.com/x/yodKLg) + */ + search: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `usages` Returns the project and issue types that use the status in their workflow. + * * `workflowUsages` Returns the workflows that use the status. + */ + expand?: string; + /** @description The project the status is part of or null for global statuses. */ + projectId?: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description Term to match status names against or null to search for all statuses in the search scope. */ + searchString?: string; + /** @description Category of the status to filter by. The supported values are: `TODO`, `IN_PROGRESS`, and `DONE`. */ + statusCategory?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageOfStatuses"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Get task + * @description Returns the status of a [long-running asynchronous task](#async). + * + * When a task has finished, this operation returns the JSON blob applicable to the task. See the documentation of the operation that created the task for details. Task details are not permanently retained. As of September 2019, details are retained for 14 days although this period may change without notice. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024. + * + * * `read:jira-work` + * + * **[Permissions](#permissions) required:** either of: + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * Creator of the task. + */ + getTask: { + parameters: { + path: { + /** @description The ID of the task. */ + taskId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the task is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Cancel task + * @description Cancels a task. + * + * **[Permissions](#permissions) required:** either of: + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * * Creator of the task. + */ + cancelTask: { + parameters: { + path: { + /** @description The ID of the task. */ + taskId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 202: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if cancellation of the task is not possible. */ + 400: { + content: { + "application/json": string[]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": string[]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": string[]; + }; + }; + /** @description Returned if the task is not found. */ + 404: { + content: { + "application/json": string[]; + }; + }; + }; + }; + /** + * Get UI modifications + * @description Gets UI modifications. UI modifications can only be retrieved by Forge apps. + * + * **[Permissions](#permissions) required:** None. + */ + getUiModifications: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** + * @description Use expand to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `data` Returns UI modification data. + * * `contexts` Returns UI modification contexts. + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanUiModificationDetails"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request is not from a Forge app. */ + 403: { + content: never; + }; + }; + }; + /** + * Create UI modification + * @description Creates a UI modification. UI modification can only be created by Forge apps. + * + * Each app can define up to 3000 UI modifications. Each UI modification can define up to 1000 contexts. The same context can be assigned to maximum 100 UI modifications. + * + * **[Permissions](#permissions) required:** + * + * * *None* if the UI modification is created without contexts. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the UI modification is created with contexts. + */ + createUiModification: { + /** @description Details of the UI modification. */ + requestBody: { + content: { + /** + * @example { + * "contexts": [ + * { + * "issueTypeId": "10000", + * "projectId": "10000", + * "viewType": "GIC" + * }, + * { + * "issueTypeId": "10001", + * "projectId": "10000", + * "viewType": "IssueView" + * }, + * { + * "issueTypeId": "10002", + * "projectId": "10000", + * "viewType": null + * } + * ], + * "data": "{field: 'Story Points', config: {hidden: false}}", + * "description": "Reveals Story Points field when any Sprint is selected.", + * "name": "Reveal Story Points" + * } + */ + "application/json": components["schemas"]["CreateUiModificationDetails"]; + }; + }; + responses: { + /** @description Returned if the UI modification is created. */ + 201: { + content: { + "application/json": components["schemas"]["UiModificationIdentifiers"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request is not from a Forge app. */ + 403: { + content: never; + }; + /** @description Returned if a project or an issue type in the context are not found. */ + 404: { + content: { + "application/json": components["schemas"]["DetailedErrorCollection"]; + }; + }; + }; + }; + /** + * Update UI modification + * @description Updates a UI modification. UI modification can only be updated by Forge apps. + * + * Each UI modification can define up to 1000 contexts. The same context can be assigned to maximum 100 UI modifications. + * + * **[Permissions](#permissions) required:** + * + * * *None* if the UI modification is created without contexts. + * * *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the UI modification is created with contexts. + */ + updateUiModification: { + parameters: { + path: { + /** @description The ID of the UI modification. */ + uiModificationId: string; + }; + }; + /** @description Details of the UI modification. */ + requestBody: { + content: { + /** + * @example { + * "contexts": [ + * { + * "issueTypeId": "10000", + * "projectId": "10000", + * "viewType": "GIC" + * }, + * { + * "issueTypeId": "10001", + * "projectId": "10000", + * "viewType": "IssueView" + * } + * ], + * "data": "{field: 'Story Points', config: {hidden: true}}", + * "name": "Updated Reveal Story Points" + * } + */ + "application/json": components["schemas"]["UpdateUiModificationDetails"]; + }; + }; + responses: { + /** @description Returned if the UI modification is updated. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request is not from a Forge app. */ + 403: { + content: never; + }; + /** @description Returned if the UI modification, a project or an issue type in the context are not found. */ + 404: { + content: { + "application/json": components["schemas"]["DetailedErrorCollection"]; + }; + }; + }; + }; + /** + * Delete UI modification + * @description Deletes a UI modification. All the contexts that belong to the UI modification are deleted too. UI modification can only be deleted by Forge apps. + * + * **[Permissions](#permissions) required:** None. + */ + deleteUiModification: { + parameters: { + path: { + /** @description The ID of the UI modification. */ + uiModificationId: string; + }; + }; + responses: { + /** @description Returned if the UI modification is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request is not from a Forge app. */ + 403: { + content: never; + }; + /** @description Returned if the UI modification is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get avatars + * @description Returns the system and custom avatars for a project or issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * for custom project avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the avatar belongs to. + * * for custom issue type avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the issue type is used in. + * * for system avatars, none. + */ + getAvatars: { + parameters: { + path: { + /** @description The avatar type. */ + type: "project" | "issuetype"; + /** @description The ID of the item the avatar is associated with. */ + entityId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Avatars"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the avatar type is invalid, the associated item ID is missing, or the item is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Load avatar + * @description Loads a custom avatar for a project or issue type. + * + * Specify the avatar's local file location in the body of the request. Also, include the following headers: + * + * * `X-Atlassian-Token: no-check` To prevent XSRF protection blocking the request, for more information see [Special Headers](#special-request-headers). + * * `Content-Type: image/image type` Valid image types are JPEG, GIF, or PNG. + * + * For example: + * `curl --request POST ` + * + * `--user email@example.com: ` + * + * `--header 'X-Atlassian-Token: no-check' ` + * + * `--header 'Content-Type: image/< image_type>' ` + * + * `--data-binary "<@/path/to/file/with/your/avatar>" ` + * + * `--url 'https://your-domain.atlassian.net/rest/api/3/universal_avatar/type/{type}/owner/{entityId}'` + * + * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of the image. The length of the square's sides is set to the smaller of the height or width of the image. + * + * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size. + * + * After creating the avatar use: + * + * * [Update issue type](#api-rest-api-3-issuetype-id-put) to set it as the issue type's displayed avatar. + * * [Set project avatar](#api-rest-api-3-project-projectIdOrKey-avatar-put) to set it as the project's displayed avatar. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + storeAvatar: { + parameters: { + query: { + /** @description The X coordinate of the top-left corner of the crop region. */ + x?: number; + /** @description The Y coordinate of the top-left corner of the crop region. */ + y?: number; + /** @description The length of each side of the crop region. */ + size: number; + }; + path: { + /** @description The avatar type. */ + type: "project" | "issuetype"; + /** @description The ID of the item the avatar is associated with. */ + entityId: string; + }; + }; + requestBody: { + content: { + "*/*": unknown; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Avatar"]; + }; + }; + /** + * @description Returned if: + * + * * an image isn't included in the request. + * * the image type is unsupported. + * * the crop parameters extend the crop area beyond the edge of the image. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permissions. */ + 403: { + content: never; + }; + /** @description Returned if the avatar type is invalid, the associated item ID is missing, or the item is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete avatar + * @description Deletes an avatar from a project or issue type. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteAvatar: { + parameters: { + path: { + /** @description The avatar type. */ + type: "project" | "issuetype"; + /** @description The ID of the item the avatar is associated with. */ + owningObjectId: string; + /** @description The ID of the avatar. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user does not have permission to delete the avatar, the avatar is not deletable. */ + 403: { + content: never; + }; + /** @description Returned if the avatar type, associated item ID, or avatar ID is invalid. */ + 404: { + content: never; + }; + }; + }; + /** + * Get avatar image by type + * @description Returns the default project or issue type avatar image. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + getAvatarImageByType: { + parameters: { + query?: { + /** @description The size of the avatar image. If not provided the default size is returned. */ + size?: "xsmall" | "small" | "medium" | "large" | "xlarge"; + /** @description The format to return the avatar image in. If not provided the original content format is returned. */ + format?: "png" | "svg"; + }; + path: { + /** @description The icon type of the avatar. */ + type: "issuetype" | "project"; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["StreamingResponseBody"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if an avatar is not found or an avatar matching the requested size is not found. */ + 404: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + }; + }; + /** + * Get avatar image by ID + * @description Returns a project or issue type avatar image by ID. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * For system avatars, none. + * * For custom project avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the avatar belongs to. + * * For custom issue type avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the issue type is used in. + */ + getAvatarImageByID: { + parameters: { + query?: { + /** @description The size of the avatar image. If not provided the default size is returned. */ + size?: "xsmall" | "small" | "medium" | "large" | "xlarge"; + /** @description The format to return the avatar image in. If not provided the original content format is returned. */ + format?: "png" | "svg"; + }; + path: { + /** @description The icon type of the avatar. */ + type: "issuetype" | "project"; + /** @description The ID of the avatar. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["StreamingResponseBody"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if an avatar is not found or an avatar matching the requested size is not found. */ + 404: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + }; + }; + /** + * Get avatar image by owner + * @description Returns the avatar image for a project or issue type. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * For system avatars, none. + * * For custom project avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the avatar belongs to. + * * For custom issue type avatars, *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one project the issue type is used in. + */ + getAvatarImageByOwner: { + parameters: { + query?: { + /** @description The size of the avatar image. If not provided the default size is returned. */ + size?: "xsmall" | "small" | "medium" | "large" | "xlarge"; + /** @description The format to return the avatar image in. If not provided the original content format is returned. */ + format?: "png" | "svg"; + }; + path: { + /** @description The icon type of the avatar. */ + type: "issuetype" | "project"; + /** @description The ID of the project or issue type the avatar belongs to. */ + entityId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["StreamingResponseBody"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + /** @description Returned if an avatar is not found or an avatar matching the requested size is not found. */ + 404: { + content: { + "*/*": unknown; + "application/json": components["schemas"]["ErrorCollection"]; + "image/png": unknown; + "image/svg+xml": unknown; + }; + }; + }; + }; + /** + * Get user + * @description Returns a user. + * + * Privacy controls are applied to the response based on the user's preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getUser: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Required. */ + accountId?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide) for details. */ + username?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide) for details. */ + key?: string; + /** + * @description Use [expand](#expansion) to include additional information about users in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `groups` includes all groups and nested groups to which the user belongs. + * * `applicationRoles` includes details of all the applications to which the user has access. + */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have the *Browse users and groups* global permission. */ + 403: { + content: never; + }; + /** @description Returned if the user is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Create user + * @description Creates a user. This resource is retained for legacy compatibility. As soon as a more suitable alternative is available this resource will be deprecated. + * + * If the user exists and has access to Jira, the operation returns a 201 status. If the user exists but does not have access to Jira, the operation returns a 400 status. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createUser: { + /** @description Details about the user to be created. */ + requestBody: { + content: { + /** + * @example { + * "emailAddress": "mia@atlassian.com" + * } + */ + "application/json": components["schemas"]["NewUserDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["User"]; + }; + }; + /** @description Returned if the request is invalid or the number of licensed users is exceeded. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Delete user + * @description Deletes a user. If the operation completes successfully then the user is removed from Jira's user base. This operation does not delete the user's Atlassian account. + * + * **[Permissions](#permissions) required:** Site administration (that is, membership of the *site-admin* [group](https://confluence.atlassian.com/x/24xjL)). + */ + removeUser: { + parameters: { + query: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the user cannot be removed. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the user is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Find users assignable to projects + * @description Returns a list of users who can be assigned issues in one or more projects. The list may be restricted to users whose attributes match a string. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that can be assigned issues in the projects. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who can be assigned issues in the projects, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** None. + */ + findBulkAssignableUsers: { + parameters: { + query: { + /** @description A query string that is matched against user attributes, such as `displayName` and `emailAddress`, to find relevant users. The string can match the prefix of the attribute's value. For example, *query=john* matches a user with a `displayName` of *John Smith* and a user with an `emailAddress` of *johnson@example.com*. Required, unless `accountId` is specified. */ + query?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description A query string that is matched exactly against user `accountId`. Required, unless `query` is specified. */ + accountId?: string; + /** @description A list of project keys (case sensitive). This parameter accepts a comma-separated list. */ + projectKeys: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** + * @description Returned if: + * + * * `projectKeys` is missing. + * * `query` or `accountId` is missing. + * * `query` and `accountId` are provided. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if one or more of the projects is not found. */ + 404: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Find users assignable to issues + * @description Returns a list of users that can be assigned to an issue. Use this operation to find the list of users who can be assigned to: + * + * * a new issue, by providing the `projectKeyOrId`. + * * an updated issue, by providing the `issueKey`. + * * to an issue during a transition (workflow action), by providing the `issueKey` and the transition id in `actionDescriptorId`. You can obtain the IDs of an issue's valid transitions using the `transitions` option in the `expand` parameter of [ Get issue](#api-rest-api-3-issue-issueIdOrKey-get). + * + * In all these cases, you can pass an account ID to determine if a user can be assigned to an issue. The user is returned in the response if they can be assigned to the issue or issue transition. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that can be assigned the issue. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who can be assigned the issue, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Assign issues* [project permission](https://confluence.atlassian.com/x/yodKLg) + */ + findAssignableUsers: { + parameters: { + query?: { + /** @description A query string that is matched against user attributes, such as `displayName`, and `emailAddress`, to find relevant users. The string can match the prefix of the attribute's value. For example, *query=john* matches a user with a `displayName` of *John Smith* and a user with an `emailAddress` of *johnson@example.com*. Required, unless `username` or `accountId` is specified. */ + query?: string; + /** @description The sessionId of this request. SessionId is the same until the assignee is set. */ + sessionId?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description A query string that is matched exactly against user `accountId`. Required, unless `query` is specified. */ + accountId?: string; + /** @description The project ID or project key (case sensitive). Required, unless `issueKey` is specified. */ + project?: string; + /** @description The key of the issue. Required, unless `project` is specified. */ + issueKey?: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return. This operation may return less than the maximum number of items even if more are available. The operation fetches users up to the maximum and then, from the fetched users, returns only the users that can be assigned to the issue. */ + maxResults?: number; + /** @description The ID of the transition. */ + actionDescriptorId?: number; + recommend?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** + * @description Returned if: + * + * * `issueKey` or `project` is missing. + * * `query` or `accountId` is missing. + * * `query` and `accountId` are provided. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the project, issue, or transition is not found. */ + 404: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Bulk get users + * @description Returns a [paginated](#pagination) list of the users specified by one or more account IDs. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + bulkGetUsers: { + parameters: { + query: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string[]; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string[]; + /** @description The account ID of a user. To specify multiple users, pass multiple `accountId` parameters. For example, `accountId=5b10a2844c20165700ede21g&accountId=5b10ac8d82e05b22cc7d4ef5`. */ + accountId: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanUser"]; + }; + }; + /** @description Returned if `accountID` is missing. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get account IDs for users + * @description Returns the account IDs for the users specified in the `key` or `username` parameters. Note that multiple `key` or `username` parameters can be specified. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + bulkGetUsersMigration: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description Username of a user. To specify multiple users, pass multiple copies of this parameter. For example, `username=fred&username=barney`. Required if `key` isn't provided. Cannot be provided if `key` is present. */ + username?: string[]; + /** @description Key of a user. To specify multiple users, pass multiple copies of this parameter. For example, `key=fred&key=barney`. Required if `username` isn't provided. Cannot be provided if `username` is present. */ + key?: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["UserMigrationBean"][]; + }; + }; + /** @description Returned if `key` or `username` */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get user default columns + * @description Returns the default [issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If `accountId` is not passed in the request, the calling user's details are returned. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLgl), to get the column details for any user. + * * Permission to access Jira, to get the calling user's column details. + */ + getUserDefaultColumns: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This parameter is no longer available See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ColumnItem"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + /** @description Returned if the requested user is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set user default columns + * @description Sets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If an account ID is not passed, the calling user's default columns are set. If no column details are sent, then all default columns are removed. + * + * The parameters for this resource are expressed as HTML form data. For example, in curl: + * + * `curl -X PUT -d columns=summary -d columns=description https://your-domain.atlassian.net/rest/api/3/user/columns?accountId=5b10ac8d82e05b22cc7d4ef5'` + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user. + * * Permission to access Jira, to set the calling user's columns. + */ + setUserColumns: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + }; + }; + /** @description The ID of a column to set. To set multiple columns, send multiple `columns` parameters. */ + requestBody: { + content: { + "*/*": components["schemas"]["UserColumnRequestBody"]; + "multipart/form-data": components["schemas"]["UserColumnRequestBody"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + /** @description Returned if the requested user is not found. */ + 404: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + /** @description Returned if an invalid issue table column ID is sent. */ + 500: { + content: never; + }; + }; + }; + /** + * Reset user default columns + * @description Resets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user to the system default. If `accountId` is not passed, the calling user's default columns are reset. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user. + * * Permission to access Jira, to set the calling user's columns. + */ + resetUserColumns: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + }; + }; + /** + * Get user email + * @description Returns a user's email address. This API is only available to apps approved by Atlassian, according to these [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603). + */ + getUserEmail: { + parameters: { + query: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, `5b10ac8d82e05b22cc7d4ef5`. */ + accountId: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["UnrestrictedUserEmail"]; + }; + }; + /** @description Returned if the calling app is not approved to use this API. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing from the request (for example if a user is trying to access this API). */ + 401: { + content: never; + }; + /** @description Returned if a user with the given `accountId` doesn't exist */ + 404: { + content: never; + }; + /** @description Indicates the API is not currently enabled */ + 503: { + content: never; + }; + }; + }; + /** + * Get user email bulk + * @description Returns a user's email address. This API is only available to apps approved by Atlassian, according to these [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603). + */ + getUserEmailBulk: { + parameters: { + query: { + /** @description The account IDs of the users for which emails are required. An `accountId` is an identifier that uniquely identifies the user across all Atlassian products. For example, `5b10ac8d82e05b22cc7d4ef5`. Note, this should be treated as an opaque identifier (that is, do not assume any structure in the value). */ + accountId: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["UnrestrictedUserEmail"]; + }; + }; + /** @description Returned if the calling app is not approved to use this API. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect, or missing from the request (for example if a user is trying to access this API). */ + 401: { + content: never; + }; + /** @description Indicates the API is not currently enabled. */ + 503: { + content: never; + }; + }; + }; + /** + * Get user groups + * @description Returns the groups to which a user belongs. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getUserGroups: { + parameters: { + query: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["GroupName"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have the *Browse users and groups* global permission. */ + 403: { + content: never; + }; + /** @description Returned if the user is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Find users with permissions + * @description Returns a list of users who fulfill these criteria: + * + * * their user attributes match a search string. + * * they have a set of permissions for a project or issue. + * + * If no search string is provided, a list of all users with the permissions is returned. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the search string and have permission for the project or issue. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the search string and have permission for the project or issue, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to get users for any project. + * * *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for a project, to get users for that project. + */ + findUsersWithAllPermissions: { + parameters: { + query: { + /** @description A query string that is matched against user attributes, such as `displayName` and `emailAddress`, to find relevant users. The string can match the prefix of the attribute's value. For example, *query=john* matches a user with a `displayName` of *John Smith* and a user with an `emailAddress` of *johnson@example.com*. Required, unless `accountId` is specified. */ + query?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description A query string that is matched exactly against user `accountId`. Required, unless `query` is specified. */ + accountId?: string; + /** + * @description A comma separated list of permissions. Permissions can be specified as any: + * + * * permission returned by [Get all permissions](#api-rest-api-3-permissions-get). + * * custom project permission added by Connect apps. + * * (deprecated) one of the following: + * + * * ASSIGNABLE\_USER + * * ASSIGN\_ISSUE + * * ATTACHMENT\_DELETE\_ALL + * * ATTACHMENT\_DELETE\_OWN + * * BROWSE + * * CLOSE\_ISSUE + * * COMMENT\_DELETE\_ALL + * * COMMENT\_DELETE\_OWN + * * COMMENT\_EDIT\_ALL + * * COMMENT\_EDIT\_OWN + * * COMMENT\_ISSUE + * * CREATE\_ATTACHMENT + * * CREATE\_ISSUE + * * DELETE\_ISSUE + * * EDIT\_ISSUE + * * LINK\_ISSUE + * * MANAGE\_WATCHER\_LIST + * * MODIFY\_REPORTER + * * MOVE\_ISSUE + * * PROJECT\_ADMIN + * * RESOLVE\_ISSUE + * * SCHEDULE\_ISSUE + * * SET\_ISSUE\_SECURITY + * * TRANSITION\_ISSUE + * * VIEW\_VERSION\_CONTROL + * * VIEW\_VOTERS\_AND\_WATCHERS + * * VIEW\_WORKFLOW\_READONLY + * * WORKLOG\_DELETE\_ALL + * * WORKLOG\_DELETE\_OWN + * * WORKLOG\_EDIT\_ALL + * * WORKLOG\_EDIT\_OWN + * * WORK\_ISSUE + */ + permissions: string; + /** @description The issue key for the issue. */ + issueKey?: string; + /** @description The project key for the project (case sensitive). */ + projectKey?: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** + * @description Returned if: + * + * * `issueKey` or `projectKey` is missing. + * * `query` or `accountId` is missing. + * * `query` and `accountId` are provided. + * * `permissions` is empty or contains an invalid entry. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the issue or project is not found. */ + 404: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Find users for picker + * @description Returns a list of users whose attributes match the query term. The returned object includes the `html` field where the matched query term is highlighted with the HTML strong tag. A list of account IDs can be provided to exclude users from the results. + * + * This operation takes the users in the range defined by `maxResults`, up to the thousandth user, and then returns only the users from that range that match the query term. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the query term, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by users without the required permission return search results for an exact name match only. + */ + findUsersForPicker: { + parameters: { + query: { + /** @description A query string that is matched against user attributes, such as `displayName`, and `emailAddress`, to find relevant users. The string can match the prefix of the attribute's value. For example, *query=john* matches a user with a `displayName` of *John Smith* and a user with an `emailAddress` of *johnson@example.com*. */ + query: string; + /** @description The maximum number of items to return. The total number of matched users is returned in `total`. */ + maxResults?: number; + /** @description Include the URI to the user's avatar. */ + showAvatar?: boolean; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + exclude?: string[]; + /** @description A list of account IDs to exclude from the search results. This parameter accepts a comma-separated list. Multiple account IDs can also be provided using an ampersand-separated list. For example, `excludeAccountIds=5b10a2844c20165700ede21g,5b10a0effa615349cb016cd8&excludeAccountIds=5b10ac8d82e05b22cc7d4ef5`. Cannot be provided with `exclude`. */ + excludeAccountIds?: string[]; + avatarSize?: string; + excludeConnectUsers?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["FoundUsers"]; + }; + }; + /** @description Returned if `exclude` and `excludeAccountIds` are provided. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Get user property keys + * @description Returns the keys of all properties for a user. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to access the property keys on any user. + * * Access to Jira, to access the calling user's property keys. + */ + getUserPropertyKeys: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + userKey?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if `accountId` is missing. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + /** @description Returned if the user is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get user property + * @description Returns the value of a user's property. If no property key is provided [Get user property keys](#api-rest-api-3-user-properties-get) is called. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to get a property from any user. + * * Access to Jira, to get a property from the calling user's record. + */ + getUserProperty: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + userKey?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + }; + path: { + /** @description The key of the user's property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if `accountId` is missing. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + /** @description Returned if the user is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set user property + * @description Sets the value of a user's property. Use this resource to store custom data against a user. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to set a property on any user. + * * Access to Jira, to set a property on the calling user's record. + */ + setUserProperty: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + userKey?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + }; + path: { + /** @description The key of the user's property. The maximum length is 255 characters. */ + propertyKey: string; + }; + }; + /** @description The request containing the value of the property. The value has to a valid, non-empty JSON array. The maximum length is 32768 characters. */ + requestBody: { + content: { + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the user property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the user property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if `accountId` is missing. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + /** @description Returned if the user is not found. */ + 404: { + content: never; + }; + /** @description Returned if the property key is not specified. */ + 405: { + content: never; + }; + }; + }; + /** + * Delete user property + * @description Deletes a property from a user. + * + * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in Jira. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg), to delete a property from any user. + * * Access to Jira, to delete a property from the calling user's record. + */ + deleteUserProperty: { + parameters: { + query?: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + userKey?: string; + /** @description This parameter is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + }; + path: { + /** @description The key of the user's property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the user property is deleted. */ + 204: { + content: never; + }; + /** @description Returned if `accountId` is missing. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission or is not accessing their user record. */ + 403: { + content: never; + }; + /** @description Returned if the user or the property is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Find users + * @description Returns a list of active users that match the search string and property. + * + * This operation first applies a filter to match the search string and property, and then takes the filtered users in the range defined by `startAt` and `maxResults`, up to the thousandth user. To get all the users who match the search string and property, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * This operation can be accessed anonymously. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls or calls by users without the required permission return empty search results. + */ + findUsers: { + parameters: { + query?: { + /** @description A query string that is matched against user attributes ( `displayName`, and `emailAddress`) to find relevant users. The string can match the prefix of the attribute's value. For example, *query=john* matches a user with a `displayName` of *John Smith* and a user with an `emailAddress` of *johnson@example.com*. Required, unless `accountId` or `property` is specified. */ + query?: string; + username?: string; + /** @description A query string that is matched exactly against a user `accountId`. Required, unless `query` or `property` is specified. */ + accountId?: string; + /** @description The index of the first item to return in a page of filtered results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description A query string used to search properties. Property keys are specified by path, so property keys containing dot (.) or equals (=) characters cannot be used. The query string cannot be specified using a JSON object. Example: To search for the value of `nested` from `{"something":{"nested":1,"other":2}}` use `thepropertykey.something.nested=1`. Required, unless `accountId` or `query` is specified. */ + property?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** + * @description Returned if: + * + * * `accountId`, `query` or `property` is missing. + * * `query` and `accountId` are provided. + * * `property` parameter is not valid. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Find users by query + * @description Finds users with a structured query and returns a [paginated](#pagination) list of user details. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the structured query. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * + * The query statements are: + * + * * `is assignee of PROJ` Returns the users that are assignees of at least one issue in project *PROJ*. + * * `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues *PROJ-1* or *PROJ-2*. + * * `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues *PROJ-1* or *PROJ-2*. + * * `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues *PROJ-1* or *PROJ-2*. + * * `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues *PROJ-1* or *PROJ-2*. + * * `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues *PROJ-1* or *PROJ-2*. + * * `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues *PROJ-1* or *PROJ-2*. + * * `[propertyKey].entity.property.path is "property value"` Returns users with the entity property value. + * + * The list of issues can be extended as needed, as in *(PROJ-1, PROJ-2, ... PROJ-n)*. Statements can be combined using the `AND` and `OR` operators to form more complex queries. For example: + * + * `is assignee of PROJ AND [propertyKey].entity.property.path is "property value"` + */ + findUsersByQuery: { + parameters: { + query: { + /** @description The search query. */ + query: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanUser"]; + }; + }; + /** @description Returned if the query is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the search is timed out. */ + 408: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Find user keys by query + * @description Finds users with a structured query and returns a [paginated](#pagination) list of user keys. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the structured query. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + * + * The query statements are: + * + * * `is assignee of PROJ` Returns the users that are assignees of at least one issue in project *PROJ*. + * * `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues *PROJ-1* or *PROJ-2*. + * * `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues *PROJ-1* or *PROJ-2*. + * * `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues *PROJ-1* or *PROJ-2*. + * * `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues *PROJ-1* or *PROJ-2*. + * * `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues *PROJ-1* or *PROJ-2*. + * * `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues *PROJ-1* or *PROJ-2*. + * * `[propertyKey].entity.property.path is "property value"` Returns users with the entity property value. + * + * The list of issues can be extended as needed, as in *(PROJ-1, PROJ-2, ... PROJ-n)*. Statements can be combined using the `AND` and `OR` operators to form more complex queries. For example: + * + * `is assignee of PROJ AND [propertyKey].entity.property.path is "property value"` + */ + findUserKeysByQuery: { + parameters: { + query: { + /** @description The search query. */ + query: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResult?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanUserKey"]; + }; + }; + /** @description Returned if the query is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the search is timed out. */ + 408: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Find users with browse permission + * @description Returns a list of users who fulfill these criteria: + * + * * their user attributes match a search string. + * * they have permission to browse issues. + * + * Use this resource to find users who can browse: + * + * * an issue, by providing the `issueKey`. + * * any issue in a project, by providing the `projectKey`. + * + * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and then returns only the users from that range that match the search string and have permission to browse issues. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the search string and have permission to browse issues, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by users without the required permission return empty search results. + */ + findUsersWithBrowsePermission: { + parameters: { + query?: { + /** @description A query string that is matched against user attributes, such as `displayName` and `emailAddress`, to find relevant users. The string can match the prefix of the attribute's value. For example, *query=john* matches a user with a `displayName` of *John Smith* and a user with an `emailAddress` of *johnson@example.com*. Required, unless `accountId` is specified. */ + query?: string; + /** @description This parameter is no longer available. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + username?: string; + /** @description A query string that is matched exactly against user `accountId`. Required, unless `query` is specified. */ + accountId?: string; + /** @description The issue key for the issue. Required, unless `projectKey` is specified. */ + issueKey?: string; + /** @description The project key for the project (case sensitive). Required, unless `issueKey` is specified. */ + projectKey?: string; + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** + * @description Returned if: + * + * * `issueKey` or `projectKey` is missing. + * * `query` or `accountId` is missing. + * * `query` and `accountId` are provided. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the issue or project is not found. */ + 404: { + content: never; + }; + /** @description Returned if the rate limit is exceeded. User search endpoints share a collective rate limit for the tenant, in addition to Jira's normal rate limiting you may receive a rate limit for user search. Please respect the Retry-After header. */ + 429: { + content: never; + }; + }; + }; + /** + * Get all users default + * @description Returns a list of all users, including active users, inactive users and previously deleted users that have an Atlassian account. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllUsersDefault: { + parameters: { + query?: { + /** @description The index of the first item to return. */ + startAt?: number; + /** @description The maximum number of items to return. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the request takes longer than 10 seconds or is interrupted. */ + 409: { + content: never; + }; + }; + }; + /** + * Get all users + * @description Returns a list of all users, including active users, inactive users and previously deleted users that have an Atlassian account. + * + * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that the user's email address is hidden. See the [Profile visibility overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details. + * + * **[Permissions](#permissions) required:** *Browse users and groups* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllUsers: { + parameters: { + query?: { + /** @description The index of the first item to return. */ + startAt?: number; + /** @description The maximum number of items to return. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user doesn't have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the request takes longer than 10 seconds or is interrupted. */ + 409: { + content: never; + }; + }; + }; + /** + * Create version + * @description Creates a project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project the version is added to. + */ + createVersion: { + requestBody: { + content: { + /** + * @example { + * "archived": false, + * "description": "An excellent version", + * "name": "New Version 1", + * "projectId": 10000, + * "releaseDate": "2010-07-06", + * "released": true + * } + */ + "application/json": components["schemas"]["Version"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["Version"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the project is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get version + * @description Returns a project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version. + */ + getVersion: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information about version in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `operations` Returns the list of operations available for this version. + * * `issuesstatus` Returns the count of issues in this version for each of the status categories *to do*, *in progress*, *done*, and *unmapped*. The *unmapped* property represents the number of issues with a status other than *to do*, *in progress*, and *done*. + * * `driver` Returns the Atlassian account ID of the version driver. + * * `approvers` Returns a list containing the Atlassian account IDs of approvers for this version. + */ + expand?: string; + }; + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Version"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the version is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + }; + }; + /** + * Update version + * @description Updates a project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + updateVersion: { + parameters: { + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "archived": false, + * "description": "An excellent version", + * "id": "10000", + * "name": "New Version 1", + * "overdue": true, + * "projectId": 10000, + * "releaseDate": "2010-07-06", + * "released": true, + * "self": "https://your-domain.atlassian.net/rest/api/~ver~/version/10000", + * "userReleaseDate": "6/Jul/2010" + * } + */ + "application/json": components["schemas"]["Version"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Version"]; + }; + }; + /** + * @description Returned if: + * + * * the request is invalid. + * * the user does not have the required permissions. + */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the version is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete version + * @deprecated + * @description Deletes a project version. + * + * Deprecated, use [ Delete and replace version](#api-rest-api-3-version-id-removeAndSwap-post) that supports swapping version values in custom fields, in addition to the swapping for `fixVersion` and `affectedVersion` provided in this resource. + * + * Alternative versions can be provided to update issues that use the deleted version in `fixVersion` or `affectedVersion`. If alternatives are not provided, occurrences of `fixVersion` and `affectedVersion` that contain the deleted version are cleared. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + deleteVersion: { + parameters: { + query?: { + /** @description The ID of the version to update `fixVersion` to when the field contains the deleted version. The replacement version must be in the same project as the version being deleted and cannot be the version being deleted. */ + moveFixIssuesTo?: string; + /** @description The ID of the version to update `affectedVersion` to when the field contains the deleted version. The replacement version must be in the same project as the version being deleted and cannot be the version being deleted. */ + moveAffectedIssuesTo?: string; + }; + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + responses: { + /** @description Returned if the version is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** + * @description Returned if: + * + * * the authentication credentials are incorrect. + * * the user does not have the required permissions. + */ + 401: { + content: never; + }; + /** @description Returned if the version is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Merge versions + * @description Merges two project versions. The merge is completed by deleting the version specified in `id` and replacing any occurrences of its ID in `fixVersion` with the version ID specified in `moveIssuesTo`. + * + * Consider using [ Delete and replace version](#api-rest-api-3-version-id-removeAndSwap-post) instead. This resource supports swapping version values in `fixVersion`, `affectedVersion`, and custom fields. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + mergeVersions: { + parameters: { + path: { + /** @description The ID of the version to delete. */ + id: string; + /** @description The ID of the version to merge into. */ + moveIssuesTo: string; + }; + }; + responses: { + /** @description Returned if the version is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** + * @description Returned if: + * + * * the authentication credentials are incorrect or missing. + * * the user does not have the required permissions. + */ + 401: { + content: never; + }; + /** @description Returned if the version to be deleted or the version to merge to are not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Move version + * @description Modifies the version's sequence within the project, which affects the display order of the versions in Jira. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* project permission for the project that contains the version. + */ + moveVersion: { + parameters: { + path: { + /** @description The ID of the version to be moved. */ + id: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "after": "https://your-domain.atlassian.net/rest/api/~ver~/version/10000" + * } + */ + "application/json": components["schemas"]["VersionMoveBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Version"]; + }; + }; + /** + * @description Returned if: + * + * * no body parameters are provided. + * * `after` and `position` are provided. + * * `position` is invalid. + */ + 400: { + content: never; + }; + /** + * @description Returned if: + * + * * the authentication credentials are incorrect or missing + * * the user does not have the required commissions. + */ + 401: { + content: never; + }; + /** @description Returned if the version or move after version are not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get version's related issues count + * @description Returns the following counts for a version: + * + * * Number of issues where the `fixVersion` is set to the version. + * * Number of issues where the `affectedVersion` is set to the version. + * * Number of issues where a version custom field is set to the version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* project permission for the project that contains the version. + */ + getVersionRelatedIssues: { + parameters: { + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["VersionIssueCounts"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the version is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get related work + * @description Returns related work items for the given version id. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version. + */ + getRelatedWork: { + parameters: { + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["VersionRelatedWork"][]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the version is not found or the user does not have the necessary permission. */ + 404: { + content: never; + }; + /** @description Returned if reading related work fails */ + 500: { + content: never; + }; + }; + }; + /** + * Update related work + * @description Updates the given related work. You can only update generic link related works via Rest APIs. Any archived version related works can't be edited. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Resolve issues:* and *Edit issues* [Managing project permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the project that contains the version. + */ + updateRelatedWork: { + parameters: { + path: { + /** @description The ID of the version to update the related work on. For the related work id, pass it to the input JSON. */ + id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["VersionRelatedWork"]; + }; + }; + responses: { + /** @description Returned if the request is successful together with updated related work. */ + 200: { + content: { + "application/json": components["schemas"]["VersionRelatedWork"]; + }; + }; + /** @description Returned if the request data is invalid */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the version or the related work is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Create related work + * @description Creates a related work for the given version. You can only create a generic link type of related works via this API. relatedWorkId will be auto-generated UUID, that does not need to be provided. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Resolve issues:* and *Edit issues* [Managing project permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the project that contains the version. + */ + createRelatedWork: { + parameters: { + path: { + id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["VersionRelatedWork"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["VersionRelatedWork"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the version is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete and replace version + * @description Deletes a project version. + * + * Alternative versions can be provided to update issues that use the deleted version in `fixVersion`, `affectedVersion`, or any version picker custom fields. If alternatives are not provided, occurrences of `fixVersion`, `affectedVersion`, and any version picker custom field, that contain the deleted version, are cleared. Any replacement version must be in the same project as the version being deleted and cannot be the version being deleted. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version. + */ + deleteAndReplaceVersion: { + parameters: { + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["DeleteAndReplaceVersionBean"]; + }; + }; + responses: { + /** @description Returned if the version is deleted. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the version to delete is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get version's unresolved issues count + * @description Returns counts of the issues and unresolved issues for the project version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Browse projects* project permission for the project that contains the version. + */ + getVersionUnresolvedIssues: { + parameters: { + path: { + /** @description The ID of the version. */ + id: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["VersionUnresolvedIssuesCount"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** + * @description Returned if: + * + * * the version is not found. + * * the user does not have the required permissions. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete related work + * @description Deletes the given related work for the given version. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required:** *Resolve issues:* and *Edit issues* [Managing project permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the project that contains the version. + */ + deleteRelatedWork: { + parameters: { + path: { + /** @description The ID of the version that the target related work belongs to. */ + versionId: string; + /** @description The ID of the related work to delete. */ + relatedWorkId: string; + }; + }; + responses: { + /** @description Returned if the related work is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** + * @description Returned if + * + * the authentication credentials are incorrect. + */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: never; + }; + /** @description Returned if the version/related work is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get dynamic webhooks for app + * @description Returns a [paginated](#pagination) list of the webhooks registered by the calling app. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + getDynamicWebhooksForApp: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanWebhook"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller isn't an app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Register dynamic webhooks + * @description Registers webhooks. + * + * **NOTE:** for non-public OAuth apps, webhooks are delivered only if there is a match between the app owner and the user who registered a dynamic webhook. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + registerDynamicWebhooks: { + requestBody: { + content: { + /** + * @example { + * "url": "https://your-app.example.com/webhook-received", + * "webhooks": [ + * { + * "events": [ + * "jira:issue_created", + * "jira:issue_updated" + * ], + * "fieldIdsFilter": [ + * "summary", + * "customfield_10029" + * ], + * "jqlFilter": "project = PROJ" + * }, + * { + * "events": [ + * "jira:issue_deleted" + * ], + * "jqlFilter": "project IN (PROJ, EXP) AND status = done" + * }, + * { + * "events": [ + * "issue_property_set" + * ], + * "issuePropertyKeysFilter": [ + * "my-issue-property-key" + * ], + * "jqlFilter": "project = PROJ" + * } + * ] + * } + */ + "application/json": components["schemas"]["WebhookRegistrationDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ContainerForRegisteredWebhooks"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller isn't an app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Delete webhooks by ID + * @description Removes webhooks by ID. Only webhooks registered by the calling app are removed. If webhooks created by other apps are specified, they are ignored. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + deleteWebhookById: { + requestBody: { + content: { + /** + * @example { + * "webhookIds": [ + * 10000, + * 10001, + * 10042 + * ] + * } + */ + "application/json": components["schemas"]["ContainerForWebhookIDs"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 202: { + content: never; + }; + /** @description Returned if the list of webhook IDs is missing. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller isn't an app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get failed webhooks + * @description Returns webhooks that have recently failed to be delivered to the requesting app after the maximum number of retries. + * + * After 72 hours the failure may no longer be returned by this operation. + * + * The oldest failure is returned first. + * + * This method uses a cursor-based pagination. To request the next page use the failure time of the last webhook on the list as the `failedAfter` value or use the URL provided in `next`. + * + * **[Permissions](#permissions) required:** Only [Connect apps](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) can use this operation. + */ + getFailedWebhooks: { + parameters: { + query?: { + /** @description The maximum number of webhooks to return per page. If obeying the maxResults directive would result in records with the same failure time being split across pages, the directive is ignored and all records with the same failure time included on the page. */ + maxResults?: number; + /** @description The time after which any webhook failure must have occurred for the record to be returned, expressed as milliseconds since the UNIX epoch. */ + after?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["FailedWebhooks"]; + }; + }; + /** @description 400 response */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller is not a Connect app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Extend webhook life + * @description Extends the life of webhook. Webhooks registered through the REST API expire after 30 days. Call this operation to keep them alive. + * + * Unrecognized webhook IDs (those that are not found or belong to other apps) are ignored. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation. + */ + refreshWebhooks: { + requestBody: { + content: { + /** + * @example { + * "webhookIds": [ + * 10000, + * 10001, + * 10042 + * ] + * } + */ + "application/json": components["schemas"]["ContainerForWebhookIDs"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WebhooksExpirationDate"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller isn't an app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get all workflows + * @deprecated + * @description Returns all workflows in Jira or a workflow. Deprecated, use [Get workflows paginated](#api-rest-api-3-workflow-search-get). + * + * If the `workflowName` parameter is specified, the workflow is returned as an object (not in an array). Otherwise, an array of workflow objects is returned. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllWorkflows: { + parameters: { + query?: { + /** @description The name of the workflow to be returned. Only one workflow can be specified. */ + workflowName?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DeprecatedWorkflow"][]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 401: { + content: never; + }; + }; + }; + /** + * Create workflow + * @deprecated + * @description Creates a workflow. You can define transition rules using the shapes detailed in the following sections. If no transitional rules are specified the default system transition rules are used. Note: This only applies to company-managed scoped workflows. Use [bulk create workflows](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflows/#api-rest-api-3-workflows-create-post) to create both team and company-managed scoped workflows. + * + * #### Conditions #### + * + * Conditions enable workflow rules that govern whether a transition can execute. + * + * ##### Always false condition ##### + * + * A condition that always fails. + * + * { + * "type": "AlwaysFalseCondition" + * } + * + * ##### Block transition until approval ##### + * + * A condition that blocks issue transition if there is a pending approval. + * + * { + * "type": "BlockInProgressApprovalCondition" + * } + * + * ##### Compare number custom field condition ##### + * + * A condition that allows transition if a comparison between a number custom field and a value is true. + * + * { + * "type": "CompareNumberCFCondition", + * "configuration": { + * "comparator": "=", + * "fieldId": "customfield_10029", + * "fieldValue": 2 + * } + * } + * + * * `comparator` One of the supported comparator: `=`, `>`, and `<`. + * * `fieldId` The custom numeric field ID. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:float` + * * `com.pyxis.greenhopper.jira:jsw-story-points` + * * `fieldValue` The value for comparison. + * + * ##### Hide from user condition ##### + * + * A condition that hides a transition from users. The transition can only be triggered from a workflow function or REST API operation. + * + * { + * "type": "RemoteOnlyCondition" + * } + * + * ##### Only assignee condition ##### + * + * A condition that allows only the assignee to execute a transition. + * + * { + * "type": "AllowOnlyAssignee" + * } + * + * ##### Only Bamboo notifications workflow condition (deprecated) ##### + * + * A condition that makes the transition available only to Bamboo build notifications. + * + * { + * "type": "OnlyBambooNotificationsCondition" + * } + * + * ##### Only reporter condition ##### + * + * A condition that allows only the reporter to execute a transition. + * + * { + * "type": "AllowOnlyReporter" + * } + * + * ##### Permission condition ##### + * + * A condition that allows only users with a permission to execute a transition. + * + * { + * "type": "PermissionCondition", + * "configuration": { + * "permissionKey": "BROWSE_PROJECTS" + * } + * } + * + * * `permissionKey` The permission required to perform the transition. Allowed values: [built-in](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions) or app defined permissions. + * + * ##### Previous status condition ##### + * + * A condition that allows a transition based on whether an issue has or has not transitioned through a status. + * + * { + * "type": "PreviousStatusCondition", + * "configuration": { + * "ignoreLoopTransitions": true, + * "includeCurrentStatus": true, + * "mostRecentStatusOnly": true, + * "reverseCondition": true, + * "previousStatus": { + * "id": "5" + * } + * } + * } + * + * By default this condition allows the transition if the status, as defined by its ID in the `previousStatus` object, matches any previous issue status, unless: + * + * * `ignoreLoopTransitions` is `true`, then loop transitions (from and to the same status) are ignored. + * * `includeCurrentStatus` is `true`, then the current issue status is also checked. + * * `mostRecentStatusOnly` is `true`, then only the issue's preceding status (the one immediately before the current status) is checked. + * * `reverseCondition` is `true`, then the status must not be present. + * + * ##### Separation of duties condition ##### + * + * A condition that prevents a user to perform the transition, if the user has already performed a transition on the issue. + * + * { + * "type": "SeparationOfDutiesCondition", + * "configuration": { + * "fromStatus": { + * "id": "5" + * }, + * "toStatus": { + * "id": "6" + * } + * } + * } + * + * * `fromStatus` OPTIONAL. An object containing the ID of the source status of the transition that is blocked. If omitted any transition to `toStatus` is blocked. + * * `toStatus` An object containing the ID of the target status of the transition that is blocked. + * + * ##### Subtask blocking condition ##### + * + * A condition that blocks transition on a parent issue if any of its subtasks are in any of one or more statuses. + * + * { + * "type": "SubTaskBlockingCondition", + * "configuration": { + * "statuses": [ + * { + * "id": "1" + * }, + * { + * "id": "3" + * } + * ] + * } + * } + * + * * `statuses` A list of objects containing status IDs. + * + * ##### User is in any group condition ##### + * + * A condition that allows users belonging to any group from a list of groups to execute a transition. + * + * { + * "type": "UserInAnyGroupCondition", + * "configuration": { + * "groups": [ + * "administrators", + * "atlassian-addons-admin" + * ] + * } + * } + * + * * `groups` A list of group names. + * + * ##### User is in any project role condition ##### + * + * A condition that allows only users with at least one project roles from a list of project roles to execute a transition. + * + * { + * "type": "InAnyProjectRoleCondition", + * "configuration": { + * "projectRoles": [ + * { + * "id": "10002" + * }, + * { + * "id": "10003" + * }, + * { + * "id": "10012" + * }, + * { + * "id": "10013" + * } + * ] + * } + * } + * + * * `projectRoles` A list of objects containing project role IDs. + * + * ##### User is in custom field condition ##### + * + * A condition that allows only users listed in a given custom field to execute the transition. + * + * { + * "type": "UserIsInCustomFieldCondition", + * "configuration": { + * "allowUserInField": false, + * "fieldId": "customfield_10010" + * } + * } + * + * * `allowUserInField` If `true` only a user who is listed in `fieldId` can perform the transition, otherwise, only a user who is not listed in `fieldId` can perform the transition. + * * `fieldId` The ID of the field containing the list of users. + * + * ##### User is in group condition ##### + * + * A condition that allows users belonging to a group to execute a transition. + * + * { + * "type": "UserInGroupCondition", + * "configuration": { + * "group": "administrators" + * } + * } + * + * * `group` The name of the group. + * + * ##### User is in group custom field condition ##### + * + * A condition that allows users belonging to a group specified in a custom field to execute a transition. + * + * { + * "type": "InGroupCFCondition", + * "configuration": { + * "fieldId": "customfield_10012" + * } + * } + * + * * `fieldId` The ID of the field. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:multigrouppicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:grouppicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:select` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multiselect` + * * `com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes` + * * `com.pyxis.greenhopper.jira:gh-epic-status` + * + * ##### User is in project role condition ##### + * + * A condition that allows users with a project role to execute a transition. + * + * { + * "type": "InProjectRoleCondition", + * "configuration": { + * "projectRole": { + * "id": "10002" + * } + * } + * } + * + * * `projectRole` An object containing the ID of a project role. + * + * ##### Value field condition ##### + * + * A conditions that allows a transition to execute if the value of a field is equal to a constant value or simply set. + * + * { + * "type": "ValueFieldCondition", + * "configuration": { + * "fieldId": "assignee", + * "fieldValue": "qm:6e1ecee6-8e64-4db6-8c85-916bb3275f51:54b56885-2bd2-4381-8239-78263442520f", + * "comparisonType": "NUMBER", + * "comparator": "=" + * } + * } + * + * * `fieldId` The ID of a field used in the comparison. + * * `fieldValue` The expected value of the field. + * * `comparisonType` The type of the comparison. Allowed values: `STRING`, `NUMBER`, `DATE`, `DATE_WITHOUT_TIME`, or `OPTIONID`. + * * `comparator` One of the supported comparator: `>`, `>=`, `=`, `<=`, `<`, `!=`. + * + * **Notes:** + * + * * If you choose the comparison type `STRING`, only `=` and `!=` are valid options. + * * You may leave `fieldValue` empty when comparison type is `!=` to indicate that a value is required in the field. + * * For date fields without time format values as `yyyy-MM-dd`, and for those with time as `yyyy-MM-dd HH:mm`. For example, for July 16 2021 use `2021-07-16`, for 8:05 AM use `2021-07-16 08:05`, and for 4 PM: `2021-07-16 16:00`. + * + * #### Validators #### + * + * Validators check that any input made to the transition is valid before the transition is performed. + * + * ##### Date field validator ##### + * + * A validator that compares two dates. + * + * { + * "type": "DateFieldValidator", + * "configuration": { + * "comparator": ">", + * "date1": "updated", + * "date2": "created", + * "expression": "1d", + * "includeTime": true + * } + * } + * + * * `comparator` One of the supported comparator: `>`, `>=`, `=`, `<=`, `<`, or `!=`. + * * `date1` The date field to validate. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `date2` The second date field. Required, if `expression` is not passed. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `expression` An expression specifying an offset. Required, if `date2` is not passed. Offsets are built with a number, with `-` as prefix for the past, and one of these time units: `d` for day, `w` for week, `m` for month, or `y` for year. For example, -2d means two days into the past and 1w means one week into the future. The `now` keyword enables a comparison with the current date. + * * `includeTime` If `true`, then the time part of the data is included for the comparison. If the field doesn't have a time part, 00:00:00 is used. + * + * ##### Windows date validator ##### + * + * A validator that checks that a date falls on or after a reference date and before or on the reference date plus a number of days. + * + * { + * "type": "WindowsDateValidator", + * "configuration": { + * "date1": "customfield_10009", + * "date2": "created", + * "windowsDays": 5 + * } + * } + * + * * `date1` The date field to validate. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `date2` The reference date. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker` + * * `com.atlassian.jira.plugin.system.customfieldtypes:datetime` + * * `com.atlassian.jpo:jpo-custom-field-baseline-end` + * * `com.atlassian.jpo:jpo-custom-field-baseline-start` + * * `duedate` + * * `created` + * * `updated` + * * `resolutiondate` + * * `windowsDays` A positive integer indicating a number of days. + * + * ##### Field required validator ##### + * + * A validator that checks fields are not empty. By default, if a field is not included in the current context it's ignored and not validated. + * + * { + * "type": "FieldRequiredValidator", + * "configuration": { + * "ignoreContext": true, + * "errorMessage": "Hey", + * "fieldIds": [ + * "versions", + * "customfield_10037", + * "customfield_10003" + * ] + * } + * } + * + * * `ignoreContext` If `true`, then the context is ignored and all the fields are validated. + * * `errorMessage` OPTIONAL. The error message displayed when one or more fields are empty. A default error message is shown if an error message is not provided. + * * `fieldIds` The list of fields to validate. + * + * ##### Field changed validator ##### + * + * A validator that checks that a field value is changed. However, this validation can be ignored for users from a list of groups. + * + * { + * "type": "FieldChangedValidator", + * "configuration": { + * "fieldId": "comment", + * "errorMessage": "Hey", + * "exemptedGroups": [ + * "administrators", + * "atlassian-addons-admin" + * ] + * } + * } + * + * * `fieldId` The ID of a field. + * * `errorMessage` OPTIONAL. The error message displayed if the field is not changed. A default error message is shown if the error message is not provided. + * * `exemptedGroups` OPTIONAL. The list of groups. + * + * ##### Field has single value validator ##### + * + * A validator that checks that a multi-select field has only one value. Optionally, the validation can ignore values copied from subtasks. + * + * { + * "type": "FieldHasSingleValueValidator", + * "configuration": { + * "fieldId": "attachment, + * "excludeSubtasks": true + * } + * } + * + * * `fieldId` The ID of a field. + * * `excludeSubtasks` If `true`, then values copied from subtasks are ignored. + * + * ##### Parent status validator ##### + * + * A validator that checks the status of the parent issue of a subtask. Ìf the issue is not a subtask, no validation is performed. + * + * { + * "type": "ParentStatusValidator", + * "configuration": { + * "parentStatuses": [ + * { + * "id":"1" + * }, + * { + * "id":"2" + * } + * ] + * } + * } + * + * * `parentStatus` The list of required parent issue statuses. + * + * ##### Permission validator ##### + * + * A validator that checks the user has a permission. + * + * { + * "type": "PermissionValidator", + * "configuration": { + * "permissionKey": "ADMINISTER_PROJECTS" + * } + * } + * + * * `permissionKey` The permission required to perform the transition. Allowed values: [built-in](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions) or app defined permissions. + * + * ##### Previous status validator ##### + * + * A validator that checks if the issue has held a status. + * + * { + * "type": "PreviousStatusValidator", + * "configuration": { + * "mostRecentStatusOnly": false, + * "previousStatus": { + * "id": "15" + * } + * } + * } + * + * * `mostRecentStatusOnly` If `true`, then only the issue's preceding status (the one immediately before the current status) is checked. + * * `previousStatus` An object containing the ID of an issue status. + * + * ##### Regular expression validator ##### + * + * A validator that checks the content of a field against a regular expression. + * + * { + * "type": "RegexpFieldValidator", + * "configuration": { + * "regExp": "[0-9]", + * "fieldId": "customfield_10029" + * } + * } + * + * * `regExp`A regular expression. + * * `fieldId` The ID of a field. Allowed field types: + * + * * `com.atlassian.jira.plugin.system.customfieldtypes:select` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multiselect` + * * `com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons` + * * `com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes` + * * `com.atlassian.jira.plugin.system.customfieldtypes:textarea` + * * `com.atlassian.jira.plugin.system.customfieldtypes:textfield` + * * `com.atlassian.jira.plugin.system.customfieldtypes:url` + * * `com.atlassian.jira.plugin.system.customfieldtypes:float` + * * `com.pyxis.greenhopper.jira:jsw-story-points` + * * `com.pyxis.greenhopper.jira:gh-epic-status` + * * `description` + * * `summary` + * + * ##### User permission validator ##### + * + * A validator that checks if a user has a permission. Obsolete. You may encounter this validator when getting transition rules and can pass it when updating or creating rules, for example, when you want to duplicate the rules from a workflow on a new workflow. + * + * { + * "type": "UserPermissionValidator", + * "configuration": { + * "permissionKey": "BROWSE_PROJECTS", + * "nullAllowed": false, + * "username": "TestUser" + * } + * } + * + * * `permissionKey` The permission to be validated. Allowed values: [built-in](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions) or app defined permissions. + * * `nullAllowed` If `true`, allows the transition when `username` is empty. + * * `username` The username to validate against the `permissionKey`. + * + * #### Post functions #### + * + * Post functions carry out any additional processing required after a Jira workflow transition is executed. + * + * ##### Fire issue event function ##### + * + * A post function that fires an event that is processed by the listeners. + * + * { + * "type": "FireIssueEventFunction", + * "configuration": { + * "event": { + * "id":"1" + * } + * } + * } + * + * **Note:** If provided, this post function overrides the default `FireIssueEventFunction`. Can be included once in a transition. + * + * * `event` An object containing the ID of the issue event. + * + * ##### Update issue status ##### + * + * A post function that sets issue status to the linked status of the destination workflow status. + * + * { + * "type": "UpdateIssueStatusFunction" + * } + * + * **Note:** This post function is a default function in global and directed transitions. It can only be added to the initial transition and can only be added once. + * + * ##### Create comment ##### + * + * A post function that adds a comment entered during the transition to an issue. + * + * { + * "type": "CreateCommentFunction" + * } + * + * **Note:** This post function is a default function in global and directed transitions. It can only be added to the initial transition and can only be added once. + * + * ##### Store issue ##### + * + * A post function that stores updates to an issue. + * + * { + * "type": "IssueStoreFunction" + * } + * + * **Note:** This post function can only be added to the initial transition and can only be added once. + * + * ##### Assign to current user function ##### + * + * A post function that assigns the issue to the current user if the current user has the `ASSIGNABLE_USER` permission. + * + * { + * "type": "AssignToCurrentUserFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Assign to lead function ##### + * + * A post function that assigns the issue to the project or component lead developer. + * + * { + * "type": "AssignToLeadFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Assign to reporter function ##### + * + * A post function that assigns the issue to the reporter. + * + * { + * "type": "AssignToReporterFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Clear field value function ##### + * + * A post function that clears the value from a field. + * + * { + * "type": "ClearFieldValuePostFunction", + * "configuration": { + * "fieldId": "assignee" + * } + * } + * + * * `fieldId` The ID of the field. + * + * ##### Copy value from other field function ##### + * + * A post function that copies the value of one field to another, either within an issue or from parent to subtask. + * + * { + * "type": "CopyValueFromOtherFieldPostFunction", + * "configuration": { + * "sourceFieldId": "assignee", + * "destinationFieldId": "creator", + * "copyType": "same" + * } + * } + * + * * `sourceFieldId` The ID of the source field. + * * `destinationFieldId` The ID of the destination field. + * * `copyType` Use `same` to copy the value from a field inside the issue, or `parent` to copy the value from the parent issue. + * + * ##### Create Crucible review workflow function (deprecated) ##### + * + * A post function that creates a Crucible review for all unreviewed code for the issue. + * + * { + * "type": "CreateCrucibleReviewWorkflowFunction" + * } + * + * **Note:** This post function can be included once in a transition. + * + * ##### Set issue security level based on user's project role function ##### + * + * A post function that sets the issue's security level if the current user has a project role. + * + * { + * "type": "SetIssueSecurityFromRoleFunction", + * "configuration": { + * "projectRole": { + * "id":"10002" + * }, + * "issueSecurityLevel": { + * "id":"10000" + * } + * } + * } + * + * * `projectRole` An object containing the ID of the project role. + * * `issueSecurityLevel` OPTIONAL. The object containing the ID of the security level. If not passed, then the security level is set to `none`. + * + * ##### Trigger a webhook function ##### + * + * A post function that triggers a webhook. + * + * { + * "type": "TriggerWebhookFunction", + * "configuration": { + * "webhook": { + * "id": "1" + * } + * } + * } + * + * * `webhook` An object containing the ID of the webhook listener to trigger. + * + * ##### Update issue custom field function ##### + * + * A post function that updates the content of an issue custom field. + * + * { + * "type": "UpdateIssueCustomFieldPostFunction", + * "configuration": { + * "mode": "append", + * "fieldId": "customfield_10003", + * "fieldValue": "yikes" + * } + * } + * + * * `mode` Use `replace` to override the field content with `fieldValue` or `append` to add `fieldValue` to the end of the field content. + * * `fieldId` The ID of the field. + * * `fieldValue` The update content. + * + * ##### Update issue field function ##### + * + * A post function that updates a simple issue field. + * + * { + * "type": "UpdateIssueFieldFunction", + * "configuration": { + * "fieldId": "assignee", + * "fieldValue": "5f0c277e70b8a90025a00776" + * } + * } + * + * * `fieldId` The ID of the field. Allowed field types: + * + * * `assignee` + * * `description` + * * `environment` + * * `priority` + * * `resolution` + * * `summary` + * * `timeoriginalestimate` + * * `timeestimate` + * * `timespent` + * * `fieldValue` The update value. + * * If the `fieldId` is `assignee`, the `fieldValue` should be one of these values: + * + * * an account ID. + * * `automatic`. + * * a blank string, which sets the value to `unassigned`. + * + * #### Connect rules #### + * + * Connect rules are conditions, validators, and post functions of a transition that are registered by Connect apps. To create a rule registered by the app, the app must be enabled and the rule's module must exist. + * + * { + * "type": "appKey__moduleKey", + * "configuration": { + * "value":"{\"isValid\":\"true\"}" + * } + * } + * + * * `type` A Connect rule key in a form of `appKey__moduleKey`. + * * `value` The stringified JSON configuration of a Connect rule. + * + * #### Forge rules #### + * + * Forge transition rules are not yet supported. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createWorkflow: { + /** @description The workflow details. */ + requestBody: { + content: { + /** + * @example { + * "description": "This is a workflow used for Stories and Tasks", + * "name": "Workflow 1", + * "statuses": [ + * { + * "id": "1", + * "properties": { + * "jira.issue.editable": "false" + * } + * }, + * { + * "id": "2" + * }, + * { + * "id": "3" + * } + * ], + * "transitions": [ + * { + * "from": [], + * "name": "Created", + * "to": "1", + * "type": "initial" + * }, + * { + * "from": [ + * "1" + * ], + * "name": "In progress", + * "properties": { + * "custom-property": "custom-value" + * }, + * "rules": { + * "conditions": { + * "conditions": [ + * { + * "type": "RemoteOnlyCondition" + * }, + * { + * "configuration": { + * "groups": [ + * "developers", + * "qa-testers" + * ] + * }, + * "type": "UserInAnyGroupCondition" + * } + * ], + * "operator": "AND" + * }, + * "postFunctions": [ + * { + * "type": "AssignToCurrentUserFunction" + * } + * ] + * }, + * "screen": { + * "id": "10001" + * }, + * "to": "2", + * "type": "directed" + * }, + * { + * "name": "Completed", + * "rules": { + * "postFunctions": [ + * { + * "configuration": { + * "fieldId": "assignee" + * }, + * "type": "ClearFieldValuePostFunction" + * } + * ], + * "validators": [ + * { + * "configuration": { + * "parentStatuses": [ + * { + * "id": "3" + * } + * ] + * }, + * "type": "ParentStatusValidator" + * }, + * { + * "configuration": { + * "permissionKey": "ADMINISTER_PROJECTS" + * }, + * "type": "PermissionValidator" + * } + * ] + * }, + * "to": "3", + * "type": "global" + * } + * ] + * } + */ + "application/json": components["schemas"]["CreateWorkflowDetails"]; + }; + }; + responses: { + /** @description Returned if the workflow is created. */ + 201: { + content: { + "application/json": components["schemas"]["WorkflowIDs"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if one or more statuses is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get workflow transition rule configurations + * @description Returns a [paginated](#pagination) list of workflows with transition rules. The workflows can be filtered to return only those containing workflow transition rules: + * + * * of one or more transition rule types, such as [workflow post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/). + * * matching one or more transition rule keys. + * + * Only workflows containing transition rules created by the calling [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app are returned. + * + * Due to server-side optimizations, workflows with an empty list of rules may be returned; these workflows can be ignored. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation. + */ + getWorkflowTransitionRuleConfigurations: { + parameters: { + query: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The types of the transition rules to return. */ + types: ("postfunction" | "condition" | "validator")[]; + /** @description The transition rule class keys, as defined in the Connect or the Forge app descriptor, of the transition rules to return. */ + keys?: string[]; + /** @description The list of workflow names to filter by. */ + workflowNames?: string[]; + /** @description The list of `tags` to filter by. */ + withTags?: string[]; + /** @description Whether draft or published workflows are returned. If not provided, both workflow types are returned. */ + draft?: boolean; + /** @description Use [expand](#expansion) to include additional information in the response. This parameter accepts `transition`, which, for each rule, returns information about the transition the rule is assigned to. */ + expand?: string; + }; + }; + requestBody: { + content: { + "application/json": { + asyncContext?: { + request?: { + asyncStarted?: boolean; + asyncSupported?: boolean; + attributeNames?: Record; + characterEncoding?: string; + /** Format: int32 */ + contentLength?: number; + /** Format: int64 */ + contentLengthLong?: number; + contentType?: string; + /** @enum {string} */ + dispatcherType?: "FORWARD" | "INCLUDE" | "REQUEST" | "ASYNC" | "ERROR"; + inputStream?: { + finished?: boolean; + readListener?: Record; + ready?: boolean; + }; + localAddr?: string; + localName?: string; + /** Format: int32 */ + localPort?: number; + locale?: { + country?: string; + displayCountry?: string; + displayLanguage?: string; + displayName?: string; + displayScript?: string; + displayVariant?: string; + extensionKeys?: string[]; + iso3Country?: string; + iso3Language?: string; + language?: string; + script?: string; + unicodeLocaleAttributes?: string[]; + unicodeLocaleKeys?: string[]; + variant?: string; + }; + locales?: Record; + parameterMap?: { + [key: string]: string[]; + }; + parameterNames?: Record; + protocol?: string; + reader?: Record; + remoteAddr?: string; + remoteHost?: string; + /** Format: int32 */ + remotePort?: number; + scheme?: string; + secure?: boolean; + serverName?: string; + /** Format: int32 */ + serverPort?: number; + servletContext?: { + attributeNames?: Record; + classLoader?: { + defaultAssertionStatus?: boolean; + definedPackages?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + implementationTitle?: string; + implementationVendor?: string; + implementationVersion?: string; + name?: string; + sealed?: boolean; + specificationTitle?: string; + specificationVendor?: string; + specificationVersion?: string; + }[]; + name?: string; + parent?: { + defaultAssertionStatus?: boolean; + definedPackages?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + implementationTitle?: string; + implementationVendor?: string; + implementationVersion?: string; + name?: string; + sealed?: boolean; + specificationTitle?: string; + specificationVendor?: string; + specificationVersion?: string; + }[]; + name?: string; + registeredAsParallelCapable?: boolean; + unnamedModule?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + descriptor?: { + automatic?: boolean; + open?: boolean; + }; + layer?: Record; + name?: string; + named?: boolean; + packages?: string[]; + }; + }; + registeredAsParallelCapable?: boolean; + unnamedModule?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + descriptor?: { + automatic?: boolean; + open?: boolean; + }; + layer?: Record; + name?: string; + named?: boolean; + packages?: string[]; + }; + }; + contextPath?: string; + defaultSessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + /** Format: int32 */ + effectiveMajorVersion?: number; + /** Format: int32 */ + effectiveMinorVersion?: number; + effectiveSessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + filterRegistrations?: { + [key: string]: { + className?: string; + initParameters?: { + [key: string]: string; + }; + name?: string; + servletNameMappings?: string[]; + urlPatternMappings?: string[]; + }; + }; + initParameterNames?: Record; + jspConfigDescriptor?: { + jspPropertyGroups?: { + buffer?: string; + defaultContentType?: string; + deferredSyntaxAllowedAsLiteral?: string; + elIgnored?: string; + errorOnUndeclaredNamespace?: string; + includeCodas?: string[]; + includePreludes?: string[]; + isXml?: string; + pageEncoding?: string; + scriptingInvalid?: string; + trimDirectiveWhitespaces?: string; + urlPatterns?: string[]; + }[]; + taglibs?: { + taglibLocation?: string; + taglibURI?: string; + }[]; + }; + /** Format: int32 */ + majorVersion?: number; + /** Format: int32 */ + minorVersion?: number; + requestCharacterEncoding?: string; + responseCharacterEncoding?: string; + serverInfo?: string; + servletContextName?: string; + servletNames?: Record; + servletRegistrations?: { + [key: string]: { + className?: string; + initParameters?: { + [key: string]: string; + }; + mappings?: string[]; + name?: string; + runAsRole?: string; + }; + }; + servlets?: Record; + sessionCookieConfig?: { + comment?: string; + domain?: string; + httpOnly?: boolean; + /** Format: int32 */ + maxAge?: number; + name?: string; + path?: string; + secure?: boolean; + }; + /** Format: int32 */ + sessionTimeout?: number; + sessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + virtualServerName?: string; + }; + }; + response?: { + /** Format: int32 */ + bufferSize?: number; + characterEncoding?: string; + committed?: boolean; + /** Format: int32 */ + contentLength?: number; + /** Format: int64 */ + contentLengthLong?: number; + contentType?: string; + locale?: { + country?: string; + displayCountry?: string; + displayLanguage?: string; + displayName?: string; + displayScript?: string; + displayVariant?: string; + extensionKeys?: string[]; + iso3Country?: string; + iso3Language?: string; + language?: string; + script?: string; + unicodeLocaleAttributes?: string[]; + unicodeLocaleKeys?: string[]; + variant?: string; + }; + outputStream?: { + ready?: boolean; + writeListener?: Record; + }; + writer?: Record; + }; + /** Format: int64 */ + timeout?: number; + }; + asyncStarted?: boolean; + asyncSupported?: boolean; + attributeNames?: Record; + authType?: string; + characterEncoding?: string; + /** Format: int32 */ + contentLength?: number; + /** Format: int64 */ + contentLengthLong?: number; + contentType?: string; + contextPath?: string; + cookies?: { + comment?: string; + domain?: string; + httpOnly?: boolean; + /** Format: int32 */ + maxAge?: number; + name?: string; + path?: string; + secure?: boolean; + value?: string; + /** Format: int32 */ + version?: number; + }[]; + /** @enum {string} */ + dispatcherType?: "FORWARD" | "INCLUDE" | "REQUEST" | "ASYNC" | "ERROR"; + headerNames?: Record; + httpServletMapping?: { + /** @enum {string} */ + mappingMatch?: "CONTEXT_ROOT" | "DEFAULT" | "EXACT" | "EXTENSION" | "PATH"; + matchValue?: string; + pattern?: string; + servletName?: string; + }; + inputStream?: { + finished?: boolean; + readListener?: Record; + ready?: boolean; + }; + localAddr?: string; + localName?: string; + /** Format: int32 */ + localPort?: number; + locale?: { + country?: string; + displayCountry?: string; + displayLanguage?: string; + displayName?: string; + displayScript?: string; + displayVariant?: string; + extensionKeys?: string[]; + iso3Country?: string; + iso3Language?: string; + language?: string; + script?: string; + unicodeLocaleAttributes?: string[]; + unicodeLocaleKeys?: string[]; + variant?: string; + }; + locales?: Record; + method?: string; + parameterMap?: { + [key: string]: string[]; + }; + parameterNames?: Record; + parts?: { + contentType?: string; + headerNames?: string[]; + inputStream?: Record; + name?: string; + /** Format: int64 */ + size?: number; + submittedFileName?: string; + }[]; + pathInfo?: string; + pathTranslated?: string; + protocol?: string; + queryString?: string; + reader?: Record; + remoteAddr?: string; + remoteHost?: string; + /** Format: int32 */ + remotePort?: number; + remoteUser?: string; + requestURI?: string; + requestURL?: { + /** Format: int32 */ + length?: number; + }; + requestedSessionId?: string; + requestedSessionIdFromCookie?: boolean; + requestedSessionIdFromURL?: boolean; + requestedSessionIdFromUrl?: boolean; + requestedSessionIdValid?: boolean; + scheme?: string; + secure?: boolean; + serverName?: string; + /** Format: int32 */ + serverPort?: number; + servletContext?: { + attributeNames?: Record; + classLoader?: { + defaultAssertionStatus?: boolean; + definedPackages?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + implementationTitle?: string; + implementationVendor?: string; + implementationVersion?: string; + name?: string; + sealed?: boolean; + specificationTitle?: string; + specificationVendor?: string; + specificationVersion?: string; + }[]; + name?: string; + parent?: { + defaultAssertionStatus?: boolean; + definedPackages?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + implementationTitle?: string; + implementationVendor?: string; + implementationVersion?: string; + name?: string; + sealed?: boolean; + specificationTitle?: string; + specificationVendor?: string; + specificationVersion?: string; + }[]; + name?: string; + registeredAsParallelCapable?: boolean; + unnamedModule?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + descriptor?: { + automatic?: boolean; + open?: boolean; + }; + layer?: Record; + name?: string; + named?: boolean; + packages?: string[]; + }; + }; + registeredAsParallelCapable?: boolean; + unnamedModule?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + descriptor?: { + automatic?: boolean; + open?: boolean; + }; + layer?: Record; + name?: string; + named?: boolean; + packages?: string[]; + }; + }; + contextPath?: string; + defaultSessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + /** Format: int32 */ + effectiveMajorVersion?: number; + /** Format: int32 */ + effectiveMinorVersion?: number; + effectiveSessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + filterRegistrations?: { + [key: string]: { + className?: string; + initParameters?: { + [key: string]: string; + }; + name?: string; + servletNameMappings?: string[]; + urlPatternMappings?: string[]; + }; + }; + initParameterNames?: Record; + jspConfigDescriptor?: { + jspPropertyGroups?: { + buffer?: string; + defaultContentType?: string; + deferredSyntaxAllowedAsLiteral?: string; + elIgnored?: string; + errorOnUndeclaredNamespace?: string; + includeCodas?: string[]; + includePreludes?: string[]; + isXml?: string; + pageEncoding?: string; + scriptingInvalid?: string; + trimDirectiveWhitespaces?: string; + urlPatterns?: string[]; + }[]; + taglibs?: { + taglibLocation?: string; + taglibURI?: string; + }[]; + }; + /** Format: int32 */ + majorVersion?: number; + /** Format: int32 */ + minorVersion?: number; + requestCharacterEncoding?: string; + responseCharacterEncoding?: string; + serverInfo?: string; + servletContextName?: string; + servletNames?: Record; + servletRegistrations?: { + [key: string]: { + className?: string; + initParameters?: { + [key: string]: string; + }; + mappings?: string[]; + name?: string; + runAsRole?: string; + }; + }; + servlets?: Record; + sessionCookieConfig?: { + comment?: string; + domain?: string; + httpOnly?: boolean; + /** Format: int32 */ + maxAge?: number; + name?: string; + path?: string; + secure?: boolean; + }; + /** Format: int32 */ + sessionTimeout?: number; + sessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + virtualServerName?: string; + }; + servletPath?: string; + session?: { + attributeNames?: Record; + /** Format: int64 */ + creationTime?: number; + id?: string; + /** Format: int64 */ + lastAccessedTime?: number; + /** Format: int32 */ + maxInactiveInterval?: number; + new?: boolean; + servletContext?: { + attributeNames?: Record; + classLoader?: { + defaultAssertionStatus?: boolean; + definedPackages?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + implementationTitle?: string; + implementationVendor?: string; + implementationVersion?: string; + name?: string; + sealed?: boolean; + specificationTitle?: string; + specificationVendor?: string; + specificationVersion?: string; + }[]; + name?: string; + parent?: { + defaultAssertionStatus?: boolean; + definedPackages?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + implementationTitle?: string; + implementationVendor?: string; + implementationVersion?: string; + name?: string; + sealed?: boolean; + specificationTitle?: string; + specificationVendor?: string; + specificationVersion?: string; + }[]; + name?: string; + registeredAsParallelCapable?: boolean; + unnamedModule?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + descriptor?: { + automatic?: boolean; + open?: boolean; + }; + layer?: Record; + name?: string; + named?: boolean; + packages?: string[]; + }; + }; + registeredAsParallelCapable?: boolean; + unnamedModule?: { + annotations?: Record[]; + declaredAnnotations?: Record[]; + descriptor?: { + automatic?: boolean; + open?: boolean; + }; + layer?: Record; + name?: string; + named?: boolean; + packages?: string[]; + }; + }; + contextPath?: string; + defaultSessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + /** Format: int32 */ + effectiveMajorVersion?: number; + /** Format: int32 */ + effectiveMinorVersion?: number; + effectiveSessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + filterRegistrations?: { + [key: string]: { + className?: string; + initParameters?: { + [key: string]: string; + }; + name?: string; + servletNameMappings?: string[]; + urlPatternMappings?: string[]; + }; + }; + initParameterNames?: Record; + jspConfigDescriptor?: { + jspPropertyGroups?: { + buffer?: string; + defaultContentType?: string; + deferredSyntaxAllowedAsLiteral?: string; + elIgnored?: string; + errorOnUndeclaredNamespace?: string; + includeCodas?: string[]; + includePreludes?: string[]; + isXml?: string; + pageEncoding?: string; + scriptingInvalid?: string; + trimDirectiveWhitespaces?: string; + urlPatterns?: string[]; + }[]; + taglibs?: { + taglibLocation?: string; + taglibURI?: string; + }[]; + }; + /** Format: int32 */ + majorVersion?: number; + /** Format: int32 */ + minorVersion?: number; + requestCharacterEncoding?: string; + responseCharacterEncoding?: string; + serverInfo?: string; + servletContextName?: string; + servletNames?: Record; + servletRegistrations?: { + [key: string]: { + className?: string; + initParameters?: { + [key: string]: string; + }; + mappings?: string[]; + name?: string; + runAsRole?: string; + }; + }; + servlets?: Record; + sessionCookieConfig?: { + comment?: string; + domain?: string; + httpOnly?: boolean; + /** Format: int32 */ + maxAge?: number; + name?: string; + path?: string; + secure?: boolean; + }; + /** Format: int32 */ + sessionTimeout?: number; + sessionTrackingModes?: ("COOKIE" | "URL" | "SSL")[]; + virtualServerName?: string; + }; + sessionContext?: { + ids?: Record; + }; + valueNames?: string[]; + }; + trailerFields?: { + [key: string]: string; + }; + trailerFieldsReady?: boolean; + userPrincipal?: { + name?: string; + }; + }; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanWorkflowTransitionRules"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller is not a Connect or Forge app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if any transition rule type is not supported. */ + 404: { + content: never; + }; + /** @description Returned if we encounter a problem while trying to access the required data. */ + 503: { + content: never; + }; + }; + }; + /** + * Update workflow transition rule configurations + * @description Updates configuration of workflow transition rules. The following rule types are supported: + * + * * [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/) + * * [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/) + * * [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/) + * + * Only rules created by the calling [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app can be updated. + * + * To assist with app migration, this operation can be used to: + * + * * Disable a rule. + * * Add a `tag`. Use this to filter rules in the [Get workflow transition rule configurations](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-transition-rules/#api-rest-api-3-workflow-rule-config-get). + * + * Rules are enabled if the `disabled` parameter is not provided. + * + * **[Permissions](#permissions) required:** Only [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation. + */ + updateWorkflowTransitionRuleConfigurations: { + requestBody: { + content: { + /** + * @example { + * "workflows": [ + * { + * "conditions": [ + * { + * "configuration": { + * "disabled": false, + * "tag": "Another tag", + * "value": "{ \"size\": \"medium\" }" + * }, + * "id": "d663bd873d93-59f5-11e9-8647-b4d6cbdc" + * } + * ], + * "postFunctions": [ + * { + * "configuration": { + * "disabled": false, + * "tag": "Sample tag", + * "value": "{ \"color\": \"red\" }" + * }, + * "id": "b4d6cbdc-59f5-11e9-8647-d663bd873d93" + * } + * ], + * "validators": [ + * { + * "configuration": { + * "disabled": false, + * "value": "{ \"shape\": \"square\" }" + * }, + * "id": "11e9-59f5-b4d6cbdc-8647-d663bd873d93" + * } + * ], + * "workflowId": { + * "draft": false, + * "name": "My Workflow name" + * } + * } + * ] + * } + */ + "application/json": components["schemas"]["WorkflowTransitionRulesUpdate"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowTransitionRulesUpdateErrors"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller is not a Connect or Forge app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if we encounter a problem while trying to access the required data. */ + 503: { + content: never; + }; + }; + }; + /** + * Delete workflow transition rule configurations + * @description Deletes workflow transition rules from one or more workflows. These rule types are supported: + * + * * [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/) + * * [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/) + * * [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/) + * + * Only rules created by the calling Connect app can be deleted. + * + * **[Permissions](#permissions) required:** Only Connect apps can use this operation. + */ + deleteWorkflowTransitionRuleConfigurations: { + requestBody: { + content: { + /** + * @example { + * "workflows": [ + * { + * "workflowId": { + * "draft": false, + * "name": "Internal support workflow" + * }, + * "workflowRuleIds": [ + * "b4d6cbdc-59f5-11e9-8647-d663bd873d93", + * "d663bd873d93-59f5-11e9-8647-b4d6cbdc", + * "11e9-59f5-b4d6cbdc-8647-d663bd873d93" + * ] + * } + * ] + * } + */ + "application/json": components["schemas"]["WorkflowsWithTransitionRulesDetails"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowTransitionRulesUpdateErrors"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + /** @description Returned if the caller is not a Connect app. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get workflows paginated + * @description Returns a [paginated](#pagination) list of published classic workflows. When workflow names are specified, details of those workflows are returned. Otherwise, all published classic workflows are returned. + * + * This operation does not return next-gen workflows. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowsPaginated: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + /** @description The name of a workflow to return. To include multiple workflows, provide an ampersand-separated list. For example, `workflowName=name1&workflowName=name2`. */ + workflowName?: string[]; + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `transitions` For each workflow, returns information about the transitions inside the workflow. + * * `transitions.rules` For each workflow transition, returns information about its rules. Transitions are included automatically if this expand is requested. + * * `transitions.properties` For each workflow transition, returns information about its properties. Transitions are included automatically if this expand is requested. + * * `statuses` For each workflow, returns information about the statuses inside the workflow. + * * `statuses.properties` For each workflow status, returns information about its properties. Statuses are included automatically if this expand is requested. + * * `default` For each workflow, returns information about whether this is the default workflow. + * * `schemes` For each workflow, returns information about the workflow schemes the workflow is assigned to. + * * `projects` For each workflow, returns information about the projects the workflow is assigned to, through workflow schemes. + * * `hasDraftWorkflow` For each workflow, returns information about whether the workflow has a draft version. + * * `operations` For each workflow, returns information about the actions that can be undertaken on the workflow. + */ + expand?: string; + /** @description String used to perform a case-insensitive partial match with workflow name. */ + queryString?: string; + /** + * @description [Order](#ordering) the results by a field: + * + * * `name` Sorts by workflow name. + * * `created` Sorts by create time. + * * `updated` Sorts by update time. + */ + orderBy?: + | "name" + | "-name" + | "+name" + | "created" + | "-created" + | "+created" + | "updated" + | "+updated" + | "-updated"; + /** @description Filters active and inactive workflows. */ + isActive?: boolean; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanWorkflow"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorCollection"]; + }; + }; + }; + }; + /** + * Get workflow transition properties + * @description Returns the properties on a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowTransitionProperties: { + parameters: { + query: { + /** @description Some properties with keys that have the *jira.* prefix are reserved, which means they are not editable. To include these properties in the results, set this parameter to *true*. */ + includeReservedKeys?: boolean; + /** @description The key of the property being returned, also known as the name of the property. If this parameter is not specified, all properties on the transition are returned. */ + key?: string; + /** @description The name of the workflow that the transition belongs to. */ + workflowName: string; + /** @description The workflow status. Set to *live* for active and inactive workflows, or *draft* for draft workflows. */ + workflowMode?: "live" | "draft"; + }; + path: { + /** @description The ID of the transition. To get the ID, view the workflow in text mode in the Jira administration console. The ID is shown next to the transition. */ + transitionId: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowTransitionProperty"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have admin permission */ + 403: { + content: never; + }; + /** @description Returned if the workflow transition or property is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update workflow transition property + * @description Updates a workflow transition by changing the property value. Trying to update a property that does not exist results in a new property being added to the transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateWorkflowTransitionProperty: { + parameters: { + query: { + /** @description The key of the property being updated, also known as the name of the property. Set this to the same value as the `key` defined in the request body. */ + key: string; + /** @description The name of the workflow that the transition belongs to. */ + workflowName: string; + /** @description The workflow status. Set to `live` for inactive workflows or `draft` for draft workflows. Active workflows cannot be edited. */ + workflowMode?: "live" | "draft"; + }; + path: { + /** @description The ID of the transition. To get the ID, view the workflow in text mode in the Jira admin settings. The ID is shown next to the transition. */ + transitionId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "value": "createissue" + * } + */ + "application/json": components["schemas"]["WorkflowTransitionProperty"]; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowTransitionProperty"]; + }; + }; + /** @description Returned if no changes were made by the request. For example, attempting to update a property with its current value. */ + 304: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow transition is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Create workflow transition property + * @description Adds a property to a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createWorkflowTransitionProperty: { + parameters: { + query: { + /** @description The key of the property being added, also known as the name of the property. Set this to the same value as the `key` defined in the request body. */ + key: string; + /** @description The name of the workflow that the transition belongs to. */ + workflowName: string; + /** @description The workflow status. Set to *live* for inactive workflows or *draft* for draft workflows. Active workflows cannot be edited. */ + workflowMode?: "live" | "draft"; + }; + path: { + /** @description The ID of the transition. To get the ID, view the workflow in text mode in the Jira admin settings. The ID is shown next to the transition. */ + transitionId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "value": "createissue" + * } + */ + "application/json": components["schemas"]["WorkflowTransitionProperty"]; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowTransitionProperty"]; + }; + }; + /** @description Returned if a workflow property with the same key is present on the transition. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow transition is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete workflow transition property + * @description Deletes a property from a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see [Transition properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and [Workflow properties](https://confluence.atlassian.com/x/JYlKLg). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteWorkflowTransitionProperty: { + parameters: { + query: { + /** @description The name of the transition property to delete, also known as the name of the property. */ + key: string; + /** @description The name of the workflow that the transition belongs to. */ + workflowName: string; + /** @description The workflow status. Set to `live` for inactive workflows or `draft` for draft workflows. Active workflows cannot be edited. */ + workflowMode?: "live" | "draft"; + }; + path: { + /** @description The ID of the transition. To get the ID, view the workflow in text mode in the Jira admin settings. The ID is shown next to the transition. */ + transitionId: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: never; + }; + /** @description Returned if no changes were made by the request. For example, trying to delete a property that cannot be found. */ + 304: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow transition is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete inactive workflow + * @description Deletes a workflow. + * + * The workflow cannot be deleted if it is: + * + * * an active workflow. + * * a system workflow. + * * associated with any workflow scheme. + * * associated with any draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteInactiveWorkflow: { + parameters: { + path: { + /** @description The entity ID of the workflow. */ + entityId: string; + }; + }; + responses: { + /** @description Returned if the workflow is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the workflow is not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Bulk get workflows + * @description Returns a list of workflows and related statuses by providing workflow names, workflow IDs, or project and issue types. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* global permission to access all, including project-scoped, workflows + * * At least one of the *Administer projects* and *View (read-only) workflow* project permissions to access project-scoped workflows + */ + readWorkflows: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `workflows.usages` Returns the project and issue types that each workflow is associated with. + * * `statuses.usages` Returns the project and issue types that each status is associated with. + */ + expand?: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "projectAndIssueTypes": [], + * "workflowIds": [], + * "workflowNames": [ + * "Workflow 1", + * "Workflow 2" + * ] + * } + */ + "application/json": components["schemas"]["WorkflowReadRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowReadResponse"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Get available workflow capabilities + * @description Get the list of workflow capabilities for a specific workflow using either the workflow ID, or the project and issue type ID pair. The response includes the scope of the workflow, defined as global/project-based, and a list of project types that the workflow is scoped to. It also includes all rules organised into their broad categories (conditions, validators, actions, triggers, screens) as well as the source location (Atlassian-provided, Connect, Forge). + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to access all, including global-scoped, workflows + * * *Administer projects* project permissions to access project-scoped workflows + * + * The current list of Atlassian-provided rules: + * + * #### Validators #### + * + * A validator rule that checks if a user has the required permissions to execute the transition in the workflow. + * + * ##### Permission validator ##### + * + * A validator rule that checks if a user has the required permissions to execute the transition in the workflow. + * + * { + * "ruleKey": "system:check-permission-validator", + * "parameters": { + * "permissionKey": "ADMINISTER_PROJECTS" + * } + * } + * + * Parameters: + * + * * `permissionKey` The permission required to perform the transition. Allowed values: [built-in Jira permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions). + * + * ##### Parent or child blocking validator ##### + * + * A validator to block the child issue\\u2019s transition depending on the parent issue\\u2019s status. + * + * { + * "ruleKey" : "system:parent-or-child-blocking-validator" + * "parameters" : { + * "blocker" : "PARENT" + * "statusIds" : "1,2,3" + * } + * } + * + * Parameters: + * + * * `blocker` currently only supports `PARENT`. + * * `statusIds` a comma-separated list of status IDs. + * + * ##### Previous status validator ##### + * + * A validator that checks if an issue has transitioned through specified previous status(es) before allowing the current transition to occur. + * + * { + * "ruleKey": "system:previous-status-validator", + * "parameters": { + * "previousStatusIds": "10014", + * "mostRecentStatusOnly": "true" + * } + * } + * + * Parameters: + * + * * `previousStatusIds` a comma-separated list of status IDs, currently only support one ID. + * * `mostRecentStatusOnly` when `true` only considers the most recent status for the condition evaluation. Allowed values: `true`, `false`. + * + * ##### Validate a field value ##### + * + * A validation that ensures a specific field's value meets the defined criteria before allowing an issue to transition in the workflow. + * + * Depending on the rule type, the result will vary: + * + * ###### Field required ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldRequired", + * "fieldsRequired": "assignee", + * "ignoreContext": "true", + * "errorMessage": "An assignee must be set!" + * } + * } + * + * Parameters: + * + * * `fieldsRequired` the ID of the field that is required. For a custom field, it would look like `customfield_123`. + * * `ignoreContext` controls the impact of context settings on field validation. When set to `true`, the validator doesn't check a required field if its context isn't configured for the current issue. When set to `false`, the validator requires a field even if its context is invalid. Allowed values: `true`, `false`. + * * `errorMessage` is the error message to display if the user does not provide a value during the transition. A default error message will be shown if you don't provide one (Optional). + * + * ###### Field changed ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldChanged", + * "groupsExemptFromValidation": "6862ac20-8672-4f68-896d-4854f5efb79e", + * "fieldKey": "versions", + * "errorMessage": "Affect versions must be modified before transition" + * } + * } + * + * Parameters: + * + * * `groupsExemptFromValidation` a comma-separated list of group IDs to be exempt from the validation. + * * `fieldKey` the ID of the field that has changed. For a custom field, it would look like `customfield_123`. + * * `errorMessage` the error message to display if the user does not provide a value during the transition. A default error message will be shown if you don't provide one (Optional). + * + * ###### Field has a single value ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldHasSingleValue", + * "fieldKey": "created", + * "excludeSubtasks": "true" + * } + * } + * + * Parameters: + * + * * `fieldKey` the ID of the field to validate. For a custom field, it would look like `customfield_123`. + * * `excludeSubtasks` Option to exclude values copied from sub-tasks. Allowed values: `true`, `false`. + * + * ###### Field matches regular expression ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "fieldMatchesRegularExpression", + * "regexp": "[0-9]{4}", + * "fieldKey": "description" + * } + * } + * + * Parameters: + * + * * `regexp` the regular expression used to validate the field\\u2019s content. + * * `fieldKey` the ID of the field to validate. For a custom field, it would look like `customfield_123`. + * + * ###### Date field comparison ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "dateFieldComparison", + * "date1FieldKey": "duedate", + * "date2FieldKey": "customfield_10054", + * "includeTime": "true", + * "conditionSelected": ">=" + * } + * } + * + * Parameters: + * + * * `date1FieldKey` the ID of the first field to compare. For a custom field, it would look like `customfield_123`. + * * `date2FieldKey` the ID of the second field to compare. For a custom field, it would look like `customfield_123`. + * * `includeTime` if `true`, compares both date and time. Allowed values: `true`, `false`. + * * `conditionSelected` the condition to compare with. Allowed values: `>`, `>=`, `=`, `<=`, `<`, `!=`. + * + * ###### Date range comparison ###### + * + * { + * "ruleKey": "system:validate-field-value", + * "parameters": { + * "ruleType": "windowDateComparison", + * "date1FieldKey": "customfield_10009", + * "date2FieldKey": "customfield_10054", + * "numberOfDays": "3" + * } + * } + * + * Parameters: + * + * * `date1FieldKey` the ID of the first field to compare. For a custom field, it would look like `customfield_123`. + * * `date2FieldKey` the ID of the second field to compare. For a custom field, it would look like `customfield_123`. + * * `numberOfDays` maximum number of days past the reference date (`date2FieldKey`) to pass validation. + * + * This rule is composed by aggregating the following legacy rules: + * + * * FieldRequiredValidator + * * FieldChangedValidator + * * FieldHasSingleValueValidator + * * RegexpFieldValidator + * * DateFieldValidator + * * WindowsDateValidator + * + * ##### Proforma: Forms attached validator ##### + * + * Validates that one or more forms are attached to the issue. + * + * { + * "ruleKey" : "system:proforma-forms-attached" + * "parameters" : {} + * } + * + * ##### Proforma: Forms submitted validator ##### + * + * Validates that all forms attached to the issue have been submitted. + * + * { + * "ruleKey" : "system:proforma-forms-submitted" + * "parameters" : {} + * } + * + * #### Conditions #### + * + * Conditions enable workflow rules that govern whether a transition can execute. + * + * ##### Check field value ##### + * + * A condition rule evaluates as true if a specific field's value meets the defined criteria. This rule ensures that an issue can only transition to the next step in the workflow if the field's value matches the desired condition. + * + * { + * "ruleKey": "system:check-field-value", + * "parameters": { + * "fieldId": "description", + * "fieldValue": "[\"Done\"]", + * "comparator": "=", + * "comparisonType": "STRING" + * } + * } + * + * Parameters: + * + * * `fieldId` The ID of the field to check the value of. For non-system fields, it will look like `customfield_123`. Note: `fieldId` is used interchangeably with the idea of `fieldKey` here, they refer to the same field. + * * `fieldValue` the list of values to check against the field\\u2019s value. + * * `comparator` The comparison logic. Allowed values: `>`, `>=`, `=`, `<=`, `<`, `!=`. + * * `comparisonType` The type of data being compared. Allowed values: `STRING`, `NUMBER`, `DATE`, `DATE_WITHOUT_TIME`, `OPTIONID`. + * + * ##### Restrict issue transition ##### + * + * This rule ensures that issue transitions are restricted based on user accounts, roles, group memberships, and permissions, maintaining control over who can transition an issue. This condition evaluates as `true` if any of the following criteria is met. + * + * { + * "ruleKey": "system:restrict-issue-transition", + * "parameters": { + * "accountIds": "allow-reporter,5e68ac137d64450d01a77fa0", + * "roleIds": "10002,10004", + * "groupIds": "703ff44a-7dc8-4f4b-9aa6-a65bf3574fa4", + * "permissionKeys": "ADMINISTER_PROJECTS", + * "groupCustomFields": "customfield_10028", + * "allowUserCustomFields": "customfield_10072,customfield_10144,customfield_10007", + * "denyUserCustomFields": "customfield_10107" + * } + * } + * + * Parameters: + * + * * `accountIds` a comma-separated list of the user account IDs. It also allows generic values like: `allow-assignee`, `allow-reporter`, and `accountIds` Note: This is only supported in team-managed projects + * * `roleIds` a comma-separated list of role IDs. + * * `groupIds` a comma-separated list of group IDs. + * * `permissionKeys` a comma-separated list of permission keys. Allowed values: [built-in Jira permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions). + * * `groupCustomFields` a comma-separated list of group custom field IDs. + * * `allowUserCustomFields` a comma-separated list of user custom field IDs to allow for issue transition. + * * `denyUserCustomFields` a comma-separated list of user custom field IDs to deny for issue transition. + * + * This rule is composed by aggregating the following legacy rules: + * + * * AllowOnlyAssignee + * * AllowOnlyReporter + * * InAnyProjectRoleCondition + * * InProjectRoleCondition + * * UserInAnyGroupCondition + * * UserInGroupCondition + * * PermissionCondtion + * * InGroupCFCondition + * * UserIsInCustomFieldCondition + * + * ##### Previous status condition ##### + * + * A condition that evaluates based on an issue's previous status(es) and specific criteria. + * + * { + * "ruleKey" : "system:previous-status-condition" + * "parameters" : { + * "previousStatusIds" : "10004", + * "not": "true", + * "mostRecentStatusOnly" : "true", + * "includeCurrentStatus": "true", + * "ignoreLoopTransitions": "true" + * } + * } + * + * Parameters: + * + * * `previousStatusIds` a comma-separated list of status IDs, current only support one ID. + * * `not` indicates if the condition should be reversed. When `true` it checks that the issue has not been in the selected statuses. Allowed values: `true`, `false`. + * * `mostRecentStatusOnly` when true only considers the most recent status for the condition evaluation. Allowed values: `true`, `false`. + * * `includeCurrentStatus` includes the current status when evaluating if the issue has been through the selected statuses. Allowed values: `true`, `false`. + * * `ignoreLoopTransitions` ignore loop transitions. Allowed values: `true`, `false`. + * + * ##### Parent or child blocking condition ##### + * + * A condition to block the parent\\u2019s issue transition depending on the child\\u2019s issue status. + * + * { + * "ruleKey" : "system:parent-or-child-blocking-condition" + * "parameters" : { + * "blocker" : "CHILD", + * "statusIds" : "1,2,3" + * } + * } + * + * Parameters: + * + * * `blocker` currently only supports `CHILD`. + * * `statusIds` a comma-separated list of status IDs. + * + * ##### Separation of duties ##### + * + * A condition preventing the user from performing, if the user has already performed a transition on the issue. + * + * { + * "ruleKey": "system:separation-of-duties", + * "parameters": { + * "fromStatusId": "10161", + * "toStatusId": "10160" + * } + * } + * + * Parameters: + * + * * `fromStatusId` represents the status ID from which the issue is transitioning. It ensures that the user performing the current transition has not performed any actions when the issue was in the specified status. + * * `toStatusId` represents the status ID to which the issue is transitioning. It ensures that the user performing the current transition is not the same user who has previously transitioned the issue. + * + * ##### Restrict transitions ##### + * + * A condition preventing all users from transitioning the issue can also optionally include APIs as well. + * + * { + * "ruleKey": "system:restrict-from-all-users", + * "parameters": { + * "restrictMode": "users" + * } + * } + * + * Parameters: + * + * * `restrictMode` restricts the issue transition including/excluding APIs. Allowed values: `"users"`, `"usersAndAPI"`. + * + * ##### Jira Service Management block until approved ##### + * + * Block an issue transition until approval. Note: This is only supported in team-managed projects. + * + * { + * "ruleKey": "system:jsd-approvals-block-until-approved", + * "parameters": { + * "approvalConfigurationJson": "{"statusExternalUuid...}" + * } + * } + * + * Parameters: + * + * * `approvalConfigurationJson` a stringified JSON holding the Jira Service Management approval configuration. + * + * ##### Jira Service Management block until rejected ##### + * + * Block an issue transition until rejected. Note: This is only supported in team-managed projects. + * + * { + * "ruleKey": "system:jsd-approvals-block-until-rejected", + * "parameters": { + * "approvalConfigurationJson": "{"statusExternalUuid...}" + * } + * } + * + * Parameters: + * + * * `approvalConfigurationJson` a stringified JSON holding the Jira Service Management approval configuration. + * + * ##### Block in progress approval ##### + * + * Condition to block issue transition if there is pending approval. Note: This is only supported in company-managed projects. + * + * { + * "ruleKey": "system:block-in-progress-approval", + * "parameters": {} + * } + * + * #### Post functions #### + * + * Post functions carry out any additional processing required after a workflow transition is executed. + * + * ##### Change assignee ##### + * + * A post function rule that changes the assignee of an issue after a transition. + * + * { + * "ruleKey": "system:change-assignee", + * "parameters": { + * "type": "to-selected-user", + * "accountId": "example-account-id" + * } + * } + * + * Parameters: + * + * * `type` the parameter used to determine the new assignee. Allowed values: `to-selected-user`, `to-unassigned`, `to-current-user`, `to-current-user`, `to-default-user`, `to-default-user` + * * `accountId` the account ID of the user to assign the issue to. This parameter is required only when the type is `"to-selected-user"`. + * + * ##### Copy field value ##### + * + * A post function that automates the process of copying values between fields during a specific transition, ensuring data consistency and reducing manual effort. + * + * { + * "ruleKey": "system:copy-value-from-other-field", + * "parameters": { + * "sourceFieldKey": "description", + * "targetFieldKey": "components", + * "issueSource": "SAME" + * } + * } + * + * Parameters: + * + * * `sourceFieldKey` the field key to copy from. For a custom field, it would look like `customfield_123` + * * `targetFieldKey` the field key to copy to. For a custom field, it would look like `customfield_123` + * * `issueSource` `SAME` or `PARENT`. Defaults to `SAME` if no value is provided. + * + * ##### Update field ##### + * + * A post function that updates or appends a specific field with the given value. + * + * { + * "ruleKey": "system:update-field", + * "parameters": { + * "field": "customfield_10056", + * "value": "asdf", + * "mode": "append" + * } + * } + * + * Parameters: + * + * * `field` the ID of the field to update. For a custom field, it would look like `customfield_123` + * * `value` the value to update the field with. + * * `mode` `append` or `replace`. Determines if a value will be appended to the current value, or if the current value will be replaced. + * + * ##### Trigger webhook ##### + * + * A post function that automatically triggers a predefined webhook when a transition occurs in the workflow. + * + * { + * "ruleKey": "system:trigger-webhook", + * "parameters": { + * "webhookId": "1" + * } + * } + * + * Parameters: + * + * * `webhookId` the ID of the webhook. + * + * #### Screen #### + * + * ##### Remind people to update fields ##### + * + * A screen rule that prompts users to update a specific field when they interact with an issue screen during a transition. This rule is useful for ensuring that users provide or modify necessary information before moving an issue to the next step in the workflow. + * + * { + * "ruleKey": "system:remind-people-to-update-fields", + * "params": { + * "remindingFieldIds": "assignee,customfield_10025", + * "remindingMessage": "The message", + * "remindingAlwaysAsk": "true" + * } + * } + * + * Parameters: + * + * * `remindingFieldIds` a comma-separated list of field IDs. Note: `fieldId` is used interchangeably with the idea of `fieldKey` here, they refer to the same field. + * * `remindingMessage` the message to display when prompting the users to update the fields. + * * `remindingAlwaysAsk` always remind to update fields. Allowed values: `true`, `false`. + * + * ##### Shared transition screen ##### + * + * A common screen that is shared between transitions in a workflow. + * + * { + * "ruleKey": "system:transition-screen", + * "params": { + * "screenId": "3" + * } + * } + * + * Parameters: + * + * * `screenId` the ID of the screen. + * + * #### Connect & Forge #### + * + * ##### Connect rules ##### + * + * Validator/Condition/Post function for Connect app. + * + * { + * "ruleKey": "connect:expression-validator", + * "parameters": { + * "appKey": "com.atlassian.app", + * "config": "", + * "id": "90ce590f-e90c-4cd3-8281-165ce41f2ac3", + * "disabled": "false", + * "tag": "" + * } + * } + * + * Parameters: + * + * * `ruleKey` Validator: `connect:expression-validator`, Condition: `connect:expression-condition`, and Post function: `connect:remote-workflow-function` + * * `appKey` the reference to the Connect app + * * `config` a JSON payload string describing the configuration + * * `id` the ID of the rule + * * `disabled` determine if the Connect app is disabled. Allowed values: `true`, `false`. + * * `tag` additional tags for the Connect app + * + * ##### Forge rules ##### + * + * Validator/Condition/Post function for Forge app. + * + * { + * "ruleKey": "forge:expression-validator", + * "parameters": { + * "key": "ari:cloud:ecosystem::extension/{appId}/{environmentId}/static/{moduleKey}", + * "config": "{"searchString":"workflow validator"}", + * "id": "a865ddf6-bb3f-4a7b-9540-c2f8b3f9f6c2" + * } + * } + * + * Parameters: + * + * * `ruleKey` Validator: `forge:expression-validator`, Condition: `forge:expression-condition`, and Post function: `forge:workflow-post-function` + * * `key` the identifier for the Forge app + * * `config` the persistent stringified JSON configuration for the Forge rule + * * `id` the ID of the Forge rule + */ + workflowCapabilities: { + parameters: { + query?: { + workflowId?: string; + projectId?: string; + issueTypeId?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowCapabilities"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Bulk create workflows + * @description Create workflows and related statuses. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + createWorkflows: { + requestBody: { + content: { + /** + * @example { + * "scope": { + * "type": "GLOBAL" + * }, + * "statuses": [ + * { + * "description": "", + * "name": "To Do", + * "statusCategory": "TODO", + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "description": "", + * "name": "In Progress", + * "statusCategory": "IN_PROGRESS", + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "description": "", + * "name": "Done", + * "statusCategory": "DONE", + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "workflows": [ + * { + * "description": "", + * "name": "Software workflow 1", + * "startPointLayout": { + * "x": -100.00030899047852, + * "y": -153.00020599365234 + * }, + * "statuses": [ + * { + * "layout": { + * "x": 114.99993896484375, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "layout": { + * "x": 317.0000915527344, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "layout": { + * "x": 508.000244140625, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "transitions": [ + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "1", + * "name": "Create", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "INITIAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "11", + * "name": "To Do", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "21", + * "name": "In Progress", + * "properties": {}, + * "to": { + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "31", + * "name": "Done", + * "properties": {}, + * "to": { + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * } + * ] + * } + * ] + * } + */ + "application/json": components["schemas"]["WorkflowCreateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowCreateResponse"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Validate create workflows + * @description Validate the payload for bulk create workflows. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + validateCreateWorkflows: { + requestBody: { + content: { + /** + * @example { + * "payload": { + * "scope": { + * "type": "GLOBAL" + * }, + * "statuses": [ + * { + * "description": "", + * "name": "To Do", + * "statusCategory": "TODO", + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "description": "", + * "name": "In Progress", + * "statusCategory": "IN_PROGRESS", + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "description": "", + * "name": "Done", + * "statusCategory": "DONE", + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "workflows": [ + * { + * "description": "", + * "name": "Software workflow 1", + * "startPointLayout": { + * "x": -100.00030899047852, + * "y": -153.00020599365234 + * }, + * "statuses": [ + * { + * "layout": { + * "x": 114.99993896484375, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "layout": { + * "x": 317.0000915527344, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "layout": { + * "x": 508.000244140625, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "transitions": [ + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "1", + * "name": "Create", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "INITIAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "11", + * "name": "To Do", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "21", + * "name": "In Progress", + * "properties": {}, + * "to": { + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "31", + * "name": "Done", + * "properties": {}, + * "to": { + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * } + * ] + * } + * ] + * }, + * "validationOptions": { + * "levels": [ + * "ERROR", + * "WARNING" + * ] + * } + * } + */ + "application/json": components["schemas"]["WorkflowCreateValidateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowValidationErrorList"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Bulk update workflows + * @description Update workflows and related statuses. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + updateWorkflows: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `workflows.usages` Returns the project and issue types that each workflow is associated with. + * * `statuses.usages` Returns the project and issue types that each status is associated with. + */ + expand?: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "statuses": [ + * { + * "description": "", + * "name": "To Do", + * "statusCategory": "TODO", + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "description": "", + * "name": "In Progress", + * "statusCategory": "IN_PROGRESS", + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "description": "", + * "name": "Done", + * "statusCategory": "DONE", + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "workflows": [ + * { + * "defaultStatusMappings": [ + * { + * "newStatusReference": "10011", + * "oldStatusReference": "10010" + * } + * ], + * "description": "", + * "id": "10001", + * "startPointLayout": { + * "x": -100.00030899047852, + * "y": -153.00020599365234 + * }, + * "statusMappings": [ + * { + * "issueTypeId": "10002", + * "projectId": "10003", + * "statusMigrations": [ + * { + * "newStatusReference": "10011", + * "oldStatusReference": "10010" + * } + * ] + * } + * ], + * "statuses": [ + * { + * "layout": { + * "x": 114.99993896484375, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "layout": { + * "x": 317.0000915527344, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "layout": { + * "x": 508.000244140625, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "transitions": [ + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "1", + * "name": "Create", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "INITIAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "11", + * "name": "To Do", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "21", + * "name": "In Progress", + * "properties": {}, + * "to": { + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "31", + * "name": "Done", + * "properties": {}, + * "to": { + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * } + * ], + * "version": { + * "id": "6f6c988b-2590-4358-90c2-5f7960265592", + * "versionNumber": 1 + * } + * } + * ] + * } + */ + "application/json": components["schemas"]["WorkflowUpdateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowUpdateResponse"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Validate update workflows + * @description Validate the payload for bulk update workflows. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to create all, including global-scoped, workflows + * * *Administer projects* project permissions to create project-scoped workflows + */ + validateUpdateWorkflows: { + requestBody: { + content: { + /** + * @example { + * "payload": { + * "statuses": [ + * { + * "description": "", + * "name": "To Do", + * "statusCategory": "TODO", + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "description": "", + * "name": "In Progress", + * "statusCategory": "IN_PROGRESS", + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "description": "", + * "name": "Done", + * "statusCategory": "DONE", + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "workflows": [ + * { + * "defaultStatusMappings": [ + * { + * "newStatusReference": "10011", + * "oldStatusReference": "10010" + * } + * ], + * "description": "", + * "id": "10001", + * "startPointLayout": { + * "x": -100.00030899047852, + * "y": -153.00020599365234 + * }, + * "statusMappings": [ + * { + * "issueTypeId": "10002", + * "projectId": "10003", + * "statusMigrations": [ + * { + * "newStatusReference": "10011", + * "oldStatusReference": "10010" + * } + * ] + * } + * ], + * "statuses": [ + * { + * "layout": { + * "x": 114.99993896484375, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * { + * "layout": { + * "x": 317.0000915527344, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * { + * "layout": { + * "x": 508.000244140625, + * "y": -16 + * }, + * "properties": {}, + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * } + * ], + * "transitions": [ + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "1", + * "name": "Create", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "INITIAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "11", + * "name": "To Do", + * "properties": {}, + * "to": { + * "statusReference": "f0b24de5-25e7-4fab-ab94-63d81db6c0c0" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "21", + * "name": "In Progress", + * "properties": {}, + * "to": { + * "statusReference": "c7a35bf0-c127-4aa6-869f-4033730c61d8" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * }, + * { + * "actions": [], + * "description": "", + * "from": [], + * "id": "31", + * "name": "Done", + * "properties": {}, + * "to": { + * "statusReference": "6b3fc04d-3316-46c5-a257-65751aeb8849" + * }, + * "triggers": [], + * "type": "GLOBAL", + * "validators": [] + * } + * ], + * "version": { + * "id": "6f6c988b-2590-4358-90c2-5f7960265592", + * "versionNumber": 1 + * } + * } + * ] + * }, + * "validationOptions": { + * "levels": [ + * "ERROR", + * "WARNING" + * ] + * } + * } + */ + "application/json": components["schemas"]["WorkflowUpdateValidateRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowValidationErrorList"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Get all workflow schemes + * @description Returns a [paginated](#pagination) list of all workflow schemes, not including draft workflow schemes. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getAllWorkflowSchemes: { + parameters: { + query?: { + /** @description The index of the first item to return in a page of results (page offset). */ + startAt?: number; + /** @description The maximum number of items to return per page. */ + maxResults?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PageBeanWorkflowScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Create workflow scheme + * @description Creates a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createWorkflowScheme: { + requestBody: { + content: { + /** + * @example { + * "defaultWorkflow": "jira", + * "description": "The description of the example workflow scheme.", + * "issueTypeMappings": { + * "10000": "scrum workflow", + * "10001": "builds workflow" + * }, + * "name": "Example workflow scheme" + * } + */ + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get workflow scheme project associations + * @description Returns a list of the workflow schemes associated with a list of projects. Each returned workflow scheme includes a list of the requested projects associated with it. Any team-managed or non-existent projects in the request are ignored and no errors are returned. + * + * If the project is associated with the `Default Workflow Scheme` no ID is returned. This is because the way the `Default Workflow Scheme` is stored means it has no ID. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowSchemeProjectAssociations: { + parameters: { + query: { + /** @description The ID of a project to return the workflow schemes for. To include multiple projects, provide an ampersand-Jim: oneseparated list. For example, `projectId=10000&projectId=10001`. */ + projectId: number[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ContainerOfWorkflowSchemeAssociations"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Assign workflow scheme to project + * @description Assigns a workflow scheme to a project. This operation is performed only when there are no issues in the project. + * + * Workflow schemes can only be assigned to classic projects. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + assignSchemeToProject: { + requestBody: { + content: { + /** + * @example { + * "projectId": "10001", + * "workflowSchemeId": "10032" + * } + */ + "application/json": components["schemas"]["WorkflowSchemeProjectAssociation"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the required permissions. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the workflow scheme or the project are not found. */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Bulk get workflow schemes + * @description Returns a list of workflow schemes by providing workflow scheme IDs or project IDs. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* global permission to access all, including project-scoped, workflow schemes + * * *Administer projects* project permissions to access project-scoped workflow schemes + */ + readWorkflowSchemes: { + parameters: { + query?: { + /** + * @description Use [expand](#expansion) to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: + * + * * `workflows.usages` Returns the project and issue types that each workflow in the workflow scheme is associated with. + */ + expand?: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "projectIds": [ + * "10047", + * "10048" + * ], + * "workflowSchemeIds": [ + * "3e59db0f-ed6c-47ce-8d50-80c0c4572677" + * ] + * } + */ + "application/json": components["schemas"]["WorkflowSchemeReadRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowSchemeReadResponse"][]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Update workflow scheme + * @description Updates company-managed and team-managed project workflow schemes. This API doesn't have a concept of draft, so any changes made to a workflow scheme are immediately available. When changing the available statuses for issue types, an [asynchronous task](#async) migrates the issues as defined in the provided mappings. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* project permission to update all, including global-scoped, workflow schemes. + * * *Administer projects* project permission to update project-scoped workflow schemes. + */ + updateSchemes: { + requestBody: { + content: { + /** + * @example { + * "defaultWorkflowId": "3e59db0f-ed6c-47ce-8d50-80c0c4572677", + * "description": "description", + * "id": "10000", + * "name": "name", + * "statusMappingsByIssueTypeOverride": [ + * { + * "issueTypeId": "10001", + * "statusMappings": [ + * { + * "newStatusId": "2", + * "oldStatusId": "1" + * }, + * { + * "newStatusId": "4", + * "oldStatusId": "3" + * } + * ] + * }, + * { + * "issueTypeId": "10002", + * "statusMappings": [ + * { + * "newStatusId": "4", + * "oldStatusId": "1" + * }, + * { + * "newStatusId": "2", + * "oldStatusId": "3" + * } + * ] + * } + * ], + * "statusMappingsByWorkflows": [ + * { + * "newWorkflowId": "3e59db0f-ed6c-47ce-8d50-80c0c4572677", + * "oldWorkflowId": "3e59db0f-ed6c-47ce-8d50-80c0c4572677", + * "statusMappings": [ + * { + * "newStatusId": "2", + * "oldStatusId": "1" + * }, + * { + * "newStatusId": "4", + * "oldStatusId": "3" + * } + * ] + * } + * ], + * "version": { + * "id": "527213fc-bc72-400f-aae0-df8d88db2c8a", + * "versionNumber": 1 + * }, + * "workflowsForIssueTypes": [ + * { + * "issueTypeIds": [ + * "10000", + * "10003" + * ], + * "workflowId": "3e59db0f-ed6c-47ce-8d50-80c0c4572677" + * }, + * { + * "issueTypeIds": [ + * "10001`", + * "10002" + * ], + * "workflowId": "3f83dg2a-ns2n-56ab-9812-42h5j1461629" + * } + * ] + * } + */ + "application/json": components["schemas"]["WorkflowSchemeUpdateRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful and there is no asynchronous task. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is successful and there is an asynchronous task for the migrations. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Get required status mappings for workflow scheme update + * @description Gets the required status mappings for the desired changes to a workflow scheme. The results are provided per issue type and workflow. When updating a workflow scheme, status mappings can be provided per issue type, per workflow, or both. + * + * **[Permissions](#permissions) required:** + * + * * *Administer Jira* permission to update all, including global-scoped, workflow schemes. + * * *Administer projects* project permission to update project-scoped workflow schemes. + */ + updateWorkflowSchemeMappings: { + requestBody: { + content: { + /** + * @example { + * "defaultWorkflowId": "10010", + * "id": "10001", + * "workflowsForIssueTypes": [ + * { + * "issueTypeIds": [ + * "10010", + * "10011" + * ], + * "workflowId": "10001" + * } + * ] + * } + */ + "application/json": components["schemas"]["WorkflowSchemeUpdateRequiredMappingsRequest"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowSchemeUpdateRequiredMappingsResponse"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation. */ + 401: { + content: never; + }; + }; + }; + /** + * Get workflow scheme + * @description Returns a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowScheme: { + parameters: { + query?: { + /** @description Returns the workflow scheme's draft rather than scheme itself, if set to true. If the workflow scheme does not have a draft, then the workflow scheme is returned. */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. Find this ID by editing the desired workflow scheme in Jira. The ID is shown in the URL as `schemeId`. For example, *schemeId=10301*. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Classic update workflow scheme + * @description Updates a company-manged project workflow scheme, including the name, default workflow, issue type to project mappings, and more. If the workflow scheme is active (that is, being used by at least one project), then a draft workflow scheme is created or updated instead, provided that `updateDraftIfNeeded` is set to `true`. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateWorkflowScheme: { + parameters: { + path: { + /** @description The ID of the workflow scheme. Find this ID by editing the desired workflow scheme in Jira. The ID is shown in the URL as `schemeId`. For example, *schemeId=10301*. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "defaultWorkflow": "jira", + * "description": "The description of the example workflow scheme.", + * "issueTypeMappings": { + * "10000": "scrum workflow" + * }, + * "name": "Example workflow scheme", + * "updateDraftIfNeeded": false + * } + */ + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete workflow scheme + * @description Deletes a workflow scheme. Note that a workflow scheme cannot be deleted if it is active (that is, being used by at least one project). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteWorkflowScheme: { + parameters: { + path: { + /** @description The ID of the workflow scheme. Find this ID by editing the desired workflow scheme in Jira. The ID is shown in the URL as `schemeId`. For example, *schemeId=10301*. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the scheme is active. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Create draft workflow scheme + * @description Create a draft workflow scheme from an active workflow scheme, by copying the active workflow scheme. Note that an active workflow scheme can only have one draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + createWorkflowSchemeDraftFromParent: { + parameters: { + path: { + /** @description The ID of the active workflow scheme that the draft is created from. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 201: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + }; + }; + /** + * Get default workflow + * @description Returns the default workflow for a workflow scheme. The default workflow is the workflow that is assigned any issue types that have not been mapped to any other workflow. The default workflow has *All Unassigned Issue Types* listed in its issue types for the workflow scheme in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getDefaultWorkflow: { + parameters: { + query?: { + /** @description Set to `true` to return the default workflow for the workflow scheme's draft rather than scheme itself. If the workflow scheme does not have a draft, then the default workflow for the workflow scheme is returned. */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DefaultWorkflow"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Update default workflow + * @description Sets the default workflow for a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` in the request object and a draft workflow scheme is created or updated with the new default workflow. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateDefaultWorkflow: { + parameters: { + path: { + /** @description The ID of the workflow scheme. */ + id: number; + }; + }; + /** @description The new default workflow. */ + requestBody: { + content: { + /** + * @example { + * "updateDraftIfNeeded": false, + * "workflow": "jira" + * } + */ + "application/json": components["schemas"]["DefaultWorkflow"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the workflow scheme cannot be edited and `updateDraftIfNeeded` is not `true`. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete default workflow + * @description Resets the default workflow for a workflow scheme. That is, the default workflow is set to Jira's system workflow (the *jira* workflow). + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` and a draft workflow scheme is created or updated with the default workflow reset. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteDefaultWorkflow: { + parameters: { + query?: { + /** @description Set to true to create or update the draft of a workflow scheme and delete the mapping from the draft, when the workflow scheme cannot be edited. Defaults to `false`. */ + updateDraftIfNeeded?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the workflow scheme cannot be edited and `updateDraftIfNeeded` is not `true`. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get draft workflow scheme + * @description Returns the draft workflow scheme for an active workflow scheme. Draft workflow schemes allow changes to be made to the active workflow schemes: When an active workflow scheme is updated, a draft copy is created. The draft is modified, then the changes in the draft are copied back to the active workflow scheme. See [Configuring workflow schemes](https://confluence.atlassian.com/x/tohKLg) for more information. + * Note that: + * + * * Only active workflow schemes can have draft workflow schemes. + * * An active workflow scheme can only have one draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowSchemeDraft: { + parameters: { + path: { + /** @description The ID of the active workflow scheme that the draft was created from. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the original active workflow scheme is not found. + * * the original active workflow scheme does not have a draft. + */ + 404: { + content: never; + }; + }; + }; + /** + * Update draft workflow scheme + * @description Updates a draft workflow scheme. If a draft workflow scheme does not exist for the active workflow scheme, then a draft is created. Note that an active workflow scheme can only have one draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateWorkflowSchemeDraft: { + parameters: { + path: { + /** @description The ID of the active workflow scheme that the draft was created from. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "defaultWorkflow": "jira", + * "description": "The description of the example workflow scheme.", + * "issueTypeMappings": { + * "10000": "scrum workflow" + * }, + * "name": "Example workflow scheme", + * "updateDraftIfNeeded": false + * } + */ + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the original active workflow scheme is not found. + * * the original active workflow scheme does not have a draft. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete draft workflow scheme + * @description Deletes a draft workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteWorkflowSchemeDraft: { + parameters: { + path: { + /** @description The ID of the active workflow scheme that the draft was created from. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission.. */ + 403: { + content: never; + }; + /** + * @description Returned if: + * + * * the original active workflow scheme is not found. + * * the original active workflow scheme does not have a draft. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get draft default workflow + * @description Returns the default workflow for a workflow scheme's draft. The default workflow is the workflow that is assigned any issue types that have not been mapped to any other workflow. The default workflow has *All Unassigned Issue Types* listed in its issue types for the workflow scheme in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getDraftDefaultWorkflow: { + parameters: { + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["DefaultWorkflow"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission.. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow scheme does not have a draft. + */ + 404: { + content: never; + }; + }; + }; + /** + * Update draft default workflow + * @description Sets the default workflow for a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateDraftDefaultWorkflow: { + parameters: { + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + /** @description The object for the new default workflow. */ + requestBody: { + content: { + /** + * @example { + * "updateDraftIfNeeded": false, + * "workflow": "jira" + * } + */ + "application/json": components["schemas"]["DefaultWorkflow"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow scheme does not have a draft. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete draft default workflow + * @description Resets the default workflow for a workflow scheme's draft. That is, the default workflow is set to Jira's system workflow (the *jira* workflow). + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteDraftDefaultWorkflow: { + parameters: { + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow scheme does not have a draft. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get workflow for issue type in draft workflow scheme + * @description Returns the issue type-workflow mapping for an issue type in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowSchemeDraftIssueType: { + parameters: { + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + /** @description The ID of the issue type. */ + issueType: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeWorkflowMapping"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme or issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set workflow for issue type in draft workflow scheme + * @description Sets the workflow for an issue type in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setWorkflowSchemeDraftIssueType: { + parameters: { + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + /** @description The ID of the issue type. */ + issueType: string; + }; + }; + /** @description The issue type-project mapping. */ + requestBody: { + content: { + /** + * @example { + * "issueType": "10000", + * "updateDraftIfNeeded": false, + * "workflow": "jira" + * } + */ + "application/json": components["schemas"]["IssueTypeWorkflowMapping"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme or issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete workflow for issue type in draft workflow scheme + * @description Deletes the issue type-workflow mapping for an issue type in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteWorkflowSchemeDraftIssueType: { + parameters: { + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + /** @description The ID of the issue type. */ + issueType: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme or issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Publish draft workflow scheme + * @description Publishes a draft workflow scheme. + * + * Where the draft workflow includes new workflow statuses for an issue type, mappings are provided to update issues with the original workflow status to the new workflow status. + * + * This operation is [asynchronous](#async). 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 updates. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + publishDraftWorkflowScheme: { + parameters: { + query?: { + /** @description Whether the request only performs a validation. */ + validateOnly?: boolean; + }; + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + /** @description Details of the status mappings. */ + requestBody: { + content: { + /** + * @example { + * "statusMappings": [ + * { + * "issueTypeId": "10001", + * "newStatusId": "1", + * "statusId": "3" + * }, + * { + * "issueTypeId": "10001", + * "newStatusId": "2", + * "statusId": "2" + * }, + * { + * "issueTypeId": "10002", + * "newStatusId": "10003", + * "statusId": "10005" + * }, + * { + * "issueTypeId": "10003", + * "newStatusId": "1", + * "statusId": "4" + * } + * ] + * } + */ + "application/json": components["schemas"]["PublishDraftWorkflowScheme"]; + }; + }; + responses: { + /** @description Returned if the request is only for validation and is successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is successful. */ + 303: { + content: { + "application/json": components["schemas"]["TaskProgressBeanObject"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of these are true: + * + * * The workflow scheme is not found. + * * The workflow scheme does not have a draft. + * * A new status in the draft workflow scheme is not found. + */ + 404: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get issue types for workflows in draft workflow scheme + * @description Returns the workflow-issue type mappings for a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getDraftWorkflow: { + parameters: { + query?: { + /** @description The name of a workflow in the scheme. Limits the results to the workflow-issue type mapping for the specified workflow. */ + workflowName?: string; + }; + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypesWorkflowMapping"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if either the workflow scheme or workflow (if specified) is not found. session. */ + 404: { + content: never; + }; + }; + }; + /** + * Set issue types for workflow in workflow scheme + * @description Sets the issue types for a workflow in a workflow scheme's draft. The workflow can also be set as the default workflow for the draft workflow scheme. Unmapped issues types are mapped to the default workflow. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateDraftWorkflowMapping: { + parameters: { + query: { + /** @description The name of the workflow. */ + workflowName: string; + }; + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypes": [ + * "10000" + * ], + * "updateDraftIfNeeded": true, + * "workflow": "jira" + * } + */ + "application/json": components["schemas"]["IssueTypesWorkflowMapping"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow scheme does not have a draft. + * * The workflow is not found. + * * The workflow is not specified. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue types for workflow in draft workflow scheme + * @description Deletes the workflow-issue type mapping for a workflow in a workflow scheme's draft. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteDraftWorkflowMapping: { + parameters: { + query: { + /** @description The name of the workflow. */ + workflowName: string; + }; + path: { + /** @description The ID of the workflow scheme that the draft belongs to. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow scheme does not have a draft. + * * The workflow is not found. + * * The workflow is not specified. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get workflow for issue type in workflow scheme + * @description Returns the issue type-workflow mapping for an issue type in a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflowSchemeIssueType: { + parameters: { + query?: { + /** @description Returns the mapping from the workflow scheme's draft rather than the workflow scheme, if set to true. If no draft exists, the mapping from the workflow scheme is returned. */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + /** @description The ID of the issue type. */ + issueType: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypeWorkflowMapping"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme or issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set workflow for issue type in workflow scheme + * @description Sets the workflow for an issue type in a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` in the request body and a draft workflow scheme is created or updated with the new issue type-workflow mapping. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + setWorkflowSchemeIssueType: { + parameters: { + path: { + /** @description The ID of the workflow scheme. */ + id: number; + /** @description The ID of the issue type. */ + issueType: string; + }; + }; + /** @description The issue type-project mapping. */ + requestBody: { + content: { + /** + * @example { + * "issueType": "10000", + * "updateDraftIfNeeded": false, + * "workflow": "jira" + * } + */ + "application/json": components["schemas"]["IssueTypeWorkflowMapping"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the workflow cannot be edited and `updateDraftIfNeeded` is false. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme or issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete workflow for issue type in workflow scheme + * @description Deletes the issue type-workflow mapping for an issue type in a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` and a draft workflow scheme is created or updated with the issue type-workflow mapping deleted. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteWorkflowSchemeIssueType: { + parameters: { + query?: { + /** @description Set to true to create or update the draft of a workflow scheme and update the mapping in the draft, when the workflow scheme cannot be edited. Defaults to `false`. */ + updateDraftIfNeeded?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + /** @description The ID of the issue type. */ + issueType: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the workflow cannot be edited and `updateDraftIfNeeded` is false. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if the workflow scheme or issue type is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue types for workflows in workflow scheme + * @description Returns the workflow-issue type mappings for a workflow scheme. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + getWorkflow: { + parameters: { + query?: { + /** @description The name of a workflow in the scheme. Limits the results to the workflow-issue type mapping for the specified workflow. */ + workflowName?: string; + /** @description Returns the mapping from the workflow scheme's draft rather than the workflow scheme, if set to true. If no draft exists, the mapping from the workflow scheme is returned. */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["IssueTypesWorkflowMapping"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** @description Returned if either the workflow scheme or workflow is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set issue types for workflow in workflow scheme + * @description Sets the issue types for a workflow in a workflow scheme. The workflow can also be set as the default workflow for the workflow scheme. Unmapped issues types are mapped to the default workflow. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` in the request body and a draft workflow scheme is created or updated with the new workflow-issue types mappings. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + updateWorkflowMapping: { + parameters: { + query: { + /** @description The name of the workflow. */ + workflowName: string; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issueTypes": [ + * "10000" + * ], + * "updateDraftIfNeeded": true, + * "workflow": "jira" + * } + */ + "application/json": components["schemas"]["IssueTypesWorkflowMapping"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowScheme"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow is not found. + * * The workflow is not specified. + */ + 404: { + content: never; + }; + }; + }; + /** + * Delete issue types for workflow in workflow scheme + * @description Deletes the workflow-issue type mapping for a workflow in a workflow scheme. + * + * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to `true` and a draft workflow scheme is created or updated with the workflow-issue type mapping deleted. The draft workflow scheme can be published in Jira. + * + * **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg). + */ + deleteWorkflowMapping: { + parameters: { + query: { + /** @description The name of the workflow. */ + workflowName: string; + /** @description Set to true to create or update the draft of a workflow scheme and delete the mapping from the draft, when the workflow scheme cannot be edited. Defaults to `false`. */ + updateDraftIfNeeded?: boolean; + }; + path: { + /** @description The ID of the workflow scheme. */ + id: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** @description Returned if the workflow cannot be edited and `updateDraftIfNeeded` is not true. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: never; + }; + /** + * @description Returned if any of the following is true: + * + * * The workflow scheme is not found. + * * The workflow is not found. + * * The workflow is not specified. + */ + 404: { + content: never; + }; + }; + }; + /** + * Get IDs of deleted worklogs + * @description Returns a list of IDs and delete timestamps for worklogs deleted after a date and time. + * + * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set to true on the last page of worklogs. + * + * This resource does not return worklogs deleted during the minute preceding the request. + * + * **[Permissions](#permissions) required:** Permission to access Jira. + */ + getIdsOfWorklogsDeletedSince: { + parameters: { + query?: { + /** @description The date and time, as a UNIX timestamp in milliseconds, after which deleted worklogs are returned. */ + since?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ChangedWorklogs"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get worklogs + * @description Returns worklog details for a list of worklog IDs. + * + * The returned list of worklogs is limited to 1000 items. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, worklogs are only returned where either of the following is true: + * + * * the worklog is set as *Viewable by All Users*. + * * the user is a member of a project role or group with permission to view the worklog. + */ + getWorklogsForIds: { + parameters: { + query?: { + /** @description Use [expand](#expansion) to include additional information about worklogs in the response. This parameter accepts `properties` that returns the properties of each worklog. */ + expand?: string; + }; + }; + /** @description A JSON object containing a list of worklog IDs. */ + requestBody: { + content: { + /** + * @example { + * "ids": [ + * 1, + * 2, + * 5, + * 10 + * ] + * } + */ + "application/json": components["schemas"]["WorklogIdsRequestBean"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["Worklog"][]; + }; + }; + /** @description Returned if the request contains more than 1000 worklog IDs or is empty. */ + 400: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get IDs of updated worklogs + * @description Returns a list of IDs and update timestamps for worklogs updated after a date and time. + * + * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set to true on the last page of worklogs. + * + * This resource does not return worklogs updated during the minute preceding the request. + * + * **[Permissions](#permissions) required:** Permission to access Jira, however, worklogs are only returned where either of the following is true: + * + * * the worklog is set as *Viewable by All Users*. + * * the user is a member of a project role or group with permission to view the worklog. + */ + getIdsOfWorklogsModifiedSince: { + parameters: { + query?: { + /** @description The date and time, as a UNIX timestamp in milliseconds, after which updated worklogs are returned. */ + since?: number; + /** @description Use [expand](#expansion) to include additional information about worklogs in the response. This parameter accepts `properties` that returns the properties of each worklog. */ + expand?: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ChangedWorklogs"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + }; + }; + /** + * Get app properties + * @description Gets all the properties of an app. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + * Additionally, Forge apps published on the Marketplace can access properties of Connect apps they were [migrated from](https://developer.atlassian.com/platform/forge/build-a-connect-on-forge-app/). + */ + "AddonPropertiesResource.getAddonProperties_get": { + parameters: { + path: { + /** @description The key of the app, as defined in its descriptor. */ + addonKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + }; + }; + /** + * Get app property + * @description Returns the key and value of an app's property. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + * Additionally, Forge apps published on the Marketplace can access properties of Connect apps they were [migrated from](https://developer.atlassian.com/platform/forge/build-a-connect-on-forge-app/). + */ + "AddonPropertiesResource.getAddonProperty_get": { + parameters: { + path: { + /** @description The key of the app, as defined in its descriptor. */ + addonKey: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the property key is longer than 127 characters. */ + 400: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the property is not found or doesn't belong to the app. */ + 404: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + }; + }; + /** + * Set app property + * @description Sets the value of an app's property. Use this resource to store custom data for your app. + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + */ + "AddonPropertiesResource.putAddonProperty_put": { + parameters: { + path: { + /** @description The key of the app, as defined in its descriptor. */ + addonKey: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the property is updated. */ + 200: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned is the property is created. */ + 201: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** + * @description Returned if: + * * the property key is longer than 127 characters. + * * the value is not valid JSON. + * * the value is longer than 32768 characters. + */ + 400: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + }; + }; + /** + * Delete app property + * @description Deletes an app's property. + * + * **[Permissions](#permissions) required:** Only a Connect app whose key matches `addonKey` can make this request. + */ + "AddonPropertiesResource.deleteAddonProperty_delete": { + parameters: { + path: { + /** @description The key of the app, as defined in its descriptor. */ + addonKey: string; + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the property key is longer than 127 characters. */ + 400: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the property is not found or doesn't belong to the app. */ + 404: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + }; + }; + /** + * Get modules + * @description Returns all modules registered dynamically by the calling app. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request. + */ + "DynamicModulesResource.getModules_get": { + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ConnectModules"]; + }; + }; + /** @description Returned if the call is not from a Connect app. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorMessage"]; + }; + }; + }; + }; + /** + * Register modules + * @description Registers a list of modules. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request. + */ + "DynamicModulesResource.registerModules_post": { + requestBody: { + content: { + "application/json": components["schemas"]["ConnectModules"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** + * @description Returned if: + * * any of the provided modules is invalid. For example, required properties are missing. + * * any of the modules conflict with registered dynamic modules or modules defined in the app descriptor. For example, there are duplicate keys. + * + * Details of the issues encountered are included in the error message. + */ + 400: { + content: { + "application/json": components["schemas"]["ErrorMessage"]; + }; + }; + /** @description Returned if the call is not from a Connect app. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorMessage"]; + }; + }; + }; + }; + /** + * Remove modules + * @description Remove all or a list of modules registered by the calling app. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request. + */ + "DynamicModulesResource.removeModules_delete": { + parameters: { + query?: { + /** + * @description The key of the module to remove. To include multiple module keys, provide multiple copies of this parameter. + * For example, `moduleKey=dynamic-attachment-entity-property&moduleKey=dynamic-select-field`. + * Nonexistent keys are ignored. + */ + moduleKey?: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the call is not from a Connect app. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorMessage"]; + }; + }; + }; + }; + /** + * Bulk update custom field value + * @description Updates the value of a custom field added by Connect apps on one or more issues. + * The values of up to 200 custom fields can be updated. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request + */ + "AppIssueFieldValueUpdateResource.updateIssueFields_put": { + parameters: { + header: { + /** @description The ID of the transfer. */ + "Atlassian-Transfer-Id": string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "updateValueList": [ + * { + * "_type": "StringIssueField", + * "issueID": 10001, + * "fieldID": 10076, + * "string": "new string value" + * }, + * { + * "_type": "TextIssueField", + * "issueID": 10002, + * "fieldID": 10077, + * "text": "new text value" + * }, + * { + * "_type": "SingleSelectIssueField", + * "issueID": 10003, + * "fieldID": 10078, + * "optionID": "1" + * }, + * { + * "_type": "MultiSelectIssueField", + * "issueID": 10004, + * "fieldID": 10079, + * "optionID": "2" + * }, + * { + * "_type": "RichTextIssueField", + * "issueID": 10005, + * "fieldID": 10080, + * "richText": "new rich text value" + * }, + * { + * "_type": "NumberIssueField", + * "issueID": 10006, + * "fieldID": 10082, + * "number": 54 + * } + * ] + * } + */ + "application/json": components["schemas"]["ConnectCustomFieldValues"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** + * @description Returned if: + * * the transfer ID is not found. + * * the authorisation credentials are incorrect or missing. + */ + 403: { + content: never; + }; + }; + }; + /** + * Bulk update entity properties + * @description Updates the values of multiple entity properties for an object, up to 50 updates per request. This operation is for use by Connect apps during app migration. + */ + "MigrationResource.updateEntityPropertiesValue_put": { + parameters: { + header: { + /** @description The app migration transfer ID. */ + "Atlassian-Transfer-Id": string; + }; + path: { + /** @description The type indicating the object that contains the entity properties. */ + entityType: + | "IssueProperty" + | "CommentProperty" + | "DashboardItemProperty" + | "IssueTypeProperty" + | "ProjectProperty" + | "UserProperty" + | "WorklogProperty" + | "BoardProperty" + | "SprintProperty"; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["EntityPropertyDetails"][]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: never; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authorisation credentials are incorrect or missing. */ + 403: { + content: never; + }; + }; + }; + /** + * Get workflow transition rule configurations + * @description Returns configurations for workflow transition rules migrated from server to cloud and owned by the calling Connect app. + */ + "MigrationResource.workflowRuleSearch_post": { + parameters: { + header: { + /** @description The app migration transfer ID. */ + "Atlassian-Transfer-Id": string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["WorkflowRulesSearch"]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowRulesSearchDetails"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: never; + }; + /** @description Returned if the authorisation credentials are incorrect or missing. */ + 403: { + content: never; + }; + }; + }; + /** + * Retrieve the attributes of service registries + * @description Retrieve the attributes of given service registries. + * + * **[Permissions](#permissions) required:** Only Connect apps can make this request and the servicesIds belong to the tenant you are requesting + */ + "ServiceRegistryResource.services_get": { + parameters: { + query: { + /** + * @description The ID of the services (the strings starting with "b:" need to be decoded in Base64). + * @example ["ari:cloud:graph::service/ca075ed7-6ea7-4563-acb3-000000000000/f51d7252-61e0-11ee-b94d-000000000000", "ari:cloud:graph::service/ca075ed7-6ea7-4563-acb3-000000000000/f51d7252-61e0-11ee-b94d-000000000001"] + */ + serviceIds: string[]; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["ServiceRegistry"][]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description The request needs to be authenticated. */ + 401: { + content: never; + }; + /** @description The request isn't authorized. */ + 403: { + content: never; + }; + /** @description The endpoint failed internally. */ + 500: { + content: never; + }; + /** @description The endpoint isn't ready for receiving requests. */ + 501: { + content: never; + }; + /** @description The upstream service is busy. */ + 504: { + content: never; + }; + }; + }; + /** + * Set app property (Forge) + * @description Sets the value of a Forge app's property. + * These values can be retrieved in [Jira expressions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) + * through the `app` [context variable](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#context-variables). + * + * For other use cases, use the [Storage API](https://developer.atlassian.com/platform/forge/runtime-reference/storage-api/). + * + * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum length is 32768 characters. + * + * **[Permissions](#permissions) required:** Only Forge apps can make this request. + */ + "AddonPropertiesResource.putAppProperty_put": { + parameters: { + path: { + /** @description The key of the property. */ + propertyKey: string; + }; + }; + requestBody: { + content: { + "application/json": unknown; + }; + }; + responses: { + /** @description Returned if the property is updated. */ + 200: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned is the property is created. */ + 201: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** + * @description Returned if: + * * the property key is longer than 127 characters. + * * the value isn't valid JSON. + * * the value is longer than 32768 characters. + */ + 400: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request isn't made directly by an app or if it's an impersonated request. */ + 403: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Delete app property (Forge) + * @description Deletes a Forge app's property. + * + * **[Permissions](#permissions) required:** Only Forge apps can make this request. + */ + "AddonPropertiesResource.deleteAppProperty_delete": { + parameters: { + path: { + /** @description The key of the property. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 204: { + content: never; + }; + /** @description Returned if the property key is longer than 127 characters. */ + 400: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: never; + }; + /** @description Returned if the request isn't made directly by an app or if it's an impersonated request. */ + 403: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the property isn't found or doesn't belong to the app. */ + 404: { + content: { + "application/json": components["schemas"]["OperationMessage"]; + }; + }; + }; + }; +} diff --git a/src/generated/openapi-server.ts b/src/generated/openapi-server.ts new file mode 100644 index 0000000..f300064 --- /dev/null +++ b/src/generated/openapi-server.ts @@ -0,0 +1,9275 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ + +export interface paths { + "/api/2/application-properties": { + /** @description Returns an application property. */ + get: operations["getProperty"]; + }; + "/api/2/application-properties/advanced-settings": { + /** @description Returns the properties that are displayed on the "General Configuration > Advanced Settings" page. */ + get: operations["getAdvancedSettings"]; + }; + "/api/2/application-properties/{id}": { + /** @description Modify an application property via PUT. The "value" field present in the PUT will override the existing value. */ + put: operations["setPropertyViaRestfulTable"]; + parameters: { + path: { + id: string; + }; + }; + }; + "/api/2/applicationrole": { + /** + * @description Returns all ApplicationRoles in the system. Will also return an ETag header containing a version hash of the + * collection of ApplicationRoles. + */ + get: operations["getAll"]; + /** + * @description Updates the ApplicationRoles with the passed data if the version hash is the same as the server. + * Only the groups and default groups setting of the role may be updated. Requests to change the key + * or the name of the role will be silently ignored. It is acceptable to pass only the roles that are updated + * as roles that are present in the server but not in data to update with, will not be deleted. + */ + put: operations["putBulk"]; + }; + "/api/2/applicationrole/{key}": { + /** @description Returns the ApplicationRole with passed key if it exists. */ + get: operations["get"]; + /** + * @description Updates the ApplicationRole with the passed data. Only the groups and default groups setting of the + * role may be updated. Requests to change the key or the name of the role will be silently ignored. + *

+ * Optional: If versionHash is passed through the If-Match header the request will be rejected if not the + * same as server + */ + put: operations["put"]; + parameters: { + path: { + /** @description the key of the role to update. */ + key: string; + }; + }; + }; + "/api/2/attachment/meta": { + /** + * @description Returns the meta information for an attachments, specifically if they are enabled and the maximum upload size + * allowed. + */ + get: operations["getAttachmentMeta"]; + }; + "/api/2/attachment/{id}": { + /** @description Returns the meta-data for an attachment, including the URI of the actual attached file. */ + get: operations["getAttachment"]; + /** @description Remove an attachment from an issue. */ + delete: operations["removeAttachment"]; + parameters: { + path: { + /** @description id of the attachment to remove */ + id: string; + }; + }; + }; + "/api/2/attachment/{id}/expand/human": { + /** @description Tries to expand an attachment. Output is human-readable and subject to change. */ + get: operations["expandForHumans"]; + parameters: { + path: { + /** @description the id of the attachment to expand. */ + id: string; + }; + }; + }; + "/api/2/attachment/{id}/expand/raw": { + /** @description Tries to expand an attachment. Output is raw and should be backwards-compatible through the course of time. */ + get: operations["expandForMachines"]; + parameters: { + path: { + /** @description the id of the attachment to expand. */ + id: string; + }; + }; + }; + "/api/2/auditing/record": { + /** @description Returns auditing records filtered using provided parameters */ + get: operations["getRecords"]; + /** @description Store a record in audit log */ + post: operations["addRecord"]; + }; + "/api/2/avatar/{type}/system": { + /** @description Returns all system avatars of the given type. */ + get: operations["getAllSystemAvatars"]; + parameters: { + path: { + /** @description the avatar type */ + type: string; + }; + }; + }; + "/api/2/avatar/{type}/temporary": { + /** @description Creates temporary avatar */ + post: operations["storeTemporaryAvatar"]; + parameters: { + path: { + /** @description the avatar type */ + type: string; + }; + }; + }; + "/api/2/avatar/{type}/temporaryCrop": { + /** @description Updates the cropping instructions of the temporary avatar. */ + post: operations["createAvatarFromTemporary"]; + parameters: { + path: { + /** @description the avatar type */ + type: string; + }; + }; + }; + "/api/2/cluster/index-snapshot/{nodeId}": { + /** @description request current index from node (the request is processed asynchronously) */ + put: operations["requestCurrentIndexFromNode"]; + parameters: { + path: { + nodeId: string; + }; + }; + }; + "/api/2/cluster/node/{nodeId}": { + /** @description Delete the node from the cluster if state of node is OFFLINE. */ + delete: operations["deleteNode"]; + parameters: { + path: { + nodeId: string; + }; + }; + }; + "/api/2/cluster/node/{nodeId}/offline": { + /** + * @description Change the node's state to offline if the node is reporting as active, but is not alive. + * Don't use this method as an equivalent of running ./stop-jira.sh. This method doesn't shut down + * a node, but only changes its state, so that other nodes don't communicate with it. + */ + put: operations["changeNodeStateToOffline"]; + parameters: { + path: { + nodeId: string; + }; + }; + }; + "/api/2/cluster/nodes": { + get: operations["getAllNodes"]; + }; + "/api/2/cluster/zdu/approve": { + post: operations["approveUpgrade"]; + }; + "/api/2/cluster/zdu/cancel": { + post: operations["cancelUpgrade"]; + }; + "/api/2/cluster/zdu/retryUpgrade": { + post: operations["acknowledgeErrors"]; + }; + "/api/2/cluster/zdu/start": { + post: operations["setReadyToUpgrade"]; + }; + "/api/2/cluster/zdu/state": { + get: operations["getState"]; + }; + "/api/2/comment/{commentId}/properties": { + /** @description Returns the keys of all properties for the comment identified by the key or by the id. */ + get: operations["getPropertiesKeys"]; + parameters: { + path: { + /** @description the comment from which keys will be returned. */ + commentId: string; + }; + }; + }; + "/api/2/comment/{commentId}/properties/{propertyKey}": { + /** + * @description Returns the value of the property with a given key from the comment identified by the key or by the id. The user who retrieves + * the property is required to have permissions to read the comment. + */ + get: operations["getProperty"]; + /** + * @description Sets the value of the specified comment's property. + *

+ * You can use this resource to store a custom data against the comment identified by the key or by the id. The user + * who stores the data is required to have permissions to administer the comment. + *

+ */ + put: operations["setProperty"]; + /** + * @description Removes the property from the comment identified by the key or by the id. Ths user removing the property is required + * to have permissions to administer the comment. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + /** @description the comment from which keys will be returned. */ + commentId: string; + /** @description the key of the property to return. */ + propertyKey: string; + }; + }; + }; + "/api/2/component": { + /** @description Create a component via POST. */ + post: operations["createComponent"]; + }; + "/api/2/component/page": { + /** @description Returns paginated list of filtered active components */ + get: operations["getPaginatedComponents"]; + }; + "/api/2/component/{id}": { + /** @description Returns a project component. */ + get: operations["getComponent"]; + /** + * @description Modify a component via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field + * is not present, it is silently ignored. + *

+ * If leadUserName is an empty string ("") the component lead will be removed. + */ + put: operations["updateComponent"]; + /** @description Delete a project component. */ + delete: operations["delete"]; + parameters: { + path: { + /** @description The component to delete. */ + id: string; + }; + }; + }; + "/api/2/component/{id}/relatedIssueCounts": { + /** @description Returns counts of issues related to this component. */ + get: operations["getComponentRelatedIssues"]; + parameters: { + path: { + /** @description a String containing the component id */ + id: string; + }; + }; + }; + "/api/2/configuration": { + /** + * @description Returns the information if the optional features in Jira are enabled or disabled. If the time tracking is enabled, + * it also returns the detailed information about time tracking configuration. + */ + get: operations["getConfiguration"]; + }; + "/api/2/customFieldOption/{id}": { + /** @description Returns a full representation of the Custom Field Option that has the given id. */ + get: operations["getCustomFieldOption"]; + parameters: { + path: { + /** @description a String containing an Custom Field Option id */ + id: string; + }; + }; + }; + "/api/2/customFields": { + get: operations["getCustomFields"]; + delete: operations["bulkDeleteCustomFields"]; + }; + "/api/2/customFields/{customFieldId}/options": { + /** + * @description Returns custom field's options defined in a given context composed of projects and issue types. + *

+ * If the projects and issue types match more than one context or the context for such a combination does not exist then no options are returned. + */ + get: operations["getCustomFieldOptions"]; + parameters: { + path: { + /** @description id of a custom field. */ + customFieldId: number; + }; + }; + }; + "/api/2/dashboard": { + /** @description Returns a list of all dashboards, optionally filtering them. */ + get: operations["list"]; + }; + "/api/2/dashboard/{dashboardId}/items/{itemId}/properties": { + /** @description Returns the keys of all properties for the dashboard item identified by the id. */ + get: operations["getPropertiesKeys"]; + parameters: { + path: { + /** @description the dashboard item from which keys will be returned. */ + itemId: string; + dashboardId: string; + }; + }; + }; + "/api/2/dashboard/{dashboardId}/items/{itemId}/properties/{propertyKey}": { + /** + * @description Returns the value of the property with a given key from the dashboard item identified by the id. + * The user who retrieves the property is required to have permissions to read the dashboard item. + */ + get: operations["getProperty"]; + /** + * @description Sets the value of the specified dashboard item's property. + *

+ * You can use this resource to store a custom data against the dashboard item identified by the id. + * The user who stores the data is required to have permissions to administer the dashboard item. + *

+ */ + put: operations["setProperty"]; + /** + * @description Removes the property from the dashboard item identified by the key or by the id. Ths user removing the property is required + * to have permissions to administer the dashboard item. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + /** @description the dashboard item from which keys will be returned. */ + itemId: string; + dashboardId: string; + /** @description the key of the property to return. */ + propertyKey: string; + }; + }; + }; + "/api/2/dashboard/{id}": { + /** @description Returns a single dashboard. */ + get: operations["getDashboard"]; + parameters: { + path: { + /** @description the dashboard id */ + id: string; + }; + }; + }; + "/api/2/email-templates": { + /** @description Creates a zip file containing email templates at local home and returns the file. */ + get: operations["downloadEmailTemplates"]; + /** @description Extracts given zip file to temporary templates folder. If the folder already exists it will replace it's content */ + post: operations["uploadEmailTemplates"]; + }; + "/api/2/email-templates/apply": { + /** @description Replaces the current email templates pack with previously uploaded one, if exists. */ + post: operations["applyEmailTemplates"]; + }; + "/api/2/email-templates/revert": { + /** @description Replaces the current email templates pack with default templates, which are copied over from Jira binaries. */ + post: operations["revertEmailTemplatesToDefault"]; + }; + "/api/2/email-templates/types": { + /** @description Returns a list of root templates mapped with Event Types. The list can be used to decide which test emails to send. */ + get: operations["getEmailTypes"]; + }; + "/api/2/field": { + /** @description Returns a list of all fields, both System and Custom */ + get: operations["getFields"]; + /** @description Creates a custom field using a definition (object encapsulating custom field data) */ + post: operations["createCustomField"]; + }; + "/api/2/filter": { + /** + * @description Creates a new filter, and returns newly created filter. + * Currently sets permissions just using the users default sharing permissions + */ + post: operations["createFilter"]; + }; + "/api/2/filter/defaultShareScope": { + /** @description Returns the default share scope of the logged-in user. */ + get: operations["getDefaultShareScope"]; + /** + * @description Sets the default share scope of the logged-in user. + *

+ * Available values are: AUTHENTICATED (for sharing with all logged-in users) and PRIVATE (for no shares). + */ + put: operations["setDefaultShareScope"]; + }; + "/api/2/filter/favourite": { + /** @description Returns the favourite filters of the logged-in user. */ + get: operations["getFavouriteFilters"]; + }; + "/api/2/filter/{id}": { + /** @description Returns a filter given an id */ + get: operations["getFilter"]; + /** + * @description Updates an existing filter, and returns its new value. + *

+ * The following properties of a filter can be updated: 'jql', 'name', 'description'. + * Additionally, administrators can also update the 'owner' field. + * To get, set or unset 'favourite', use rest/api/1.0/filters/{id}/favourite with GET, PUT and DELETE methods instead. + *

+ */ + put: operations["editFilter"]; + /** @description Delete a filter. */ + delete: operations["deleteFilter"]; + parameters: { + path: { + /** @description the id of the filter being looked up */ + id: number; + }; + }; + }; + "/api/2/filter/{id}/columns": { + /** + * @description Returns the default columns for the given filter. Currently logged in user will be used as + * the user making such request. + */ + get: operations["defaultColumns"]; + /** @description Sets the default columns for the given filter. */ + put: operations["setColumns"]; + /** @description Resets the columns for the given filter such that the filter no longer has its own column config. */ + delete: operations["resetColumns"]; + parameters: { + path: { + /** @description id of the filter */ + id: number; + }; + }; + }; + "/api/2/filter/{id}/permission": { + /** @description Returns all share permissions of the given filter. */ + get: operations["getSharePermissions"]; + /** @description Adds a share permissions to the given filter. Adding a global permission removes all previous permissions from the filter. */ + post: operations["addSharePermission"]; + parameters: { + path: { + id: number; + }; + }; + }; + "/api/2/filter/{id}/permission/{permission-id}": { + /** @description Removes a share permissions from the given filter. */ + delete: operations["deleteSharePermission"]; + parameters: { + path: { + id: number; + "permission-id": number; + }; + }; + }; + "/api/2/filter/{id}/permission/{permissionId}": { + /** @description Returns a single share permission of the given filter. */ + get: operations["getSharePermission"]; + parameters: { + path: { + permissionId: number; + id: number; + }; + }; + }; + "/api/2/group": { + /** + * @description Returns REST representation for the requested group. Allows to get list of active users belonging to the + * specified group and its subgroups if "users" expand option is provided. You can page through users list by using + * indexes in expand param. For example to get users from index 10 to index 15 use "users[10:15]" expand value. This + * will return 6 users (if there are at least 16 users in this group). Indexes are 0-based and inclusive. + *

+ * This resource is deprecated, please use group/member API instead. + */ + get: operations["getGroup"]; + /** + * @description Creates a group by given group parameter + *

+ * Returns REST representation for the requested group. + */ + post: operations["createGroup"]; + /** + * @description Deletes a group by given group parameter. + *

+ * Returns no content + */ + delete: operations["removeGroup"]; + }; + "/api/2/group/member": { + /** + * @description This resource returns a paginated list of users who are members of the specified group and its subgroups. + * Users in the page are ordered by user names. User of this resource is required to have sysadmin or admin permissions. + */ + get: operations["getUsersFromGroup"]; + }; + "/api/2/group/user": { + /** + * @description Adds given user to a group. + *

+ * Returns the current state of the group. + */ + post: operations["addUserToGroup"]; + /** + * @description Removes given user from a group. + *

+ * Returns no content + */ + delete: operations["removeUserFromGroup"]; + }; + "/api/2/groups/picker": { + /** + * @description Returns groups with substrings matching a given query. This is mainly for use with + * the group picker, so the returned groups contain html to be used as picker suggestions. + * The groups are also wrapped in a single response object that also contains a header for + * use in the picker, specifically Showing X of Y matching groups. + *

+ * The number of groups returned is limited by the system property "jira.ajax.autocomplete.limit" + *

+ * The groups will be unique and sorted. + */ + get: operations["findGroups"]; + }; + "/api/2/groupuserpicker": { + /** + * @description Returns a list of users and groups matching query with highlighting. This resource cannot be accessed + * anonymously. + */ + get: operations["findUsersAndGroups"]; + }; + "/api/2/index-snapshot": { + /** + * @description Lists available index snapshots absolute paths with timestamps. + *

+ * Only System Administrator can request listing index snapshots. + */ + get: operations["listIndexSnapshot"]; + /** + * @description Tries to start taking an index snapshot if no other snapshot creation process is in progress. + * Performs a cleanup of index snapshots directory so only a limited number of most recent snapshots are persisted. + * If another snapshot creation process is in progress, returns 409 without waiting for the other process to complete. + *

+ * Only System Administrator can request creation of snapshot. There is no guarantee as to the time after which the snapshot will be available. + */ + post: operations["createIndexSnapshot"]; + }; + "/api/2/index-snapshot/isRunning": { + /** + * @description Answers true if index snapshot creation is currently running. + *

+ * Only System Administrator can request current snapshot creation status. + */ + get: operations["isIndexSnapshotRunning"]; + }; + "/api/2/index/summary": { + /** + * @description Summarizes index condition of current node. + *

+ * Returned data consists of: + *

    + *
  • nodeId - Node identifier.
  • + *
  • reportTime - Time of this report creation.
  • + *
  • issueIndex - Summary of issue index status.
  • + *
  • replicationQueues - Map of index replication queues, where + * keys represent nodes from which replication operations came from.
  • + *
+ *

+ * issueIndex can contain: + *

    + *
  • indexReadable - If false the end point failed to read data from issue index + * (check Jira logs for detailed stack trace), otherwise true. + * When false other fields of issueIndex can be not visible.
  • + *
  • countInDatabase - Count of issues found in database.
  • + *
  • countInIndex - Count of issues found while querying index.
  • + *
  • lastUpdatedInDatabase - Time of last update of issue found in database.
  • + *
  • lastUpdatedInIndex - Time of last update of issue found while querying index.
  • + *
+ *

+ * replicationQueues's map values can contain: + *

    + *
  • lastConsumedOperation - Last executed index replication operation by current node from sending node's queue.
  • + *
  • lastConsumedOperation.id - Identifier of the operation.
  • + *
  • lastConsumedOperation.replicationTime - Time when the operation was sent to other nodes.
  • + *
  • lastOperationInQueue - Last index replication operation in sending node's queue.
  • + *
  • lastOperationInQueue.id - Identifier of the operation.
  • + *
  • lastOperationInQueue.replicationTime - Time when the operation was sent to other nodes.
  • + *
  • queueSize - Number of operations in queue from sending node to current node.
  • + *
+ */ + get: operations["getIndexSummary"]; + }; + "/api/2/issue": { + /** + * @description Creates an issue or a sub-task from a JSON representation. + *

+ * The fields that can be set on create, in either the fields parameter or the update parameter can be determined + * using the /rest/api/2/issue/createmeta resource. + * If a field is not configured to appear on the create screen, then it will not be in the createmeta, and a field + * validation error will occur if it is submitted. + *

+ * Creating a sub-task is similar to creating a regular issue, with two important differences: + *

    + *
  • the issueType field must correspond to a sub-task issue type (you can use + * /issue/createmeta to discover sub-task issue types), and
  • + *
  • you must provide a parent field in the issue create request containing the id or key of the + * parent issue.
  • + *
  • The updateHistory param adds the project that this issue is created in, to the current user's project history, + * if set to true (by default, the project history is not updated).
  • + *
  • You can view the project history in the Jira application, via the Projects dropdown.
  • + *
+ */ + post: operations["createIssue"]; + }; + "/api/2/issue/archive": { + /** @description Archives a list of issues. */ + post: operations["archiveIssues"]; + }; + "/api/2/issue/bulk": { + /** + * @description Creates issues or sub-tasks from a JSON representation. + *

+ * Creates many issues in one bulk operation. + *

+ * Creating a sub-task is similar to creating a regular issue. More details can be found in createIssue section: + * {@link IssueResource#createIssue(boolean, IssueUpdateBean)}}} + */ + post: operations["createIssues"]; + }; + "/api/2/issue/createmeta/{projectIdOrKey}/issuetypes": { + /** + * @description Returns the metadata for issue types used for creating issues. + * Data will not be returned if the user does not have permission to create issues in that project. + */ + get: operations["getCreateIssueMetaProjectIssueTypes"]; + parameters: { + path: { + /** @description to get metadata for */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/issue/createmeta/{projectIdOrKey}/issuetypes/{issueTypeId}": { + /** + * @description Returns the metadata for issue types used for creating issues. + * Data will not be returned if the user does not have permission to create issues in that project. + */ + get: operations["getCreateIssueMetaFields"]; + parameters: { + path: { + /** @description to get metadata for */ + issueTypeId: string; + /** @description to get metadata for */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/issue/picker": { + /** + * @description Returns suggested issues which match the auto-completion query for the user which executes this request. This REST + * method will check the user's history and the user's browsing context and select this issues, which match the query. + */ + get: operations["getIssuePickerResource"]; + }; + "/api/2/issue/{issueIdOrKey}": { + /** + * @description Returns a full representation of the issue for the given issue key. + *

+ * An issue JSON consists of the issue key, a collection of fields, + * a link to the workflow transition sub-resource, and (optionally) the HTML rendered values of any fields that support it + * (e.g. if wiki syntax is enabled for the description or comments). + *

+ * The fields param (which can be specified multiple times) gives a comma-separated list of fields + * to include in the response. This can be used to retrieve a subset of fields. + * A particular field can be excluded by prefixing it with a minus. + *

+ * By default, all (*all) fields are returned in this get-issue resource. Note: the default is different + * when doing a jql search -- the default there is just navigable fields (*navigable). + *

    + *
  • *all - include all fields
  • + *
  • *navigable - include just navigable fields
  • + *
  • summary,comment - include just the summary and comments
  • + *
  • -comment - include everything except comments (the default is *all for get-issue)
  • + *
  • *all,-comment - include everything except comments
  • + *
+ *

+ * The {@code properties} param is similar to {@code fields} and specifies a comma-separated list of issue + * properties to include. Unlike {@code fields}, properties are not included by default. To include them all + * send {@code ?properties=*all}. You can also include only specified properties or exclude some properties + * with a minus (-) sign. + *

+ *

    + *
  • {@code *all} - include all properties
  • + *
  • {@code *all, -prop1} - include all properties except {@code prop1}
  • + *
  • {@code prop1, prop1} - include {@code prop1} and {@code prop2} properties
  • + *
+ *

+ *

+ * Jira will attempt to identify the issue by the issueIdOrKey path parameter. This can be an issue id, + * or an issue key. If the issue cannot be found via an exact match, Jira will also look for the issue in a case-insensitive way, or + * by looking to see if the issue was moved. In either of these cases, the request will proceed as normal (a 302 or other redirect + * will not be returned). The issue key contained in the response will indicate the current value of issue's key. + *

+ * The expand param is used to include, hidden by default, parts of response. This can be used to include: + *

    + *
  • renderedFields - field values in HTML format
  • + *
  • names - display name of each field
  • + *
  • schema - schema for each field which describes a type of the field
  • + *
  • transitions - all possible transitions for the given issue
  • + *
  • operations - all possibles operations which may be applied on issue
  • + *
  • editmeta - information about how each field may be edited. It contains field's schema as well.
  • + *
  • changelog - history of all changes of the given issue
  • + *
  • versionedRepresentations - + * REST representations of all fields. Some field may contain more recent versions. RESET representations are numbered. + * The greatest number always represents the most recent version. It is recommended that the most recent version is used. + * version for these fields which provide a more recent REST representation. + * After including versionedRepresentations "fields" field become hidden.
  • + *
+ */ + get: operations["getIssue"]; + /** + * @description Edits an issue from a JSON representation. + *

+ * The issue can either be updated by setting explicit the field value(s) + * or by using an operation to change the field value. + *

+ * The fields that can be updated, in either the fields parameter or the update parameter, can be determined + * using the /rest/api/2/issue/{issueIdOrKey}/editmeta resource.
+ * If a field is not configured to appear on the edit screen, then it will not be in the editmeta, and a field + * validation error will occur if it is submitted. + *

+ * Specifying a "field_id": field_value in the "fields" is a shorthand for a "set" operation in the "update" section.
+ * Field should appear either in "fields" or "update", not in both. + */ + put: operations["editIssue"]; + /** + * @description Delete an issue. + *

+ * If the issue has subtasks you must set the parameter deleteSubtasks=true to delete the issue. + * You cannot delete an issue without its subtasks also being deleted. + */ + delete: operations["deleteIssue"]; + parameters: { + path: { + /** @description the issue id or key to update (i.e. JRA-1330) */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/archive": { + /** @description Archives an issue. */ + put: operations["archiveIssue"]; + parameters: { + path: { + /** @description Issue id or issue key */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/assignee": { + /** + * @description Assigns an issue to a user. + * You can use this resource to assign issues when the user submitting the request has the assign permission but not the + * edit issue permission. + * If the name is "-1" automatic assignee is used. A null name will remove the assignee. + */ + put: operations["assign"]; + parameters: { + path: { + /** @description a String containing an issue key */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/attachments": { + /** + * @description Add one or more attachments to an issue. + *

+ * This resource expects a multipart post. The media-type multipart/form-data is defined in RFC 1867. Most client + * libraries have classes that make dealing with multipart posts simple. For instance, in Java the Apache HTTP Components + * library provides a + * MultiPartEntity + * that makes it simple to submit a multipart POST. + *

+ * In order to protect against XSRF attacks, because this method accepts multipart/form-data, it has XSRF protection + * on it. This means you must submit a header of X-Atlassian-Token: no-check with the request, otherwise it will be + * blocked. + *

+ * The name of the multipart/form-data parameter that contains attachments must be "file" + *

+ * A simple example to upload a file called "myfile.txt" to issue REST-123: + *

curl -D- -u admin:admin -X POST -H "X-Atlassian-Token: no-check" -F "file=@myfile.txt" http://myhost/rest/api/2/issue/TEST-123/attachments
+ */ + post: operations["addAttachment"]; + parameters: { + path: { + /** @description the issue that you want to add the attachments to */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/comment": { + /** + * @description Returns all comments for an issue. + *

+ * Results can be ordered by the "created" field which means the date a comment was added. + *

+ */ + get: operations["getComments"]; + /** @description Adds a new comment to an issue. */ + post: operations["addComment"]; + parameters: { + path: { + /** @description a string containing the issue id or key the comment will be added to */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/comment/{id}": { + /** @description Returns a single comment. */ + get: operations["getComment"]; + /** @description Updates an existing comment using its JSON representation. */ + put: operations["updateComment"]; + /** @description Deletes an existing comment . */ + delete: operations["deleteComment"]; + parameters: { + path: { + /** @description of the issue the comment belongs to */ + issueIdOrKey: string; + /** @description the ID of the comment to request */ + id: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/comment/{id}/pin": { + put: operations["setPinComment"]; + parameters: { + path: { + issueIdOrKey: string; + id: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/editmeta": { + /** + * @description Returns the meta data for editing an issue. + *

+ * The fields in the editmeta correspond to the fields in the edit screen for the issue. + * Fields not in the screen will not be in the editmeta. + */ + get: operations["getEditIssueMeta"]; + parameters: { + path: { + /** @description the issue whose edit meta data you want to view */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/notify": { + /** @description Sends a notification (email) to the list or recipients defined in the request. */ + post: operations["notify"]; + parameters: { + path: { + /** @description a string containing the issue id or key the comment will be added to */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/pinned-comments": { + /** @description Returns all pinned to the issue comments. */ + get: operations["getPinnedComments"]; + parameters: { + path: { + /** @description of the issue the comment belongs to */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/properties": { + /** @description Returns the keys of all properties for the issue identified by the key or by the id. */ + get: operations["getPropertiesKeys"]; + parameters: { + path: { + /** @description the issue from which keys will be returned. */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/properties/{propertyKey}": { + /** + * @description Returns the value of the property with a given key from the issue identified by the key or by the id. The user who retrieves + * the property is required to have permissions to read the issue. + */ + get: operations["getProperty"]; + /** + * @description Sets the value of the specified issue's property. + *

+ * You can use this resource to store a custom data against the issue identified by the key or by the id. The user + * who stores the data is required to have permissions to edit the issue. + *

+ */ + put: operations["setProperty"]; + /** + * @description Removes the property from the issue identified by the key or by the id. Ths user removing the property is required + * to have permissions to edit the issue. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + /** @description the issue from which keys will be returned. */ + issueIdOrKey: string; + /** @description the key of the property to return. */ + propertyKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/remotelink": { + /** @description A REST sub-resource representing the remote issue links on the issue. */ + get: operations["getRemoteIssueLinks"]; + /** + * @description Creates or updates a remote issue link from a JSON representation. If a globalId is provided and a remote issue link + * exists with that globalId, the remote issue link is updated. Otherwise, the remote issue link is created. + */ + post: operations["createOrUpdateRemoteIssueLink"]; + /** @description Delete the remote issue link with the given global id on the issue. */ + delete: operations["deleteRemoteIssueLinkByGlobalId"]; + parameters: { + path: { + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/remotelink/{linkId}": { + /** @description Get the remote issue link with the given id on the issue. */ + get: operations["getRemoteIssueLinkById"]; + /** @description Updates a remote issue link from a JSON representation. Any fields not provided are set to null. */ + put: operations["updateRemoteIssueLink"]; + /** @description Delete the remote issue link with the given id on the issue. */ + delete: operations["deleteRemoteIssueLinkById"]; + parameters: { + path: { + /** @description the id of the remote issue link */ + linkId: string; + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/restore": { + /** @description Restores an archived issue. */ + put: operations["restoreIssue"]; + parameters: { + path: { + /** @description Issue id or issue key */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/subtask": { + /** @description Returns an issue's subtask list */ + get: operations["getSubTasks"]; + parameters: { + path: { + /** @description The parent issue's key or id */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/subtask/move": { + get: operations["canMoveSubTask"]; + /** + * @description Reorders an issue's subtasks by moving the subtask at index "from" + * to index "to". + */ + post: operations["moveSubTasks"]; + parameters: { + path: { + /** @description The parent issue's key or id */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/transitions": { + /** + * @description Get a list of the transitions possible for this issue by the current user, along with fields that are required and their types. + *

+ * Fields will only be returned if expand=transitions.fields. + *

+ * The fields in the metadata correspond to the fields in the transition screen for that transition. + * Fields not in the screen will not be in the metadata. + */ + get: operations["getTransitions"]; + /** + * @description Perform a transition on an issue. + * When performing the transition you can update or set other issue fields. + *

+ * The fields that can be set on transtion, in either the fields parameter or the update parameter can be determined + * using the /rest/api/2/issue/{issueIdOrKey}/transitions?expand=transitions.fields resource. + * If a field is not configured to appear on the transition screen, then it will not be in the transition metadata, and a field + * validation error will occur if it is submitted. + *

+ * The updateHistory param adds the issues retrieved by this method to the current user's issue history, + * if set to true (by default, the issue history does not include issues retrieved via the REST API). + * You can view the issue history in the Jira application, via the Issues dropdown or by using the + * lastViewed JQL field in an issue search. + */ + post: operations["doTransition"]; + parameters: { + path: { + /** @description the issue you want to transition */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/votes": { + /** @description A REST sub-resource representing the voters on the issue. */ + get: operations["getVotes"]; + /** @description Cast your vote in favour of an issue. */ + post: operations["addVote"]; + /** @description Remove your vote from an issue. (i.e. "unvote") */ + delete: operations["removeVote"]; + parameters: { + path: { + /** @description the issue to view voting information for */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/watchers": { + /** @description Returns the list of watchers for the issue with the given key. */ + get: operations["getIssueWatchers"]; + /** @description Adds a user to an issue's watcher list. */ + post: operations["addWatcher"]; + /** @description Removes a user from an issue's watcher list. */ + delete: operations["removeWatcher"]; + parameters: { + path: { + /** @description a String containing an issue key. */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/worklog": { + /** + * @description Returns all work logs for an issue.
+ * Note: Work logs won't be returned if the Log work field is hidden for the project. + */ + get: operations["getIssueWorklog"]; + /** @description Adds a new worklog entry to an issue. */ + post: operations["addWorklog"]; + parameters: { + path: { + /** @description a string containing the issue id or key the worklog will be added to */ + issueIdOrKey: string; + }; + }; + }; + "/api/2/issue/{issueIdOrKey}/worklog/{id}": { + /** + * @description Returns a specific worklog.
+ * Note: The work log won't be returned if the Log work field is hidden for the project. + */ + get: operations["getWorklog"]; + /** + * @description Updates an existing worklog entry. + *

Note that:

+ *
    + *
  • Fields possible for editing are: comment, visibility, started, timeSpent and timeSpentSeconds.
  • + *
  • Either timeSpent or timeSpentSeconds can be set.
  • + *
  • Fields which are not set will not be updated.
  • + *
  • For a request to be valid, it has to have at least one field change.
  • + *
+ */ + put: operations["updateWorklog"]; + /** @description Deletes an existing worklog entry. */ + delete: operations["deleteWorklog"]; + parameters: { + path: { + /** @description a string containing the issue id or key the worklog belongs to */ + issueIdOrKey: string; + /** @description id of the worklog to be deleted */ + id: string; + }; + }; + }; + "/api/2/issueLink": { + /** + * @description Creates an issue link between two issues. + * The user requires the link issue permission for the issue which will be linked to another issue. + * The specified link type in the request is used to create the link and will create a link from the first issue + * to the second issue using the outward description. It also create a link from the second issue to the first issue using the + * inward description of the issue link type. + * It will add the supplied comment to the first issue. The comment can have a restriction who can view it. + * If group is specified, only users of this group can view this comment, if roleLevel is specified only users who have the specified role can view this comment. + * The user who creates the issue link needs to belong to the specified group or have the specified role. + */ + post: operations["linkIssues"]; + }; + "/api/2/issueLink/{linkId}": { + /** @description Returns an issue link with the specified id. */ + get: operations["getIssueLink"]; + /** + * @description Deletes an issue link with the specified id. + * To be able to delete an issue link you must be able to view both issues and must have the link issue permission + * for at least one of the issues. + */ + delete: operations["deleteIssueLink"]; + parameters: { + path: { + /** @description the issue link id. */ + linkId: string; + }; + }; + }; + "/api/2/issueLinkType": { + /** + * @description Returns a list of available issue link types, if issue linking is enabled. + * Each issue link type has an id, a name and a label for the outward and inward link relationship. + */ + get: operations["getIssueLinkTypes"]; + /** @description Create a new issue link type. */ + post: operations["createIssueLinkType"]; + }; + "/api/2/issueLinkType/{issueLinkTypeId}": { + /** @description Returns for a given issue link type id all information about this issue link type. */ + get: operations["getIssueLinkType"]; + /** @description Update the specified issue link type. */ + put: operations["updateIssueLinkType"]; + /** @description Delete the specified issue link type. */ + delete: operations["deleteIssueLinkType"]; + parameters: { + path: { + issueLinkTypeId: string; + }; + }; + }; + "/api/2/issuesecurityschemes": { + /** @description Returns all issue security schemes that are defined. */ + get: operations["getIssueSecuritySchemes"]; + }; + "/api/2/issuesecurityschemes/{id}": { + /** @description Returns the issue security scheme along with that are defined. */ + get: operations["getIssueSecurityScheme"]; + parameters: { + path: { + id: number; + }; + }; + }; + "/api/2/issuetype": { + /** @description Returns a list of all issue types visible to the user */ + get: operations["getIssueAllTypes"]; + /** + * @description Creates an issue type from a JSON representation and adds the issue newly created issue type to the default issue + * type scheme. + */ + post: operations["createIssueType"]; + }; + "/api/2/issuetype/page": { + /** @description Returns paginated list of filtered issue types */ + get: operations["getPaginatedIssueTypes"]; + }; + "/api/2/issuetype/{id}": { + /** @description Returns a full representation of the issue type that has the given id. */ + get: operations["getIssueType"]; + /** @description Updates the specified issue type from a JSON representation. */ + put: operations["updateIssueType"]; + /** + * @description Deletes the specified issue type. If the issue type has any associated issues, these issues will be migrated to + * the alternative issue type specified in the parameter. You can determine the alternative issue types by calling + * the /rest/api/2/issuetype/{id}/alternatives resource. + */ + delete: operations["deleteIssueType"]; + parameters: { + path: { + /** @description a String containing an issue type id */ + id: string; + }; + }; + }; + "/api/2/issuetype/{id}/alternatives": { + /** + * @description Returns a list of all alternative issue types for the given issue type id. The list will contain these issues types, to which + * issues assigned to the given issue type can be migrated. The suitable alternatives are issue types which are assigned + * to the same workflow, the same field configuration and the same screen scheme. + */ + get: operations["getAlternativeIssueTypes"]; + parameters: { + path: { + id: string; + }; + }; + }; + "/api/2/issuetype/{id}/avatar": { + /** @description Converts temporary avatar into a real avatar */ + post: operations["createAvatarFromTemporary"]; + parameters: { + path: { + /** @description the id of the issue type, which avatar is updated. */ + id: string; + }; + }; + }; + "/api/2/issuetype/{id}/avatar/temporary": { + /** + * @description Creates temporary avatar using multipart. The response is sent back as JSON stored in a textarea. This is because + * the client uses remote iframing to submit avatars using multipart. So we must send them a valid HTML page back from + * which the client parses the JSON from. + *

+ * Creating a temporary avatar is part of a 3-step process in uploading a new + * avatar for an issue type: upload, crop, confirm. This endpoint allows you to use a multipart upload + * instead of sending the image directly as the request body. + *

+ *

+ * You *must* use "avatar" as the name of the upload parameter:

+ *

+ *

+     *  curl -c cookiejar.txt -X POST -u admin:admin -H "X-Atlassian-Token: no-check" \
+     *    -F "avatar=@mynewavatar.png;type=image/png" \
+     *    'http://localhost:8090/jira/rest/api/2/issuetype/1/avatar/temporary'
+     *  
+ */ + post: operations["storeTemporaryAvatarUsingMultiPart"]; + parameters: { + path: { + /** @description the id of the issue type, which avatar is updated. */ + id: string; + }; + }; + }; + "/api/2/issuetype/{issueTypeId}/properties": { + /** @description Returns the keys of all properties for the issue type identified by the id. */ + get: operations["getPropertyKeys"]; + parameters: { + path: { + /** @description the issue type from which the keys will be returned */ + issueTypeId: string; + }; + }; + }; + "/api/2/issuetype/{issueTypeId}/properties/{propertyKey}": { + /** + * @description Returns the value of the property with a given key from the issue type identified by the id. The user who retrieves + * the property is required to have permissions to view the issue type. + */ + get: operations["getProperty"]; + /** + * @description Sets the value of the specified issue type's property. + *

+ * You can use this resource to store a custom data against an issue type identified by the id. The user + * who stores the data is required to have permissions to edit an issue type. + *

+ */ + put: operations["setProperty"]; + /** + * @description Removes the property from the issue type identified by the id. Ths user removing the property is required + * to have permissions to edit the issue type. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + /** @description the issue type from which the keys will be returned */ + issueTypeId: string; + /** @description the key of the property to return */ + propertyKey: string; + }; + }; + }; + "/api/2/issuetypescheme": { + /** + * @description Returns a list of all issue type schemes visible to the user (must be admin). + *

+ * All issue types associated with the scheme will only be returned if an additional query parameter is provided: + * expand=schemes.issueTypes. + *

+ *

+ * Similarly, the default issue type associated with the scheme (if one exists) will only be returned if + * additional an query parameter is provided: expand=schemes.defaultIssueType. + *

+ *

+ * Note that both query parameters can be used together: expand=schemes.issueTypes,schemes.defaultIssueType. + *

+ */ + get: operations["getAllIssueTypeSchemes"]; + /** @description Creates an issue type scheme from a JSON representation. (Admin required) */ + post: operations["createIssueTypeScheme"]; + }; + "/api/2/issuetypescheme/{schemeId}": { + /** @description Returns a full representation of the issue type scheme that has the given id (must be admin). */ + get: operations["getIssueTypeScheme"]; + /** @description Updates the specified issue type scheme from a JSON representation. (Admin required) */ + put: operations["updateIssueTypeScheme"]; + /** + * @description Deletes the specified issue type scheme. Any projects associated with this IssueTypeScheme will be automatically + * associated with the global default IssueTypeScheme. (Admin required) + */ + delete: operations["deleteIssueTypeScheme"]; + parameters: { + path: { + /** @description the id of the issue type scheme to remove. */ + schemeId: string; + }; + }; + }; + "/api/2/issuetypescheme/{schemeId}/associations": { + /** @description For the specified issue type scheme, returns all of the associated projects. (Admin required) */ + get: operations["getAssociatedProjects"]; + /** + * @description Associates the given projects with the specified issue type scheme. Any existing project-associations the issue + * type scheme has will be overwritten. (Admin required) + */ + put: operations["setProjectAssociationsForScheme"]; + /** @description Adds additional projects to those already associated with the specified issue type scheme. (Admin required) */ + post: operations["addProjectAssociationsToScheme"]; + /** + * @description Removes all project associations for the specified issue type scheme. These projects revert to an association with + * the default/global issue type scheme.(Admin required) + */ + delete: operations["removeAllProjectAssociations"]; + parameters: { + path: { + /** @description the id of the issue type scheme whose project associations we're removing */ + schemeId: string; + }; + }; + }; + "/api/2/issuetypescheme/{schemeId}/associations/{projIdOrKey}": { + /** + * @description For the specified issue type scheme, removes the given project association . This project reverts to an association + * with the default/global issue type scheme.(Admin required) + */ + delete: operations["removeProjectAssociation"]; + parameters: { + path: { + /** @description the id or key of the project that is to be un-associated with the issue type scheme */ + projIdOrKey: string; + /** @description the id of the issue type scheme whose project association we're removing */ + schemeId: string; + }; + }; + }; + "/api/2/jql/autocompletedata": { + /** @description Returns the auto complete data required for JQL searches. */ + get: operations["getAutoComplete"]; + }; + "/api/2/jql/autocompletedata/suggestions": { + /** @description Returns auto complete suggestions for JQL search. */ + get: operations["getFieldAutoCompleteForQueryString"]; + }; + "/api/2/licenseValidator": { + post: operations["validate"]; + }; + "/api/2/monitoring/app": { + get: operations["isAppMonitoringEnabled"]; + post: operations["setAppMonitoringEnabled"]; + }; + "/api/2/monitoring/ipd": { + get: operations["isIpdMonitoringEnabled"]; + post: operations["setAppMonitoringEnabled"]; + }; + "/api/2/monitoring/jmx/areMetricsExposed": { + get: operations["areMetricsExposed"]; + }; + "/api/2/monitoring/jmx/getAvailableMetrics": { + get: operations["getAvailableMetrics"]; + }; + "/api/2/monitoring/jmx/startExposing": { + post: operations["start"]; + }; + "/api/2/monitoring/jmx/stopExposing": { + post: operations["stop"]; + }; + "/api/2/mypermissions": { + /** + * @description Returns all permissions in the system and whether the currently logged in user has them. You can optionally provide a specific context to get permissions for + * (projectKey OR projectId OR issueKey OR issueId) + *
    + *
  • When no context supplied the project related permissions will return true if the user has that permission in ANY project
  • + *
  • If a project context is provided, project related permissions will return true if the user has the permissions in the specified project. + * For permissions that are determined using issue data (e.g Current Assignee), true will be returned if the user meets the permission criteria in ANY issue in that project
  • + *
  • If an issue context is provided, it will return whether or not the user has each permission in that specific issue
  • + *
+ *

+ * NB: The above means that for issue-level permissions (EDIT_ISSUE for example), hasPermission may be true when no context is provided, or when a project context is provided, + * but may be false for any given (or all) issues. This would occur (for example) if Reporters were given the EDIT_ISSUE permission. This is because + * any user could be a reporter, except in the context of a concrete issue, where the reporter is known. + *

+ *

+ * Global permissions will still be returned for all scopes. + *

+ *

+ * Prior to version 6.4 this service returned project permissions with keys corresponding to com.atlassian.jira.security.Permissions.Permission constants. + * Since 6.4 those keys are considered deprecated and this service returns system project permission keys corresponding to constants defined in com.atlassian.jira.permission.ProjectPermissions. + * Permissions with legacy keys are still also returned for backwards compatibility, they are marked with an attribute deprecatedKey=true. + * The attribute is missing for project permissions with the current keys. + *

+ */ + get: operations["getPermissions"]; + }; + "/api/2/mypreferences": { + /** + * @description Returns preference of the currently logged in user. Preference key must be provided as input parameter (key). The + * value is returned exactly as it is. If key parameter is not provided or wrong - status code 404. If value is + * found - status code 200. + */ + get: operations["getPreference"]; + /** + * @description Sets preference of the currently logged in user. Preference key must be provided as input parameters (key). Value + * must be provided as post body. If key or value parameter is not provided - status code 404. If preference is set + * - status code 204. + */ + put: operations["setPreference"]; + /** + * @description Removes preference of the currently logged in user. Preference key must be provided as input parameters (key). If + * key parameter is not provided or wrong - status code 404. If preference is unset - status code 204. + */ + delete: operations["removePreference"]; + }; + "/api/2/myself": { + /** @description Returns currently logged user. This resource cannot be accessed anonymously. */ + get: operations["getUser"]; + /** + * @description Modify currently logged user. The "value" fields present will override the existing value. + * Fields skipped in request will not be changed. Only email and display name can be change that way. + * Requires user password. + */ + put: operations["updateUser"]; + }; + "/api/2/myself/password": { + /** @description Modify caller password. */ + put: operations["changeMyPassword"]; + }; + "/api/2/notificationscheme": { + /** + * @description Returns a paginated list of notification schemes. In order to access notification scheme, the calling user is + * required to have permissions to administer at least one project associated with the requested notification scheme. Each scheme contains + * a list of events and recipient configured to receive notifications for these events. Consumer should allow events without recipients to appear in response. + * The list is ordered by the scheme's name. + * Follow the documentation of /notificationscheme/{id} resource for all details about returned value. + */ + get: operations["getNotificationSchemes"]; + }; + "/api/2/notificationscheme/{id}": { + /** + * @description Returns a full representation of the notification scheme for the given id. This resource will return a + * notification scheme containing a list of events and recipient configured to receive notifications for these events. Consumer + * should allow events without recipients to appear in response. User accessing + * the data is required to have permissions to administer at least one project associated with the requested notification scheme. + *

+ * Notification recipients can be: + *

    + *
  • current assignee - the value of the notificationType is CurrentAssignee
  • + *
  • issue reporter - the value of the notificationType is Reporter
  • + *
  • current user - the value of the notificationType is CurrentUser
  • + *
  • project lead - the value of the notificationType is ProjectLead
  • + *
  • component lead - the value of the notificationType is ComponentLead
  • + *
  • all watchers - the value of the notification type is AllWatchers
  • + *
  • configured user - the value of the notification type is User. Parameter will contain key of the user. Information about the user will be provided + * if user expand parameter is used.
  • + *
  • configured group - the value of the notification type is Group. Parameter will contain name of the group. Information about the group will be provided + * if group expand parameter is used.
  • + *
  • configured email address - the value of the notification type is EmailAddress, additionally information about the email will be provided.
  • + *
  • users or users in groups in the configured custom fields - the value of the notification type is UserCustomField or GroupCustomField. Parameter + * will contain id of the custom field. Information about the field will be provided if field expand parameter is used.
  • + *
  • configured project role - the value of the notification type is ProjectRole. Parameter will contain project role id. Information about the project role + * will be provided if projectRole expand parameter is used.
  • + *
+ * Please see the example for reference. + *

+ * The events can be Jira system events or events configured by administrator. In case of the system events, data about theirs + * ids, names and descriptions is provided. In case of custom events, the template event is included as well. + */ + get: operations["getNotificationScheme"]; + parameters: { + path: { + /** @description an id of the notification scheme to retrieve */ + id: number; + }; + }; + }; + "/api/2/password/policy": { + /** + * @description Returns the list of requirements for the current password policy. For example, "The password must have at least 10 characters.", + * "The password must not be similar to the user's name or email address.", etc. + */ + get: operations["getPasswordPolicy"]; + }; + "/api/2/password/policy/createUser": { + /** + * @description Returns a list of statements explaining why the password policy would disallow a proposed password for a new user. + *

+ * You can use this method to test the password policy validation. This could be done prior to an action + * where a new user and related password are created, using methods like the ones in + * UserService. + * For example, you could use this to validate a password in a create user form in the user interface, as the user enters it.
+ * The username and new password must be not empty to perform the validation.
+ * Note, this method will help you validate against the policy only. It won't check any other validations that might be performed + * when creating a new user, e.g. checking whether a user with the same name already exists. + *

+ */ + post: operations["policyCheckCreateUser"]; + }; + "/api/2/password/policy/updateUser": { + /** + * @description Returns a list of statements explaining why the password policy would disallow a proposed new password for a user with an existing password. + *

+ * You can use this method to test the password policy validation. This could be done prior to an action where the password + * is actually updated, using methods like ChangePassword + * or ResetPassword. + * For example, you could use this to validate a password in a change password form in the user interface, as the user enters it.
+ * The user must exist and the username and new password must be not empty, to perform the validation.
+ * Note, this method will help you validate against the policy only. It won't check any other validations that might be performed + * when submitting a password change/reset request, e.g. verifying whether the old password is valid. + *

+ */ + post: operations["policyCheckUpdateUser"]; + }; + "/api/2/permissions": { + /** @description Returns all permissions that are present in the Jira instance - Global, Project and the global ones added by plugins */ + get: operations["getAllPermissions"]; + }; + "/api/2/permissionscheme": { + /** + * @description Returns a list of all permission schemes. + *

+ * By default only shortened beans are returned. If you want to include permissions of all the schemes, + * then specify the permissions expand parameter. Permissions will be included also if you specify + * any other expand parameter. + *

+ */ + get: operations["getPermissionSchemes"]; + /** + * @description Create a new permission scheme. + * This method can create schemes with a defined permission set, or without. + */ + post: operations["createPermissionScheme"]; + }; + "/api/2/permissionscheme/{permissionSchemeId}/attribute/{attributeKey}": { + get: operations["getSchemeAttribute"]; + parameters: { + path: { + /** @description permission scheme id */ + permissionSchemeId: number; + /** @description permission scheme attribute key */ + attributeKey: string; + }; + }; + }; + "/api/2/permissionscheme/{permissionSchemeId}/attribute/{key}": { + /** + * @description Updates or inserts the attribute for a permission scheme specified by permission scheme id. + * The attribute consists of the key and the value. The value will be converted to Boolean using Boolean#valueOf. + */ + put: operations["setSchemeAttribute"]; + parameters: { + path: { + /** @description permission scheme id */ + permissionSchemeId: number; + /** @description permission scheme attribute key */ + key: string; + }; + }; + }; + "/api/2/permissionscheme/{schemeId}": { + /** @description Returns a permission scheme identified by the given id. */ + get: operations["getPermissionScheme"]; + /** + * @description Updates a permission scheme. + *

+ * If the permissions list is present then it will be set in the permission scheme, which basically means it will overwrite any permission grants that + * existed in the permission scheme. Sending an empty list will remove all permission grants from the permission scheme. + *

+ *

+ * To update just the name and description, do not send permissions list at all. + *

+ *

+ * To add or remove a single permission grant instead of updating the whole list at once use the {schemeId}/permission/ resource. + *

+ */ + put: operations["updatePermissionScheme"]; + /** @description Deletes a permission scheme identified by the given id. */ + delete: operations["deletePermissionScheme"]; + parameters: { + path: { + schemeId: number; + }; + }; + }; + "/api/2/permissionscheme/{schemeId}/permission": { + /** @description Returns all permission grants of the given permission scheme. */ + get: operations["getPermissionSchemeGrants"]; + /** @description Creates a permission grant in a permission scheme. */ + post: operations["createPermissionGrant"]; + parameters: { + path: { + schemeId: number; + }; + }; + }; + "/api/2/permissionscheme/{schemeId}/permission/{permissionId}": { + /** @description Returns a permission grant identified by the given id. */ + get: operations["getPermissionSchemeGrant"]; + /** @description Deletes a permission grant from a permission scheme. */ + delete: operations["deletePermissionSchemeEntity"]; + parameters: { + path: { + permissionId: number; + schemeId: number; + }; + }; + }; + "/api/2/priority": { + /** @description Returns a list of all issue priorities. */ + get: operations["getPriorities"]; + }; + "/api/2/priority/page": { + /** @description Returns a list of all issue priorities. */ + get: operations["getPriorities"]; + }; + "/api/2/priority/{id}": { + /** @description Returns an issue priority. */ + get: operations["getPriority"]; + parameters: { + path: { + /** @description a String containing the priority id */ + id: string; + }; + }; + }; + "/api/2/priorityschemes": { + /** + * @description Returns all priority schemes. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=schemes.projectKeys. + */ + get: operations["getPrioritySchemes"]; + /** @description Creates new priority scheme. */ + post: operations["createPriorityScheme"]; + }; + "/api/2/priorityschemes/{schemeId}": { + /** + * @description Gets a full representation of a priority scheme in JSON format. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + get: operations["getPriorityScheme"]; + /** + * @description Updates a priority scheme. + * Update will be rejected if issue migration would be needed as a result of scheme update. + * Priority scheme update with migration is possible from the UI. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + put: operations["updatePriorityScheme"]; + /** + * @description Deletes a priority scheme. All projects using deleted scheme will use default priority scheme afterwards. + * + * Default priority scheme can't be deleted. + */ + delete: operations["deletePriorityScheme"]; + parameters: { + path: { + /** @description id of priority scheme to get */ + schemeId: number; + }; + }; + }; + "/api/2/project": { + /** + * @description Returns all projects which are visible for the currently logged in user. If no user is logged in, it returns the + * list of projects that are visible when using anonymous access. + */ + get: operations["getAllProjects"]; + /** @description Creates a new project. */ + post: operations["createProject"]; + }; + "/api/2/project/type": { + /** + * @description Returns all the project types defined on the Jira instance, not taking into account whether + * the license to use those project types is valid or not. + */ + get: operations["getAllProjectTypes"]; + }; + "/api/2/project/type/{projectTypeKey}": { + /** @description Returns the project type with the given key. */ + get: operations["getProjectTypeByKey"]; + parameters: { + path: { + projectTypeKey: string; + }; + }; + }; + "/api/2/project/type/{projectTypeKey}/accessible": { + /** + * @description Returns the project type with the given key, if it is accessible to the logged in user. + * This takes into account whether the user is licensed on the Application that defines the project type. + */ + get: operations["getAccessibleProjectTypeByKey"]; + parameters: { + path: { + projectTypeKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}": { + /** + * @description Contains a full representation of a project in JSON format. + *

+ * All project keys associated with the project will only be returned if expand=projectKeys. + *

+ */ + get: operations["getProject"]; + /** + * @description Updates a project. + *

+ * Only non null values sent in JSON will be updated in the project.

+ *

+ * Values available for the assigneeType field are: "PROJECT_LEAD" and "UNASSIGNED".

+ */ + put: operations["updateProject"]; + /** @description Deletes a project. */ + delete: operations["deleteProject"]; + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/archive": { + /** @description Archives a project. */ + put: operations["archiveProject"]; + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/avatar": { + /** + * @description Updates an avatar for a project. This is step 3/3 of changing an avatar for a project: + * + *
    + *
  • Upload (store temporary avatar)
  • + *
  • Crop (create avatar from temporary)
  • + *
  • Update (update project avatar)
  • + *
+ */ + put: operations["updateProjectAvatar"]; + /** + * @description Converts the temporary avatar into the final one. This is step 2/3 of changing an avatar for a project: + * + *
    + *
  • Upload (store temporary avatar)
  • + *
  • Crop (create avatar from temporary)
  • + *
  • Update (update project avatar)
  • + *
+ */ + post: operations["createAvatarFromTemporary"]; + parameters: { + path: { + /** @description project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/avatar/temporary": { + /** + * @description Creates temporary avatar using multipart. The response is sent back as JSON stored in a textarea. This is because + * the client uses remote iframing to submit avatars using multipart. So we must send them a valid HTML page back from + * which the client parses the JSON. + */ + post: operations["storeTemporaryAvatarUsingMultiPart"]; + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/avatar/{id}": { + /** @description Deletes avatar */ + delete: operations["deleteAvatar"]; + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + /** @description database id for avatar */ + id: number; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/avatars": { + /** + * @description Returns all avatars which are visible for the currently logged in user. The avatars are grouped into + * system and custom. + */ + get: operations["getAllAvatars"]; + parameters: { + path: { + /** @description project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/components": { + /** @description Contains a full representation of a the specified project's components. */ + get: operations["getProjectComponents"]; + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/properties": { + /** @description Returns the keys of all properties for the project identified by the key or by the id. */ + get: operations["getPropertiesKeys"]; + parameters: { + path: { + /** @description the project from which keys will be returned. */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/properties/{propertyKey}": { + /** + * @description Returns the value of the property with a given key from the project identified by the key or by the id. The user who retrieves + * the property is required to have permissions to read the project. + */ + get: operations["getProperty"]; + /** + * @description Sets the value of the specified project's property. + *

+ * You can use this resource to store a custom data against the project identified by the key or by the id. The user + * who stores the data is required to have permissions to administer the project. + *

+ */ + put: operations["setProperty"]; + /** + * @description Removes the property from the project identified by the key or by the id. Ths user removing the property is required + * to have permissions to administer the project. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + /** @description the project from which keys will be returned. */ + projectIdOrKey: string; + /** @description the key of the property to return. */ + propertyKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/restore": { + /** + * @description Restore an archived project. + * In case of success restored project should be re-indexed. + */ + put: operations["restoreProject"]; + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/role": { + /** @description Returns all roles in the given project Id or key, with links to full details on each role. */ + get: operations["getProjectRoles"]; + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/role/{id}": { + /** @description Returns the details for a given project role in a project. */ + get: operations["getProjectRole"]; + /** + * @description Updates a project role to include the specified actors (users or groups). Can be also used to clear roles to not include any users or groups. + *

+ * For user actors, their usernames should be used. + */ + put: operations["setActors"]; + /** + * @description Adds an actor (user or group) to a project role. + *

+ * For user actors, their usernames should be used. + */ + post: operations["addActorUsers"]; + /** + * @description Deletes actors (users or groups) from a project role. + *

+ *

    + *
  • Delete a user from the role: /rest/api/2/project/{projectIdOrKey}/role/{roleId}?user={username}
  • + *
  • Delete a group from the role: /rest/api/2/project/{projectIdOrKey}/role/{roleId}?group={groupname}
  • + *
+ */ + delete: operations["deleteActor"]; + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + /** @description the project role id */ + id: number; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/statuses": { + /** @description Get all issue types with valid status values for a project */ + get: operations["getAllStatuses"]; + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/type/{newProjectTypeKey}": { + /** @description Updates the type of a project. */ + put: operations["updateProjectType"]; + parameters: { + path: { + /** @description identity of the project to update */ + projectIdOrKey: string; + /** @description The key of the new project type */ + newProjectTypeKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/version": { + /** + * @description Returns all versions for the specified project. Results are paginated. + *

+ * Results can be ordered by the following fields: + *

    + *
  • sequence
  • + *
  • name
  • + *
  • startDate
  • + *
  • releaseDate
  • + *
+ *

+ */ + get: operations["getProjectVersionsPaginated"]; + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectIdOrKey}/versions": { + /** @description Contains a full representation of a the specified project's versions. */ + get: operations["getProjectVersions"]; + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/issuesecuritylevelscheme": { + /** @description Returns the issue security scheme for project. */ + get: operations["getIssueSecurityScheme"]; + parameters: { + path: { + projectKeyOrId: string; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/notificationscheme": { + /** + * @description Gets a notification scheme associated with the project. + * Follow the documentation of /notificationscheme/{id} resource for all details about returned value. + */ + get: operations["getNotificationScheme"]; + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/permissionscheme": { + /** @description Gets a permission scheme assigned with a project. */ + get: operations["getAssignedPermissionScheme"]; + /** @description Assigns a permission scheme with a project. */ + put: operations["assignPermissionScheme"]; + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/priorityscheme": { + /** + * @description Gets a full representation of a priority scheme in JSON format used by specified project. + * User must be global administrator or project administrator. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + get: operations["getAssignedPriorityScheme"]; + /** + * @description Assigns project with priority scheme. + * Priority scheme assign with migration is possible from the UI. + * + * Operation will fail if migration is needed as a result of operation eg. there are issues with priorities invalid in the destination scheme. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + put: operations["assignPriorityScheme"]; + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/priorityscheme/{schemeId}": { + /** + * @description Unassigns project from priority scheme. + * + * Operation will fail for defualt priority scheme, project is not found or project is not associated with provided priority scheme. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + delete: operations["unassignPriorityScheme"]; + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + /** @description object that contains an id of the scheme */ + schemeId: number; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/securitylevel": { + /** + * @description Returns all security levels for the project that the current logged in user has access to. + * If the user does not have the Set Issue Security permission, the list will be empty. + */ + get: operations["getSecurityLevelsForProject"]; + parameters: { + path: { + /** @description - key or id of project to list the security levels for */ + projectKeyOrId: string; + }; + }; + }; + "/api/2/project/{projectKeyOrId}/workflowscheme": { + /** @description Returns the workflow scheme that is associated with requested project. */ + get: operations["getWorkflowSchemeForProject"]; + parameters: { + path: { + /** @description the key or id of the project. */ + projectKeyOrId: string; + }; + }; + }; + "/api/2/projectCategory": { + /** @description Returns all project categories */ + get: operations["getAllProjectCategories"]; + /** @description Create a project category via POST. */ + post: operations["createProjectCategory"]; + }; + "/api/2/projectCategory/{id}": { + /** @description Contains a representation of a project category in JSON format. */ + get: operations["getProjectCategoryById"]; + /** + * @description Modify a project category via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field + * is not present, it is silently ignored. + */ + put: operations["updateProjectCategory"]; + /** @description Delete a project category. */ + delete: operations["removeProjectCategory"]; + parameters: { + path: { + id: number; + }; + }; + }; + "/api/2/projects/picker": { + /** + * @description Returns a list of projects visible to the user where project name and/or key is matching the given query. + *

+ * Passing an empty (or whitespace only) query will match no projects. The project matches will + * contain a field with the query highlighted. + *

+ * The number of projects returned can be controlled by passing a value for "maxResults", but a hard limit of no + * more than 100 projects is enforced. The projects are wrapped in a single response object that contains + * a header for use in the picker, specifically Showing X of Y matching projects and the total number + * of matches for the query. + */ + get: operations["searchForProjects"]; + }; + "/api/2/projectvalidate/key": { + /** @description Validates a project key. */ + get: operations["getProject"]; + }; + "/api/2/reindex": { + /** + * @description Returns information on the system reindexes. If a reindex is currently taking place then information about this reindex is returned. + * If there is no active index task, then returns information about the latest reindex task run, otherwise returns a 404 + * indicating that no reindex has taken place. + */ + get: operations["getReindexInfo"]; + /** @description Kicks off a reindex. Need Admin permissions to perform this reindex. */ + post: operations["reindex"]; + }; + "/api/2/reindex/issue": { + /** + * @description Reindexes one or more individual issues. Indexing is performed synchronously - the call returns when indexing of + * the issues has completed or a failure occurs. + *

+ * Use either explicitly specified issue IDs or a JQL query to select issues to reindex. + */ + post: operations["reindexIssues"]; + }; + "/api/2/reindex/progress": { + /** + * @description Returns information on the system reindexes. If a reindex is currently taking place then information about this reindex is returned. + * If there is no active index task, then returns information about the latest reindex task run, otherwise returns a 404 + * indicating that no reindex has taken place. + */ + get: operations["getReindexProgress"]; + }; + "/api/2/reindex/request": { + /** + * @description Executes any pending reindex requests. Returns a JSON array containing the IDs of the reindex requests + * that are being processed. Execution is asynchronous - progress of the returned tasks can be monitored through + * other REST calls. + */ + post: operations["processRequests"]; + }; + "/api/2/reindex/request/bulk": { + /** + * @description Retrieves the progress of a multiple reindex requests. Only reindex requests that actually exist will be returned + * in the results. + */ + get: operations["getProgressBulk"]; + }; + "/api/2/reindex/request/{requestId}": { + /** @description Retrieves the progress of a single reindex request. */ + get: operations["getProgress"]; + parameters: { + path: { + /** @description the reindex request ID. */ + requestId: number; + }; + }; + }; + "/api/2/resolution": { + /** @description Returns a list of all resolutions. */ + get: operations["getResolutions"]; + }; + "/api/2/resolution/page": { + /** @description Returns paginated list of filtered resolutions */ + get: operations["getPaginatedResolutions"]; + }; + "/api/2/resolution/{id}": { + /** @description Returns a resolution. */ + get: operations["getResolution"]; + parameters: { + path: { + /** @description a String containing the resolution id */ + id: string; + }; + }; + }; + "/api/2/role": { + /** @description Get all the ProjectRoles available in Jira. Currently this list is global. */ + get: operations["getProjectRoles"]; + /** + * @description Creates a new ProjectRole to be available in Jira. + * The created role does not have any default actors assigned. + */ + post: operations["createProjectRole"]; + }; + "/api/2/role/{id}": { + /** @description Get a specific ProjectRole available in Jira. */ + get: operations["getProjectRolesById"]; + /** @description Fully updates a roles. Both name and description must be given. */ + put: operations["fullyUpdateProjectRole"]; + /** @description Partially updates a roles name or description. */ + post: operations["partialUpdateProjectRole"]; + /** @description Deletes a role. May return 403 in the future */ + delete: operations["deleteProjectRole"]; + parameters: { + path: { + id: number; + }; + }; + }; + "/api/2/role/{id}/actors": { + /** @description Gets default actors for the given role. */ + get: operations["getProjectRoleActorsForRole"]; + /** @description Adds default actors to the given role. The request data should contain a list of usernames or a list of groups to add. */ + post: operations["addProjectRoleActorsToRole"]; + /** @description Removes default actor from the given role. */ + delete: operations["deleteProjectRoleActorsFromRole"]; + parameters: { + path: { + /** @description the role id to remove the actors from */ + id: number; + }; + }; + }; + "/api/2/screens": { + /** @description Gets available field screens */ + get: operations["getAllScreens"]; + }; + "/api/2/screens/addToDefault/{fieldId}": { + /** @description Adds field or custom field to the default tab */ + post: operations["addFieldToDefaultScreen"]; + parameters: { + path: { + /** @description id of field / custom field */ + fieldId: string; + }; + }; + }; + "/api/2/screens/{screenId}/availableFields": { + /** @description Gets available fields for screen. i.e ones that haven't already been added. */ + get: operations["getFieldsToAdd"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + }; + }; + }; + "/api/2/screens/{screenId}/tabs": { + /** @description Returns a list of all tabs for the given screen */ + get: operations["getAllTabs"]; + /** @description Creates tab for given screen */ + post: operations["addTab"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + }; + }; + }; + "/api/2/screens/{screenId}/tabs/{tabId}": { + /** @description Renames tab on given screen */ + put: operations["renameTab"]; + /** @description Deletes tab to give screen */ + delete: operations["deleteTab"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + }; + }; + }; + "/api/2/screens/{screenId}/tabs/{tabId}/fields": { + /** @description Gets all fields for a given tab */ + get: operations["getAllFields"]; + /** @description Adds field to the given tab. */ + post: operations["addField"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + }; + }; + }; + "/api/2/screens/{screenId}/tabs/{tabId}/fields/{id}": { + /** @description Removes field from given tab */ + delete: operations["removeField"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + id: string; + }; + }; + }; + "/api/2/screens/{screenId}/tabs/{tabId}/fields/{id}/move": { + /** @description Moves field on the given tab */ + post: operations["moveField"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + id: string; + }; + }; + }; + "/api/2/screens/{screenId}/tabs/{tabId}/fields/{id}/updateShowWhenEmptyIndicator/{newValue}": { + /** @description Update 'showWhenEmptyIndicator' for given field on screen */ + put: operations["updateShowWhenEmptyIndicator"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + /** @description new value of 'showWhenEmptyIndicator' */ + newValue: boolean; + /** @description id of field */ + id: string; + }; + }; + }; + "/api/2/screens/{screenId}/tabs/{tabId}/move/{pos}": { + /** @description Moves tab position */ + post: operations["moveTab"]; + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + /** @description position of tab */ + pos: number; + }; + }; + }; + "/api/2/search": { + /** + * @description Searches for issues using JQL. + *

+ * Sorting + * the jql parameter is a full JQL + * expression, and includes an ORDER BY clause. + *

+ *

+ * The fields param (which can be specified multiple times) gives a comma-separated list of fields + * to include in the response. This can be used to retrieve a subset of fields. + * A particular field can be excluded by prefixing it with a minus. + *

+ * By default, only navigable (*navigable) fields are returned in this search resource. Note: the default is different + * in the get-issue resource -- the default there all fields (*all). + *

    + *
  • *all - include all fields
  • + *
  • *navigable - include just navigable fields
  • + *
  • summary,comment - include just the summary and comments
  • + *
  • -description - include navigable fields except the description (the default is *navigable for search)
  • + *
  • *all,-comment - include everything except comments
  • + *
+ *

+ *

+ *

GET vs POST: + * If the JQL query is too large to be encoded as a query param you should instead + * POST to this resource. + *

+ *

+ * Expanding Issues in the Search Result: + * It is possible to expand the issues returned by directly specifying the expansion on the expand parameter passed + * in to this resources. + *

+ *

+ * For instance, to expand the "changelog" for all the issues on the search result, it is neccesary to + * specify "changelog" as one of the values to expand. + *

+ */ + get: operations["search"]; + /** @description Performs a search using JQL. */ + post: operations["searchUsingSearchRequest"]; + }; + "/api/2/securitylevel/{id}": { + /** @description Returns a full representation of the security level that has the given id. */ + get: operations["getIssuesecuritylevel"]; + parameters: { + path: { + /** @description a String containing an issue security level id */ + id: string; + }; + }; + }; + "/api/2/serverInfo": { + /** @description Returns general information about the current Jira server. */ + get: operations["getServerInfo"]; + }; + "/api/2/settings/baseUrl": { + /** @description Sets the base URL that is configured for this Jira instance. */ + put: operations["setBaseURL"]; + }; + "/api/2/settings/columns": { + /** @description Returns the default system columns for issue navigator. Admin permission will be required. */ + get: operations["getIssueNavigatorDefaultColumns"]; + /** @description Sets the default system columns for issue navigator. Admin permission will be required. */ + put: operations["setIssueNavigatorDefaultColumns"]; + }; + "/api/2/status": { + /** @description Returns a list of all statuses */ + get: operations["getStatuses"]; + }; + "/api/2/status/page": { + /** @description Returns paginated list of filtered statuses */ + get: operations["getPaginatedStatuses"]; + }; + "/api/2/status/{idOrName}": { + /** @description Returns a full representation of the Status having the given id or name. */ + get: operations["getStatus"]; + parameters: { + path: { + /** @description a numeric Status id or a status name */ + idOrName: string; + }; + }; + }; + "/api/2/statuscategory": { + /** @description Returns a list of all status categories */ + get: operations["getStatusCategories"]; + }; + "/api/2/statuscategory/{idOrKey}": { + /** @description Returns a full representation of the StatusCategory having the given id or key */ + get: operations["getStatusCategory"]; + parameters: { + path: { + /** @description a numeric StatusCategory id or a status category key */ + idOrKey: string; + }; + }; + }; + "/api/2/terminology/entries": { + /** @description Returns the list of all defined names for the default words "epic" and "sprint". */ + get: operations["getAllTerminologyEntries"]; + /** + * @description Change epic/sprint names from {"originalName"} to {"newName"}. The {"newName"} will be displayed in Jira instead of {"originalName"}. + *

+ * {"originalName"} must be equal to "epic" or "sprint". + * There can be only one entry per unique {"originalName"}. + *

+ * {"newName"} can only consist of alphanumeric characters and spaces e.g. {"newName": "iteration number 2"}. + *

+ * {"newName"} must be between 1 to 100 characters. + * It can't use the already defined {"newName"} values or restricted JQL words . + *

+ * To reset {"newName"} to the default value, enter the {"originalName"} value as the value for {"newName"}. For example, if you want to return to {"originalName": "sprint"}, enter {"newName": "sprint"}. + */ + post: operations["setTerminologyEntries"]; + }; + "/api/2/terminology/entries/{originalName}": { + /** @description Returns epic or sprint name as specified in the {originalName} path param. */ + get: operations["getTerminologyEntry"]; + parameters: { + path: { + originalName: string; + }; + }; + }; + "/api/2/universal_avatar/type/{type}/owner/{owningObjectId}": { + get: operations["getAvatars"]; + parameters: { + path: { + type: string; + owningObjectId: string; + }; + }; + }; + "/api/2/universal_avatar/type/{type}/owner/{owningObjectId}/avatar": { + post: operations["createAvatarFromTemporary"]; + parameters: { + path: { + type: string; + owningObjectId: string; + }; + }; + }; + "/api/2/universal_avatar/type/{type}/owner/{owningObjectId}/avatar/{id}": { + /** @description Deletes avatar */ + delete: operations["deleteAvatar"]; + parameters: { + path: { + /** @description database id for avatar */ + id: number; + /** @description Project id or project key */ + type: string; + owningObjectId: string; + }; + }; + }; + "/api/2/universal_avatar/type/{type}/owner/{owningObjectId}/temp": { + post: operations["storeTemporaryAvatarUsingMultiPart"]; + parameters: { + path: { + type: string; + owningObjectId: string; + }; + }; + }; + "/api/2/upgrade": { + /** + * @description Returns the result of the last upgrade task. + * + * Returns {@link javax.ws.rs.core.Response#seeOther(java.net.URI)} if still running. + */ + get: operations["getUpgradeResult"]; + /** @description Runs any pending delayed upgrade tasks. Need Admin permissions to do this. */ + post: operations["runUpgradesNow"]; + }; + "/api/2/user": { + /** @description Returns a user. This resource cannot be accessed anonymously. */ + get: operations["getUser"]; + /** + * @description Modify user. The "value" fields present will override the existing value. + * Fields skipped in request will not be changed. + */ + put: operations["updateUser"]; + /** + * @description Create user. By default created user will not be notified with email. + * If password field is not set then password will be randomly generated. + */ + post: operations["createUser"]; + /** + * @description Removes user and its references (like project roles associations, watches, history). + *
+ *
+ * Note: user references will not be removed if multiple User Directories are used and there is a user with + * the same name existing in another directory (shadowing user). + */ + delete: operations["removeUser"]; + }; + "/api/2/user/a11y/personal-settings": { + /** + * @description Returns available accessibility personal settings along with `enabled` property + * that indicates the currently logged-in user preference. + */ + get: operations["getA11yPersonalSettings"]; + }; + "/api/2/user/anonymization": { + /** @description Validates user anonymization process. */ + get: operations["validateUserAnonymization"]; + /** @description Schedules a user anonymization process. Requires system admin permission. */ + post: operations["scheduleUserAnonymization"]; + }; + "/api/2/user/anonymization/progress": { + /** @description Returns information about a user anonymization operation progress. */ + get: operations["getProgress"]; + }; + "/api/2/user/anonymization/rerun": { + /** @description Validates user anonymization re-run process. */ + get: operations["validateUserAnonymizationRerun"]; + /** @description Schedules a user anonymization process. Requires system admin permission. */ + post: operations["scheduleUserAnonymizationRerun"]; + }; + "/api/2/user/anonymization/unlock": { + /** + * @description Removes stale user anonymization task, for scenarios when the node that was executing it is no longer alive. + *

+ * Use it only after making sure that the parent node of the task is actually down, and not just having + * connectivity issues. + */ + delete: operations["unlockAnonymization"]; + }; + "/api/2/user/application": { + /** @description Add user to given application. Admin permission will be required to perform this operation. */ + post: operations["addUserToApplication"]; + /** @description Remove user from given application. Admin permission will be required to perform this operation. */ + delete: operations["removeUserFromApplication"]; + }; + "/api/2/user/assignable/multiProjectSearch": { + /** @description Returns a list of users that match the search string and can be assigned issues for all the given projects. */ + get: operations["findBulkAssignableUsers"]; + }; + "/api/2/user/assignable/search": { + /** + * @description Returns a list of users that match the search string. This resource cannot be accessed anonymously. + * Please note that this resource should be called with an issue key when a list of assignable users is retrieved + * for editing. For create only a project key should be supplied. The list of assignable users may be incorrect + * if it's called with the project key for editing. + */ + get: operations["findAssignableUsers"]; + }; + "/api/2/user/avatar": { + put: operations["updateUserAvatar"]; + /** @description Converts temporary avatar into a real avatar */ + post: operations["createAvatarFromTemporary"]; + }; + "/api/2/user/avatar/temporary": { + /** + * @description Creates temporary avatar using multipart. The response is sent back as JSON stored in a textarea. This is because + * the client uses remote iframing to submit avatars using multipart. So we must send them a valid HTML page back from + * which the client parses the JSON from. + *

+ * Creating a temporary avatar is part of a 3-step process in uploading a new + * avatar for a user: upload, crop, confirm. This endpoint allows you to use a multipart upload + * instead of sending the image directly as the request body. + *

+ *

+ * You *must* use "avatar" as the name of the upload parameter:

+ *

+ *

+     *  curl -c cookiejar.txt -X POST -u admin:admin -H "X-Atlassian-Token: no-check" \
+     *    -F "avatar=@mynewavatar.png;type=image/png" \
+     *    'http://localhost:8090/jira/rest/api/2/user/avatar/temporary?username=admin'
+     *  
+ */ + post: operations["storeTemporaryAvatarUsingMultiPart"]; + }; + "/api/2/user/avatar/{id}": { + /** @description Deletes avatar */ + delete: operations["deleteAvatar"]; + parameters: { + path: { + /** @description database id for avatar */ + id: number; + }; + }; + }; + "/api/2/user/avatars": { + /** @description Returns all avatars which are visible for the currently logged in user. */ + get: operations["getAllAvatars"]; + }; + "/api/2/user/columns": { + /** + * @description Returns the default columns for the given user. Admin permission will be required to get columns for a user + * other than the currently logged in user. + */ + get: operations["defaultColumns"]; + /** + * @description Sets the default columns for the given user. Admin permission will be required to get columns for a user + * other than the currently logged in user. + */ + put: operations["setColumns"]; + /** + * @description Reset the default columns for the given user to the system default. Admin permission will be required to get + * columns for a user other than the currently logged in user. + */ + delete: operations["resetColumns"]; + }; + "/api/2/user/duplicated/count": { + /** + * @description Returns the number of users whose accounts are duplicated. + * Duplicated means that the user has an account in more than one directory + * and either more than one account is active or the only active account does not belong to the directory + * with the highest priority. + * The data returned by this endpoint is cached for 10 minutes and the cache is flushed when any User Directory + * is added, removed, enabled, disabled, or synchronized. + * A System Administrator can also flush the cache manually. + * Related JAC ticket: https://jira.atlassian.com/browse/JRASERVER-68797 + */ + get: operations["getDuplicatedUsersCount"]; + }; + "/api/2/user/duplicated/list": { + /** + * @description Returns duplicated users mapped to their directories with an indication if their accounts are active or not. + * Duplicated means that the user has an account in more than one directory and either more than one account is active + * or the only active account does not belong to the directory with the highest priority. + * The data returned by this endpoint is cached for 10 minutes and the cache is flushed when any User Directory + * is added, removed, enabled, disabled, or synchronized. + * A System Administrator can also flush the cache manually. + * Related JAC ticket: https://jira.atlassian.com/browse/JRASERVER-68797 + */ + get: operations["getDuplicatedUsersMapping"]; + }; + "/api/2/user/password": { + /** @description Modify user password. */ + put: operations["changeUserPassword"]; + }; + "/api/2/user/permission/search": { + /** + * @description Returns a list of active users that match the search string and have all specified permissions for the project or issue.
+ * This resource can be accessed by users with ADMINISTER_PROJECT permission for the project or global ADMIN or SYSADMIN rights.
+ * This endpoint can cause serious performance issues and will be removed in Jira 9.0. + */ + get: operations["findUsersWithAllPermissions"]; + }; + "/api/2/user/picker": { + /** @description Returns a list of users matching query with highlighting. */ + get: operations["findUsersForPicker"]; + }; + "/api/2/user/properties/": { + /** @description Returns the keys of all properties for the user identified by the key or by the id. */ + get: operations["getPropertiesKeys"]; + }; + "/api/2/user/properties/{propertyKey}": { + /** + * @description Returns the value of the property with a given key from the user identified by the key or by the id. The user who retrieves + * the property is required to have permissions to read the user. + */ + get: operations["getProperty"]; + /** + * @description Sets the value of the specified user's property. + *

+ * You can use this resource to store a custom data against the user identified by the key or by the id. The user + * who stores the data is required to have permissions to administer the user. + *

+ */ + put: operations["setProperty"]; + /** + * @description Removes the property from the user identified by the key or by the id. Ths user removing the property is required + * to have permissions to administer the user. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + propertyKey: string; + }; + }; + }; + "/api/2/user/search": { + /** @description Returns a list of users that match the search string. This resource cannot be accessed anonymously. */ + get: operations["findUsers"]; + }; + "/api/2/user/session/{username}": { + delete: operations["deleteSession"]; + parameters: { + path: { + username: string; + }; + }; + }; + "/api/2/user/viewissue/search": { + /** + * @description Returns a list of active users that match the search string. This resource cannot be accessed anonymously + * and requires the Browse Users global permission. + * Given an issue key this resource will provide a list of users that match the search string and have + * the browse issue permission for the issue provided. + */ + get: operations["findUsersWithBrowsePermission"]; + }; + "/api/2/version": { + /** @description Retrieve paginated collection of versions matching given query optionally filtered by given project IDs. */ + get: operations["getPaginatedVersions"]; + /** @description Create a version via POST. */ + post: operations["createVersion"]; + }; + "/api/2/version/remotelink": { + /** @description Returns the remote version links for a given global ID. */ + get: operations["getRemoteVersionLinks"]; + }; + "/api/2/version/{id}": { + /** @description Returns a project version. */ + get: operations["getVersion"]; + /** + * @description Modify a version via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field + * is not present, it is silently ignored. + */ + put: operations["updateVersion"]; + /** @description Delete a project version. */ + delete: operations["delete"]; + parameters: { + path: { + /** @description The version to delete */ + id: string; + }; + }; + }; + "/api/2/version/{id}/mergeto/{moveIssuesTo}": { + /** @description Merge versions */ + put: operations["merge"]; + parameters: { + path: { + /** + * @description The version to set fixVersion to on issues where the deleted version is the fix version, + * If null then the fixVersion is removed. + */ + moveIssuesTo: string; + /** @description The version that will be merged to version {@code moveIssuesTo} and removed */ + id: string; + }; + }; + }; + "/api/2/version/{id}/move": { + /** + * @description Modify a version's sequence within a project. + *

+ * The move version bean has 2 alternative field value pairs: + *

+ *
position
An absolute position, which may have a value of 'First', 'Last', 'Earlier' or 'Later'
+ *
after
A version to place this version after. The value should be the self link of another version
+ *
+ */ + post: operations["moveVersion"]; + parameters: { + path: { + /** @description a String containing the version id */ + id: string; + }; + }; + }; + "/api/2/version/{id}/relatedIssueCounts": { + /** @description Returns a bean containing the number of fixed in and affected issues for the given version. */ + get: operations["getVersionRelatedIssues"]; + parameters: { + path: { + /** @description a String containing the version id */ + id: string; + }; + }; + }; + "/api/2/version/{id}/removeAndSwap": { + /** @description Delete a project version. */ + post: operations["delete"]; + parameters: { + path: { + /** @description The version to delete */ + id: string; + }; + }; + }; + "/api/2/version/{id}/unresolvedIssueCount": { + /** @description Returns the number of unresolved issues for the given version */ + get: operations["getVersionUnresolvedIssues"]; + parameters: { + path: { + /** @description a String containing the version id */ + id: string; + }; + }; + }; + "/api/2/version/{versionId}/remotelink": { + /** @description Returns the remote version links associated with the given version ID. */ + get: operations["getRemoteVersionLinksByVersionId"]; + /** + * @description Create a remote version link via POST. The link's global ID will be taken from the + * JSON payload if provided; otherwise, it will be generated. + */ + post: operations["createOrUpdateRemoteVersionLink"]; + /** @description Delete all remote version links for a given version ID. */ + delete: operations["deleteRemoteVersionLinksByVersionId"]; + parameters: { + path: { + /** @description The version for which to delete ALL existing remote version links */ + versionId: string; + }; + }; + }; + "/api/2/version/{versionId}/remotelink/{globalId}": { + /** @description A REST sub-resource representing a remote version link */ + get: operations["getRemoteVersionLink"]; + /** + * @description Create a remote version link via POST. The link's global ID will be taken from the + * JSON payload if provided; otherwise, it will be generated. + */ + post: operations["createOrUpdateRemoteVersionLink"]; + /** @description Delete a specific remote version link with the given version ID and global ID. */ + delete: operations["deleteRemoteVersionLink"]; + parameters: { + path: { + /** @description The version ID of the remote link */ + versionId: string; + /** @description The global ID of the remote link */ + globalId: string; + }; + }; + }; + "/api/2/workflow": { + /** + * @description Returns all workflows. The “lastModifiedDate” is returned in Jira Complete Date/Time Format (dd/MMM/yy h:mm by default), + * but can also be returned as a relative date. + */ + get: operations["getAllWorkflows"]; + }; + "/api/2/workflow/api/2/transitions/{id}/properties": { + /** @description Return the property or properties associated with a transition. */ + get: operations["getProperties"]; + /** + * @description Update/add new property to a transition. Trying to update a property that does + * not exist will result in a new property being added. + */ + put: operations["updateProperty"]; + /** + * @description Add a new property to a transition. Trying to add a property that already + * exists will fail. + */ + post: operations["createProperty"]; + /** + * @description Delete a property from the passed transition on the passed workflow. It is not an error to delete a property that + * does not exist. + */ + delete: operations["deleteProperty"]; + parameters: { + path: { + /** @description the ID of the transition within the workflow. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme": { + /** + * @description Create a new workflow scheme. + *

+ * The body contains a representation of the new scheme. Values not passed are assumed to be set to their defaults. + */ + post: operations["createScheme"]; + }; + "/api/2/workflowscheme/{id}": { + /** @description Returns the requested workflow scheme to the caller. */ + get: operations["getById"]; + /** + * @description Update the passed workflow scheme. + *

+ * The body of the request is a representation of the workflow scheme. Values not passed are assumed to indicate + * no change for that field. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that the draft + * should be created and/or updated when the actual scheme cannot be edited (e.g. when the scheme is being used by + * a project). Values not appearing the body will not be touched. + */ + put: operations["update"]; + /** @description Delete the passed workflow scheme. */ + delete: operations["deleteScheme"]; + parameters: { + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/createdraft": { + /** @description Create a draft for the passed scheme. The draft will be a copy of the state of the parent. */ + post: operations["createDraftForParent"]; + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/default": { + /** @description Return the default workflow from the passed workflow scheme. */ + get: operations["getDefault"]; + /** + * @description Set the default workflow for the passed workflow scheme. + *

+ * The passed representation can have its + * updateDraftIfNeeded flag set to true to indicate that the draft should be created/updated when the actual scheme + * cannot be edited. + */ + put: operations["updateDefault"]; + /** @description Remove the default workflow from the passed workflow scheme. */ + delete: operations["deleteDefault"]; + parameters: { + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/draft": { + /** @description Returns the requested draft workflow scheme to the caller. */ + get: operations["getDraftById"]; + /** + * @description Update a draft workflow scheme. The draft will created if necessary. + *

+ * The body is a representation of the workflow scheme. Values not passed are assumed to indicate no change for that field. + */ + put: operations["updateDraft"]; + /** @description Delete the passed draft workflow scheme. */ + delete: operations["deleteDraftById"]; + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/draft/default": { + /** @description Return the default workflow from the passed draft workflow scheme to the caller. */ + get: operations["getDraftDefault"]; + /** @description Set the default workflow for the passed draft workflow scheme. */ + put: operations["updateDraftDefault"]; + /** @description Remove the default workflow from the passed draft workflow scheme. */ + delete: operations["deleteDraftDefault"]; + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/draft/issuetype/{issueType}": { + /** @description Returns the issue type mapping for the passed draft workflow scheme. */ + get: operations["getDraftIssueType"]; + /** + * @description Set the issue type mapping for the passed draft scheme. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that + * the draft should be created/updated when the actual scheme cannot be edited. + */ + put: operations["setDraftIssueType"]; + /** @description Remove the specified issue type mapping from the draft scheme. */ + delete: operations["deleteDraftIssueType"]; + parameters: { + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the parent scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/draft/workflow": { + /** @description Returns the draft workflow mappings or requested mapping to the caller. */ + get: operations["getDraftWorkflow"]; + /** + * @description Update the draft scheme to include the passed mapping. + *

+ * The body is a representation of the workflow mapping. + * Values not passed are assumed to indicate no change for that field. + */ + put: operations["updateDraftWorkflowMapping"]; + /** @description Delete the passed workflow from the draft workflow scheme. */ + delete: operations["deleteDraftWorkflowMapping"]; + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/issuetype/{issueType}": { + /** @description Returns the issue type mapping for the passed workflow scheme. */ + get: operations["getIssueType"]; + /** + * @description Set the issue type mapping for the passed scheme. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that + * the draft should be created/updated when the actual scheme cannot be edited. + */ + put: operations["setIssueType"]; + /** @description Remove the specified issue type mapping from the scheme. */ + delete: operations["deleteIssueType"]; + parameters: { + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the scheme. */ + id: number; + }; + }; + }; + "/api/2/workflowscheme/{id}/workflow": { + /** @description Returns the workflow mappings or requested mapping to the caller for the passed scheme. */ + get: operations["getWorkflow"]; + /** + * @description Update the scheme to include the passed mapping. + *

+ * The body is a representation of the workflow mapping. + * Values not passed are assumed to indicate no change for that field. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that the draft + * should be created/updated when the actual scheme cannot be edited. + */ + put: operations["updateWorkflowMapping"]; + /** @description Delete the passed workflow from the workflow scheme. */ + delete: operations["deleteWorkflowMapping"]; + parameters: { + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + }; + "/api/2/worklog/deleted": { + /** + * @description Returns worklogs id and delete time of worklogs that was deleted since given time. + * The returns set of worklogs is limited to 1000 elements. + * This API will not return worklogs deleted during last minute. + */ + get: operations["getIdsOfWorklogsDeletedSince"]; + }; + "/api/2/worklog/list": { + /** + * @description Returns worklogs for given worklog ids. Only worklogs to which the calling user has permissions, will be included in the result. + * The returns set of worklogs is limited to 1000 elements. + */ + post: operations["getWorklogsForIds"]; + }; + "/api/2/worklog/updated": { + /** + * @description Returns worklogs id and update time of worklogs that was updated since given time. + * The returns set of worklogs is limited to 1000 elements. + * This API will not return worklogs updated during last minute. + */ + get: operations["getIdsOfWorklogsModifiedSince"]; + }; + "/auth/1/session": { + /** + * @description Returns information about the currently authenticated user's session. If the caller is not authenticated they + * will get a 401 Unauthorized status code. + */ + get: operations["currentUser"]; + /** + * @description Creates a new session for a user in Jira. Once a session has been successfully created it can be used to access + * any of Jira's remote APIs and also the web UI by passing the appropriate HTTP Cookie header. + *

+ * Note that it is generally preferrable to use HTTP BASIC authentication with the REST API. However, this resource + * may be used to mimic the behaviour of Jira's log-in page (e.g. to display log-in errors to a user). + */ + post: operations["login"]; + /** @description Logs the current user out of Jira, destroying the existing session, if any. */ + delete: operations["logout"]; + }; + "/auth/1/websudo": { + /** @description This method invalidates the any current WebSudo session. */ + delete: operations["release"]; + }; +} + +export type webhooks = Record; + +export type components = Record; + +export type $defs = Record; + +export type external = Record; + +export interface operations { + /** + * @description Returns the value of the property with a given key from the user identified by the key or by the id. The user who retrieves + * the property is required to have permissions to read the user. + */ + getProperty: { + parameters: { + query?: { + /** @description key of the user whose property is to be returned */ + userKey?: string; + /** @description username of the user whose property is to be returned */ + username?: string; + }; + path: { + propertyKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the properties that are displayed on the "General Configuration > Advanced Settings" page. */ + getAdvancedSettings: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Modify an application property via PUT. The "value" field present in the PUT will override the existing value. */ + setPropertyViaRestfulTable: { + parameters: { + path: { + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all ApplicationRoles in the system. Will also return an ETag header containing a version hash of the + * collection of ApplicationRoles. + */ + getAll: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates the ApplicationRoles with the passed data if the version hash is the same as the server. + * Only the groups and default groups setting of the role may be updated. Requests to change the key + * or the name of the role will be silently ignored. It is acceptable to pass only the roles that are updated + * as roles that are present in the server but not in data to update with, will not be deleted. + */ + putBulk: { + parameters: { + header?: { + "If-Match"?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the ApplicationRole with passed key if it exists. */ + get: { + parameters: { + path: { + /** @description the key of the role to update. */ + key: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates the ApplicationRole with the passed data. Only the groups and default groups setting of the + * role may be updated. Requests to change the key or the name of the role will be silently ignored. + *

+ * Optional: If versionHash is passed through the If-Match header the request will be rejected if not the + * same as server + */ + put: { + parameters: { + header?: { + /** @description the hash of the version to update. Optional Param */ + "If-Match"?: string; + }; + path: { + /** @description the key of the role to update. */ + key: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the meta information for an attachments, specifically if they are enabled and the maximum upload size + * allowed. + */ + getAttachmentMeta: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the meta-data for an attachment, including the URI of the actual attached file. */ + getAttachment: { + parameters: { + path: { + /** @description id of the attachment to remove */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove an attachment from an issue. */ + removeAttachment: { + parameters: { + path: { + /** @description id of the attachment to remove */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Tries to expand an attachment. Output is human-readable and subject to change. */ + expandForHumans: { + parameters: { + path: { + /** @description the id of the attachment to expand. */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Tries to expand an attachment. Output is raw and should be backwards-compatible through the course of time. */ + expandForMachines: { + parameters: { + path: { + /** @description the id of the attachment to expand. */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns auditing records filtered using provided parameters */ + getRecords: { + parameters: { + query?: { + /** @description - the number of record from which search starts */ + offset?: number; + /** @description - maximum number of returned results (if is limit is <= 0 or > 1000, it will be set do default value: 1000) */ + limit?: number; + /** @description - text query; each record that will be returned must contain the provided text in one of its fields */ + filter?: string; + /** + * @description - timestamp in past; 'from' must be less or equal 'to', otherwise the result set will be empty + * only records that where created in the same moment or after the 'from' timestamp will be provided in response + */ + from?: string; + /** + * @description - timestamp in past; 'from' must be less or equal 'to', otherwise the result set will be empty + * only records that where created in the same moment or earlier than the 'to' timestamp will be provided in response + */ + to?: string; + /** @description - list of project ids to look for */ + projectIds?: string; + /** @description - list of user ids to look for */ + userIds?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Store a record in audit log */ + addRecord: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all system avatars of the given type. */ + getAllSystemAvatars: { + parameters: { + path: { + /** @description the avatar type */ + type: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates temporary avatar */ + storeTemporaryAvatar: { + parameters: { + query?: { + /** @description name of file being uploaded */ + filename?: string; + /** @description size of file */ + size?: number; + }; + path: { + /** @description the avatar type */ + type: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Converts temporary avatar into a real avatar */ + createAvatarFromTemporary: { + parameters: { + query?: { + /** @description username */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description request current index from node (the request is processed asynchronously) */ + requestCurrentIndexFromNode: { + parameters: { + path: { + nodeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the node from the cluster if state of node is OFFLINE. */ + deleteNode: { + parameters: { + path: { + nodeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Change the node's state to offline if the node is reporting as active, but is not alive. + * Don't use this method as an equivalent of running ./stop-jira.sh. This method doesn't shut down + * a node, but only changes its state, so that other nodes don't communicate with it. + */ + changeNodeStateToOffline: { + parameters: { + path: { + nodeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + getAllNodes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + approveUpgrade: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + cancelUpgrade: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + acknowledgeErrors: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + setReadyToUpgrade: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + getState: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the keys of all properties for the user identified by the key or by the id. */ + getPropertiesKeys: { + parameters: { + query?: { + /** @description key of the user whose properties are to be returned */ + userKey?: string; + /** @description username of the user whose properties are to be returned */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Sets the value of the specified user's property. + *

+ * You can use this resource to store a custom data against the user identified by the key or by the id. The user + * who stores the data is required to have permissions to administer the user. + *

+ */ + setProperty: { + parameters: { + query?: { + /** @description key of the user whose property is to be set */ + userKey?: string; + /** @description username of the user whose property is to be set */ + username?: string; + }; + path: { + propertyKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Delete a property from the passed transition on the passed workflow. It is not an error to delete a property that + * does not exist. + */ + deleteProperty: { + parameters: { + query?: { + /** @description the name of the property to add. */ + key?: string; + /** @description the name of the workflow to use. */ + workflowName?: string; + /** @description the type of workflow to use. Can either be "live" or "draft". */ + workflowMode?: string; + }; + path: { + /** @description the ID of the transition within the workflow. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Create a component via POST. */ + createComponent: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns paginated list of filtered active components */ + getPaginatedComponents: { + parameters: { + query?: { + /** @description the index of the first components to return */ + startAt?: number; + /** @description the maximum number of components to return */ + maxResults?: number; + /** @description the string that components names will be matched with */ + query?: string; + /** @description the set of project ids to filter components */ + projectIds?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a project component. */ + getComponent: { + parameters: { + path: { + /** @description The component to delete. */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Modify a component via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field + * is not present, it is silently ignored. + *

+ * If leadUserName is an empty string ("") the component lead will be removed. + */ + updateComponent: { + parameters: { + path: { + /** @description The component to delete. */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete a project version. */ + delete: { + parameters: { + path: { + /** @description The version to delete */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns counts of issues related to this component. */ + getComponentRelatedIssues: { + parameters: { + path: { + /** @description a String containing the component id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the information if the optional features in Jira are enabled or disabled. If the time tracking is enabled, + * it also returns the detailed information about time tracking configuration. + */ + getConfiguration: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a full representation of the Custom Field Option that has the given id. */ + getCustomFieldOption: { + parameters: { + path: { + /** @description a String containing an Custom Field Option id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + getCustomFields: { + parameters: { + query?: { + startAt?: number; + maxResults?: number; + search?: string; + projectIds?: string; + screenIds?: string; + types?: string; + sortOrder?: string; + sortColumn?: string; + lastValueUpdate?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + bulkDeleteCustomFields: { + parameters: { + query?: { + ids?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns custom field's options defined in a given context composed of projects and issue types. + *

+ * If the projects and issue types match more than one context or the context for such a combination does not exist then no options are returned. + */ + getCustomFieldOptions: { + parameters: { + query?: { + /** @description a list of projects in a context. */ + projectIds?: string; + /** @description a list of issue types in a context. */ + issueTypeIds?: string; + /** @description a string used to filter options. An option matches the query if any word in option's name starts with the given query. */ + query?: string; + /** @description a limit of results. */ + maxResults?: number; + /** @description the page of options to return. */ + page?: number; + }; + path: { + /** @description id of a custom field. */ + customFieldId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all dashboards, optionally filtering them. */ + list: { + parameters: { + query?: { + /** + * @description an optional filter that is applied to the list of dashboards. Valid values include + * "favourite" for returning only favourite dashboards, and "my" for returning + * dashboards that are owned by the calling user. + */ + filter?: string; + /** + * @description the index of the first dashboard to return (0-based). must be 0 or a multiple of + * maxResults + */ + startAt?: number; + /** + * @description a hint as to the maximum number of dashboards to return in each call. Note that the + * Jira server reserves the right to impose a maxResults limit that is lower than the value that a + * client provides, dues to lack of resources or any other condition. When this happens, your results will be + * truncated. Callers should always check the returned maxResults to determine the value that is + * effectively being used. + */ + maxResults?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a single dashboard. */ + getDashboard: { + parameters: { + path: { + /** @description the dashboard id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates a zip file containing email templates at local home and returns the file. */ + downloadEmailTemplates: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Extracts given zip file to temporary templates folder. If the folder already exists it will replace it's content */ + uploadEmailTemplates: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Replaces the current email templates pack with previously uploaded one, if exists. */ + applyEmailTemplates: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Replaces the current email templates pack with default templates, which are copied over from Jira binaries. */ + revertEmailTemplatesToDefault: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of root templates mapped with Event Types. The list can be used to decide which test emails to send. */ + getEmailTypes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all fields, both System and Custom */ + getFields: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates a custom field using a definition (object encapsulating custom field data) */ + createCustomField: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates a new filter, and returns newly created filter. + * Currently sets permissions just using the users default sharing permissions + */ + createFilter: { + parameters: { + query?: { + /** @description the parameters to expand */ + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the default share scope of the logged-in user. */ + getDefaultShareScope: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Sets the default share scope of the logged-in user. + *

+ * Available values are: AUTHENTICATED (for sharing with all logged-in users) and PRIVATE (for no shares). + */ + setDefaultShareScope: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the favourite filters of the logged-in user. */ + getFavouriteFilters: { + parameters: { + query?: { + /** @description the parameters to expand */ + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a filter given an id */ + getFilter: { + parameters: { + query?: { + /** @description the parameters to expand */ + expand?: string; + }; + path: { + /** @description the id of the filter being looked up */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates an existing filter, and returns its new value. + *

+ * The following properties of a filter can be updated: 'jql', 'name', 'description'. + * Additionally, administrators can also update the 'owner' field. + * To get, set or unset 'favourite', use rest/api/1.0/filters/{id}/favourite with GET, PUT and DELETE methods instead. + *

+ */ + editFilter: { + parameters: { + query?: { + /** @description the parameters to expand */ + expand?: string; + }; + path: { + /** @description the id of the filter being looked up */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete a filter. */ + deleteFilter: { + parameters: { + path: { + /** @description the id of the filter being looked up */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the default columns for the given user. Admin permission will be required to get columns for a user + * other than the currently logged in user. + */ + defaultColumns: { + parameters: { + query?: { + /** @description username */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Sets the default columns for the given user. Admin permission will be required to get columns for a user + * other than the currently logged in user. + */ + setColumns: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Reset the default columns for the given user to the system default. Admin permission will be required to get + * columns for a user other than the currently logged in user. + */ + resetColumns: { + parameters: { + query?: { + /** @description username */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all share permissions of the given filter. */ + getSharePermissions: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds a share permissions to the given filter. Adding a global permission removes all previous permissions from the filter. */ + addSharePermission: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Removes a share permissions from the given filter. */ + deleteSharePermission: { + parameters: { + path: { + id: number; + "permission-id": number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a single share permission of the given filter. */ + getSharePermission: { + parameters: { + path: { + permissionId: number; + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns REST representation for the requested group. Allows to get list of active users belonging to the + * specified group and its subgroups if "users" expand option is provided. You can page through users list by using + * indexes in expand param. For example to get users from index 10 to index 15 use "users[10:15]" expand value. This + * will return 6 users (if there are at least 16 users in this group). Indexes are 0-based and inclusive. + *

+ * This resource is deprecated, please use group/member API instead. + */ + getGroup: { + parameters: { + query?: { + /** @description A name of requested group. */ + groupname?: string; + /** @description List of fields to expand. Currently only available expand is "users". */ + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates a group by given group parameter + *

+ * Returns REST representation for the requested group. + */ + createGroup: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Deletes a group by given group parameter. + *

+ * Returns no content + */ + removeGroup: { + parameters: { + query?: { + /** @description (mandatory) The name of the group to delete. */ + groupname?: string; + /** + * @description If you delete a group and content is restricted to that group, the content will be hidden from all users. + * To prevent this, use this parameter to specify a different group to transfer the restrictions (comments and worklogs only) to. + */ + swapGroup?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description This resource returns a paginated list of users who are members of the specified group and its subgroups. + * Users in the page are ordered by user names. User of this resource is required to have sysadmin or admin permissions. + */ + getUsersFromGroup: { + parameters: { + query?: { + /** @description a name of the group for which members will be returned. */ + groupname?: string; + /** @description inactive users will be included in the response if set to true. */ + includeInactiveUsers?: boolean; + /** @description the index of the first user in group to return (0 based). */ + startAt?: number; + /** @description the maximum number of users to return (max 50). */ + maxResults?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Adds given user to a group. + *

+ * Returns the current state of the group. + */ + addUserToGroup: { + parameters: { + query?: { + /** @description A name of requested group. */ + groupname?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Removes given user from a group. + *

+ * Returns no content + */ + removeUserFromGroup: { + parameters: { + query?: { + /** @description A name of requested group. */ + groupname?: string; + /** @description User to remove from a group */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns groups with substrings matching a given query. This is mainly for use with + * the group picker, so the returned groups contain html to be used as picker suggestions. + * The groups are also wrapped in a single response object that also contains a header for + * use in the picker, specifically Showing X of Y matching groups. + *

+ * The number of groups returned is limited by the system property "jira.ajax.autocomplete.limit" + *

+ * The groups will be unique and sorted. + */ + findGroups: { + parameters: { + query?: { + /** @description a String to match groups agains */ + query?: string; + exclude?: string; + maxResults?: number; + userName?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of users and groups matching query with highlighting. This resource cannot be accessed + * anonymously. + */ + findUsersAndGroups: { + parameters: { + query?: { + /** @description A string used to search username, Name or e-mail address */ + query?: string; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. If + * you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + showAvatar?: boolean; + /** @description The custom field id, if this request comes from a custom field, such as a user picker. Optional. */ + fieldId?: string; + /** + * @description The list of project ids to further restrict the search + * This parameter can occur multiple times to pass in multiple project ids. + * Comma separated value is not supported. + * This parameter is only used when fieldId is present. + */ + projectId?: string; + /** + * @description The list of issue type ids to further restrict the search. + * This parameter can occur multiple times to pass in multiple issue type ids. + * Comma separated value is not supported. + * Special values such as -1 (all standard issue types), -2 (all subtask issue types) are supported. + * This parameter is only used when fieldId is present. + */ + issueTypeId?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Lists available index snapshots absolute paths with timestamps. + *

+ * Only System Administrator can request listing index snapshots. + */ + listIndexSnapshot: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Tries to start taking an index snapshot if no other snapshot creation process is in progress. + * Performs a cleanup of index snapshots directory so only a limited number of most recent snapshots are persisted. + * If another snapshot creation process is in progress, returns 409 without waiting for the other process to complete. + *

+ * Only System Administrator can request creation of snapshot. There is no guarantee as to the time after which the snapshot will be available. + */ + createIndexSnapshot: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Answers true if index snapshot creation is currently running. + *

+ * Only System Administrator can request current snapshot creation status. + */ + isIndexSnapshotRunning: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Summarizes index condition of current node. + *

+ * Returned data consists of: + *

    + *
  • nodeId - Node identifier.
  • + *
  • reportTime - Time of this report creation.
  • + *
  • issueIndex - Summary of issue index status.
  • + *
  • replicationQueues - Map of index replication queues, where + * keys represent nodes from which replication operations came from.
  • + *
+ *

+ * issueIndex can contain: + *

    + *
  • indexReadable - If false the end point failed to read data from issue index + * (check Jira logs for detailed stack trace), otherwise true. + * When false other fields of issueIndex can be not visible.
  • + *
  • countInDatabase - Count of issues found in database.
  • + *
  • countInIndex - Count of issues found while querying index.
  • + *
  • lastUpdatedInDatabase - Time of last update of issue found in database.
  • + *
  • lastUpdatedInIndex - Time of last update of issue found while querying index.
  • + *
+ *

+ * replicationQueues's map values can contain: + *

    + *
  • lastConsumedOperation - Last executed index replication operation by current node from sending node's queue.
  • + *
  • lastConsumedOperation.id - Identifier of the operation.
  • + *
  • lastConsumedOperation.replicationTime - Time when the operation was sent to other nodes.
  • + *
  • lastOperationInQueue - Last index replication operation in sending node's queue.
  • + *
  • lastOperationInQueue.id - Identifier of the operation.
  • + *
  • lastOperationInQueue.replicationTime - Time when the operation was sent to other nodes.
  • + *
  • queueSize - Number of operations in queue from sending node to current node.
  • + *
+ */ + getIndexSummary: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates an issue or a sub-task from a JSON representation. + *

+ * The fields that can be set on create, in either the fields parameter or the update parameter can be determined + * using the /rest/api/2/issue/createmeta resource. + * If a field is not configured to appear on the create screen, then it will not be in the createmeta, and a field + * validation error will occur if it is submitted. + *

+ * Creating a sub-task is similar to creating a regular issue, with two important differences: + *

    + *
  • the issueType field must correspond to a sub-task issue type (you can use + * /issue/createmeta to discover sub-task issue types), and
  • + *
  • you must provide a parent field in the issue create request containing the id or key of the + * parent issue.
  • + *
  • The updateHistory param adds the project that this issue is created in, to the current user's project history, + * if set to true (by default, the project history is not updated).
  • + *
  • You can view the project history in the Jira application, via the Projects dropdown.
  • + *
+ */ + createIssue: { + parameters: { + query?: { + /** @description if true then the user's project history is updated */ + updateHistory?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Archives a list of issues. */ + archiveIssues: { + parameters: { + query?: { + /** + * @description send the email with notification that the issue was updated to users that watch it. + * Admin or project admin permissions are required to disable the notification. + */ + notifyUsers?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates issues or sub-tasks from a JSON representation. + *

+ * Creates many issues in one bulk operation. + *

+ * Creating a sub-task is similar to creating a regular issue. More details can be found in createIssue section: + * {@link IssueResource#createIssue(boolean, IssueUpdateBean)}}} + */ + createIssues: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the metadata for issue types used for creating issues. + * Data will not be returned if the user does not have permission to create issues in that project. + */ + getCreateIssueMetaProjectIssueTypes: { + parameters: { + query?: { + /** @description the page offset, if not specified then defaults to 0 */ + startAt?: number; + /** @description how many results on the page should be included. Defaults to 50. */ + maxResults?: number; + }; + path: { + /** @description to get metadata for */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the metadata for issue types used for creating issues. + * Data will not be returned if the user does not have permission to create issues in that project. + */ + getCreateIssueMetaFields: { + parameters: { + query?: { + /** @description the page offset, if not specified then defaults to 0 */ + startAt?: number; + /** @description how many results on the page should be included. Defaults to 50. */ + maxResults?: number; + }; + path: { + /** @description to get metadata for */ + issueTypeId: string; + /** @description to get metadata for */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns suggested issues which match the auto-completion query for the user which executes this request. This REST + * method will check the user's history and the user's browsing context and select this issues, which match the query. + */ + getIssuePickerResource: { + parameters: { + query?: { + /** @description the query. */ + query?: string; + /** @description the JQL in context of which the request is executed. Only issues which match this JQL query will be included in results. */ + currentJQL?: string; + /** @description the key of the issue in context of which the request is executed. The issue which is in context will not be included in the auto-completion result, even if it matches the query. */ + currentIssueKey?: string; + /** @description the id of the project in context of which the request is executed. Suggested issues will be only from this project. */ + currentProjectId?: string; + /** @description if set to false, subtasks will not be included in the list. */ + showSubTasks?: boolean; + /** @description if set to false and request is executed in context of a subtask, the parent issue will not be included in the auto-completion result, even if it matches the query. */ + showSubTaskParent?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a full representation of the issue for the given issue key. + *

+ * An issue JSON consists of the issue key, a collection of fields, + * a link to the workflow transition sub-resource, and (optionally) the HTML rendered values of any fields that support it + * (e.g. if wiki syntax is enabled for the description or comments). + *

+ * The fields param (which can be specified multiple times) gives a comma-separated list of fields + * to include in the response. This can be used to retrieve a subset of fields. + * A particular field can be excluded by prefixing it with a minus. + *

+ * By default, all (*all) fields are returned in this get-issue resource. Note: the default is different + * when doing a jql search -- the default there is just navigable fields (*navigable). + *

    + *
  • *all - include all fields
  • + *
  • *navigable - include just navigable fields
  • + *
  • summary,comment - include just the summary and comments
  • + *
  • -comment - include everything except comments (the default is *all for get-issue)
  • + *
  • *all,-comment - include everything except comments
  • + *
+ *

+ * The {@code properties} param is similar to {@code fields} and specifies a comma-separated list of issue + * properties to include. Unlike {@code fields}, properties are not included by default. To include them all + * send {@code ?properties=*all}. You can also include only specified properties or exclude some properties + * with a minus (-) sign. + *

+ *

    + *
  • {@code *all} - include all properties
  • + *
  • {@code *all, -prop1} - include all properties except {@code prop1}
  • + *
  • {@code prop1, prop1} - include {@code prop1} and {@code prop2} properties
  • + *
+ *

+ *

+ * Jira will attempt to identify the issue by the issueIdOrKey path parameter. This can be an issue id, + * or an issue key. If the issue cannot be found via an exact match, Jira will also look for the issue in a case-insensitive way, or + * by looking to see if the issue was moved. In either of these cases, the request will proceed as normal (a 302 or other redirect + * will not be returned). The issue key contained in the response will indicate the current value of issue's key. + *

+ * The expand param is used to include, hidden by default, parts of response. This can be used to include: + *

    + *
  • renderedFields - field values in HTML format
  • + *
  • names - display name of each field
  • + *
  • schema - schema for each field which describes a type of the field
  • + *
  • transitions - all possible transitions for the given issue
  • + *
  • operations - all possibles operations which may be applied on issue
  • + *
  • editmeta - information about how each field may be edited. It contains field's schema as well.
  • + *
  • changelog - history of all changes of the given issue
  • + *
  • versionedRepresentations - + * REST representations of all fields. Some field may contain more recent versions. RESET representations are numbered. + * The greatest number always represents the most recent version. It is recommended that the most recent version is used. + * version for these fields which provide a more recent REST representation. + * After including versionedRepresentations "fields" field become hidden.
  • + *
+ */ + getIssue: { + parameters: { + query?: { + /** @description the list of fields to return for the issue. By default, all fields are returned. */ + fields?: string; + expand?: string; + /** @description the list of properties to return for the issue. By default no properties are returned. */ + properties?: string; + updateHistory?: boolean; + }; + path: { + /** @description the issue id or key to update (i.e. JRA-1330) */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Edits an issue from a JSON representation. + *

+ * The issue can either be updated by setting explicit the field value(s) + * or by using an operation to change the field value. + *

+ * The fields that can be updated, in either the fields parameter or the update parameter, can be determined + * using the /rest/api/2/issue/{issueIdOrKey}/editmeta resource.
+ * If a field is not configured to appear on the edit screen, then it will not be in the editmeta, and a field + * validation error will occur if it is submitted. + *

+ * Specifying a "field_id": field_value in the "fields" is a shorthand for a "set" operation in the "update" section.
+ * Field should appear either in "fields" or "update", not in both. + */ + editIssue: { + parameters: { + query?: { + /** + * @description send the email with notification that the issue was updated to users that watch it. + * Admin or project admin permissions are required to disable the notification. + */ + notifyUsers?: boolean; + }; + path: { + /** @description the issue id or key to update (i.e. JRA-1330) */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Delete an issue. + *

+ * If the issue has subtasks you must set the parameter deleteSubtasks=true to delete the issue. + * You cannot delete an issue without its subtasks also being deleted. + */ + deleteIssue: { + parameters: { + query?: { + /** + * @description a String of true or false indicating that any subtasks should also be deleted. If the + * issue has no subtasks this parameter is ignored. If the issue has subtasks and this parameter is missing or false, + * then the issue will not be deleted and an error will be returned. + */ + deleteSubtasks?: string; + }; + path: { + /** @description the issue id or key to update (i.e. JRA-1330) */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Archives an issue. */ + archiveIssue: { + parameters: { + query?: { + /** + * @description send the email with notification that the issue was updated to users that watch it. + * Admin or project admin permissions are required to disable the notification. + */ + notifyUsers?: boolean; + }; + path: { + /** @description Issue id or issue key */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Assigns an issue to a user. + * You can use this resource to assign issues when the user submitting the request has the assign permission but not the + * edit issue permission. + * If the name is "-1" automatic assignee is used. A null name will remove the assignee. + */ + assign: { + parameters: { + path: { + /** @description a String containing an issue key */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Add one or more attachments to an issue. + *

+ * This resource expects a multipart post. The media-type multipart/form-data is defined in RFC 1867. Most client + * libraries have classes that make dealing with multipart posts simple. For instance, in Java the Apache HTTP Components + * library provides a + * MultiPartEntity + * that makes it simple to submit a multipart POST. + *

+ * In order to protect against XSRF attacks, because this method accepts multipart/form-data, it has XSRF protection + * on it. This means you must submit a header of X-Atlassian-Token: no-check with the request, otherwise it will be + * blocked. + *

+ * The name of the multipart/form-data parameter that contains attachments must be "file" + *

+ * A simple example to upload a file called "myfile.txt" to issue REST-123: + *

curl -D- -u admin:admin -X POST -H "X-Atlassian-Token: no-check" -F "file=@myfile.txt" http://myhost/rest/api/2/issue/TEST-123/attachments
+ */ + addAttachment: { + parameters: { + path: { + /** @description the issue that you want to add the attachments to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all comments for an issue. + *

+ * Results can be ordered by the "created" field which means the date a comment was added. + *

+ */ + getComments: { + parameters: { + query?: { + /** @description the page offset, if not specified then defaults to 0 */ + startAt?: number; + /** @description how many results on the page should be included. Defaults to 50. */ + maxResults?: number; + /** @description ordering of the results. */ + orderBy?: string; + /** @description optional flags: renderedBody (provides body rendered in HTML) */ + expand?: string; + }; + path: { + /** @description a string containing the issue id or key the comment will be added to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds a new comment to an issue. */ + addComment: { + parameters: { + query?: { + /** @description optional flags: renderedBody (provides body rendered in HTML) */ + expand?: string; + }; + path: { + /** @description a string containing the issue id or key the comment will be added to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a single comment. */ + getComment: { + parameters: { + query?: { + /** @description optional flags: renderedBody (provides body rendered in HTML) */ + expand?: string; + }; + path: { + /** @description of the issue the comment belongs to */ + issueIdOrKey: string; + /** @description the ID of the comment to request */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Updates an existing comment using its JSON representation. */ + updateComment: { + parameters: { + query?: { + /** @description optional flags: renderedBody (provides body rendered in HTML) */ + expand?: string; + }; + path: { + /** @description of the issue the comment belongs to */ + issueIdOrKey: string; + /** @description the ID of the comment to request */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes an existing comment . */ + deleteComment: { + parameters: { + path: { + /** @description of the issue the comment belongs to */ + issueIdOrKey: string; + /** @description the ID of the comment to request */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + setPinComment: { + parameters: { + path: { + issueIdOrKey: string; + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the meta data for editing an issue. + *

+ * The fields in the editmeta correspond to the fields in the edit screen for the issue. + * Fields not in the screen will not be in the editmeta. + */ + getEditIssueMeta: { + parameters: { + path: { + /** @description the issue whose edit meta data you want to view */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Sends a notification (email) to the list or recipients defined in the request. */ + notify: { + parameters: { + path: { + /** @description a string containing the issue id or key the comment will be added to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all pinned to the issue comments. */ + getPinnedComments: { + parameters: { + path: { + /** @description of the issue the comment belongs to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description A REST sub-resource representing the remote issue links on the issue. */ + getRemoteIssueLinks: { + parameters: { + query?: { + /** + * @description The id of the remote issue link to be returned. If null (not provided) all remote links for the + * issue are returned. + *

For a fullexplanation of Issue Link fields please refer to + * https://developer.atlassian.com/display/JIRADEV/Fields+in+Remote+Issue+Links

+ */ + globalId?: string; + }; + path: { + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates or updates a remote issue link from a JSON representation. If a globalId is provided and a remote issue link + * exists with that globalId, the remote issue link is updated. Otherwise, the remote issue link is created. + */ + createOrUpdateRemoteIssueLink: { + parameters: { + path: { + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the remote issue link with the given global id on the issue. */ + deleteRemoteIssueLinkByGlobalId: { + parameters: { + query?: { + /** @description the global id of the remote issue link */ + globalId?: string; + }; + path: { + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Get the remote issue link with the given id on the issue. */ + getRemoteIssueLinkById: { + parameters: { + path: { + /** @description the id of the remote issue link */ + linkId: string; + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Updates a remote issue link from a JSON representation. Any fields not provided are set to null. */ + updateRemoteIssueLink: { + parameters: { + path: { + /** @description the id of the remote issue link */ + linkId: string; + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the remote issue link with the given id on the issue. */ + deleteRemoteIssueLinkById: { + parameters: { + path: { + /** @description the id of the remote issue link */ + linkId: string; + /** @description the issue to create the remote issue link for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Restores an archived issue. */ + restoreIssue: { + parameters: { + query?: { + /** + * @description send the email with notification that the issue was updated to users that watch it. + * Admin or project admin permissions are required to disable the notification. + */ + notifyUsers?: boolean; + }; + path: { + /** @description Issue id or issue key */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns an issue's subtask list */ + getSubTasks: { + parameters: { + path: { + /** @description The parent issue's key or id */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + canMoveSubTask: { + parameters: { + path: { + /** @description The parent issue's key or id */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Reorders an issue's subtasks by moving the subtask at index "from" + * to index "to". + */ + moveSubTasks: { + parameters: { + path: { + /** @description The parent issue's key or id */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Get a list of the transitions possible for this issue by the current user, along with fields that are required and their types. + *

+ * Fields will only be returned if expand=transitions.fields. + *

+ * The fields in the metadata correspond to the fields in the transition screen for that transition. + * Fields not in the screen will not be in the metadata. + */ + getTransitions: { + parameters: { + query?: { + transitionId?: string; + }; + path: { + /** @description the issue you want to transition */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Perform a transition on an issue. + * When performing the transition you can update or set other issue fields. + *

+ * The fields that can be set on transtion, in either the fields parameter or the update parameter can be determined + * using the /rest/api/2/issue/{issueIdOrKey}/transitions?expand=transitions.fields resource. + * If a field is not configured to appear on the transition screen, then it will not be in the transition metadata, and a field + * validation error will occur if it is submitted. + *

+ * The updateHistory param adds the issues retrieved by this method to the current user's issue history, + * if set to true (by default, the issue history does not include issues retrieved via the REST API). + * You can view the issue history in the Jira application, via the Issues dropdown or by using the + * lastViewed JQL field in an issue search. + */ + doTransition: { + parameters: { + path: { + /** @description the issue you want to transition */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description A REST sub-resource representing the voters on the issue. */ + getVotes: { + parameters: { + path: { + /** @description the issue to view voting information for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Cast your vote in favour of an issue. */ + addVote: { + parameters: { + path: { + /** @description the issue to view voting information for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove your vote from an issue. (i.e. "unvote") */ + removeVote: { + parameters: { + path: { + /** @description the issue to view voting information for */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the list of watchers for the issue with the given key. */ + getIssueWatchers: { + parameters: { + path: { + /** @description a String containing an issue key. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds a user to an issue's watcher list. */ + addWatcher: { + parameters: { + path: { + /** @description a String containing an issue key. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Removes a user from an issue's watcher list. */ + removeWatcher: { + parameters: { + query?: { + /** @description a String containing the name of the user to remove from the watcher list. Must not be null. */ + username?: string; + }; + path: { + /** @description a String containing an issue key. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all work logs for an issue.
+ * Note: Work logs won't be returned if the Log work field is hidden for the project. + */ + getIssueWorklog: { + parameters: { + path: { + /** @description a string containing the issue id or key the worklog will be added to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds a new worklog entry to an issue. */ + addWorklog: { + parameters: { + query?: { + /** + * @description (optional) allows you to provide specific instructions to update the remaining time estimate of the issue. Valid values are + *

    + *
  • "new" - sets the estimate to a specific value
  • + *
  • "leave"- leaves the estimate as is
  • + *
  • "manual" - specify a specific amount to increase remaining estimate by
  • + *
  • "auto"- Default option. Will automatically adjust the value based on the new timeSpent specified on the worklog
+ */ + adjustEstimate?: string; + /** @description (required when "new" is selected for adjustEstimate) the new value for the remaining estimate field. e.g. "2d" */ + newEstimate?: string; + /** @description (required when "manual" is selected for adjustEstimate) the amount to reduce the remaining estimate by e.g. "2d" */ + reduceBy?: string; + }; + path: { + /** @description a string containing the issue id or key the worklog will be added to */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a specific worklog.
+ * Note: The work log won't be returned if the Log work field is hidden for the project. + */ + getWorklog: { + parameters: { + path: { + /** @description a string containing the issue id or key the worklog belongs to */ + issueIdOrKey: string; + /** @description id of the worklog to be deleted */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates an existing worklog entry. + *

Note that:

+ *
    + *
  • Fields possible for editing are: comment, visibility, started, timeSpent and timeSpentSeconds.
  • + *
  • Either timeSpent or timeSpentSeconds can be set.
  • + *
  • Fields which are not set will not be updated.
  • + *
  • For a request to be valid, it has to have at least one field change.
  • + *
+ */ + updateWorklog: { + parameters: { + query?: { + /** + * @description (optional) allows you to provide specific instructions to update the remaining time estimate of the issue. Valid values are + *
    + *
  • "new" - sets the estimate to a specific value
  • + *
  • "leave"- leaves the estimate as is
  • + *
  • "auto"- Default option. Will automatically adjust the value based on the new timeSpent specified on the worklog
+ */ + adjustEstimate?: string; + /** @description (required when "new" is selected for adjustEstimate) the new value for the remaining estimate field. */ + newEstimate?: string; + }; + path: { + /** @description a string containing the issue id or key the worklog belongs to */ + issueIdOrKey: string; + /** @description id of the worklog to be deleted */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes an existing worklog entry. */ + deleteWorklog: { + parameters: { + query?: { + /** + * @description (optional) allows you to provide specific instructions to update the remaining time estimate of the issue. Valid values are + *
    + *
  • "new" - sets the estimate to a specific value
  • + *
  • "leave"- leaves the estimate as is
  • + *
  • "manual" - specify a specific amount to increase remaining estimate by
  • + *
  • "auto"- Default option. Will automatically adjust the value based on the new timeSpent specified on the worklog
+ */ + adjustEstimate?: string; + /** @description (required when "new" is selected for adjustEstimate) the new value for the remaining estimate field. e.g. "2d" */ + newEstimate?: string; + /** @description (required when "manual" is selected for adjustEstimate) the amount to increase the remaining estimate by e.g. "2d" */ + increaseBy?: string; + }; + path: { + /** @description a string containing the issue id or key the worklog belongs to */ + issueIdOrKey: string; + /** @description id of the worklog to be deleted */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates an issue link between two issues. + * The user requires the link issue permission for the issue which will be linked to another issue. + * The specified link type in the request is used to create the link and will create a link from the first issue + * to the second issue using the outward description. It also create a link from the second issue to the first issue using the + * inward description of the issue link type. + * It will add the supplied comment to the first issue. The comment can have a restriction who can view it. + * If group is specified, only users of this group can view this comment, if roleLevel is specified only users who have the specified role can view this comment. + * The user who creates the issue link needs to belong to the specified group or have the specified role. + */ + linkIssues: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns an issue link with the specified id. */ + getIssueLink: { + parameters: { + path: { + /** @description the issue link id. */ + linkId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Deletes an issue link with the specified id. + * To be able to delete an issue link you must be able to view both issues and must have the link issue permission + * for at least one of the issues. + */ + deleteIssueLink: { + parameters: { + path: { + /** @description the issue link id. */ + linkId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of available issue link types, if issue linking is enabled. + * Each issue link type has an id, a name and a label for the outward and inward link relationship. + */ + getIssueLinkTypes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Create a new issue link type. */ + createIssueLinkType: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns for a given issue link type id all information about this issue link type. */ + getIssueLinkType: { + parameters: { + path: { + issueLinkTypeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Update the specified issue link type. */ + updateIssueLinkType: { + parameters: { + path: { + issueLinkTypeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the specified issue link type. */ + deleteIssueLinkType: { + parameters: { + path: { + issueLinkTypeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all issue security schemes that are defined. */ + getIssueSecuritySchemes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the issue security scheme for project. */ + getIssueSecurityScheme: { + parameters: { + path: { + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all issue types visible to the user */ + getIssueAllTypes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates an issue type from a JSON representation and adds the issue newly created issue type to the default issue + * type scheme. + */ + createIssueType: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns paginated list of filtered issue types */ + getPaginatedIssueTypes: { + parameters: { + query?: { + /** @description the index of the first issue type to return */ + startAt?: number; + /** @description the maximum number of issue type to return */ + maxResults?: number; + /** @description the string that issue type names will be matched with */ + query?: string; + /** @description the set of project ids to filter issue types */ + projectIds?: string; + }; + header?: { + "X-Requested-With"?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the issue type mapping for the passed workflow scheme. */ + getIssueType: { + parameters: { + query?: { + /** + * @description when true indicates that a scheme's draft, if it exists, should be queried instead of + * the scheme itself. + */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Updates the specified issue type from a JSON representation. */ + updateIssueType: { + parameters: { + path: { + /** @description a String containing an issue type id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove the specified issue type mapping from the scheme. */ + deleteIssueType: { + parameters: { + query?: { + /** + * @description when true will create and return a draft when the workflow scheme cannot be edited + * (e.g. when it is being used by a project). + */ + updateDraftIfNeeded?: boolean; + }; + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of all alternative issue types for the given issue type id. The list will contain these issues types, to which + * issues assigned to the given issue type can be migrated. The suitable alternatives are issue types which are assigned + * to the same workflow, the same field configuration and the same screen scheme. + */ + getAlternativeIssueTypes: { + parameters: { + path: { + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates temporary avatar using multipart. The response is sent back as JSON stored in a textarea. This is because + * the client uses remote iframing to submit avatars using multipart. So we must send them a valid HTML page back from + * which the client parses the JSON from. + *

+ * Creating a temporary avatar is part of a 3-step process in uploading a new + * avatar for a user: upload, crop, confirm. This endpoint allows you to use a multipart upload + * instead of sending the image directly as the request body. + *

+ *

+ * You *must* use "avatar" as the name of the upload parameter:

+ *

+ *

+   *  curl -c cookiejar.txt -X POST -u admin:admin -H "X-Atlassian-Token: no-check" \
+   *    -F "avatar=@mynewavatar.png;type=image/png" \
+   *    'http://localhost:8090/jira/rest/api/2/user/avatar/temporary?username=admin'
+   *  
+ */ + storeTemporaryAvatarUsingMultiPart: { + parameters: { + query?: { + /** @description Username */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the keys of all properties for the issue type identified by the id. */ + getPropertyKeys: { + parameters: { + path: { + /** @description the issue type from which the keys will be returned */ + issueTypeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of all issue type schemes visible to the user (must be admin). + *

+ * All issue types associated with the scheme will only be returned if an additional query parameter is provided: + * expand=schemes.issueTypes. + *

+ *

+ * Similarly, the default issue type associated with the scheme (if one exists) will only be returned if + * additional an query parameter is provided: expand=schemes.defaultIssueType. + *

+ *

+ * Note that both query parameters can be used together: expand=schemes.issueTypes,schemes.defaultIssueType. + *

+ */ + getAllIssueTypeSchemes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates an issue type scheme from a JSON representation. (Admin required) */ + createIssueTypeScheme: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a full representation of the issue type scheme that has the given id (must be admin). */ + getIssueTypeScheme: { + parameters: { + path: { + /** @description the id of the issue type scheme to remove. */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Updates the specified issue type scheme from a JSON representation. (Admin required) */ + updateIssueTypeScheme: { + parameters: { + path: { + /** @description the id of the issue type scheme to remove. */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Deletes the specified issue type scheme. Any projects associated with this IssueTypeScheme will be automatically + * associated with the global default IssueTypeScheme. (Admin required) + */ + deleteIssueTypeScheme: { + parameters: { + path: { + /** @description the id of the issue type scheme to remove. */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description For the specified issue type scheme, returns all of the associated projects. (Admin required) */ + getAssociatedProjects: { + parameters: { + query?: { + /** @description the parameters to expand on the returned projects; defaults to none. */ + expand?: string; + }; + path: { + /** @description the id of the issue type scheme whose project associations we're removing */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Associates the given projects with the specified issue type scheme. Any existing project-associations the issue + * type scheme has will be overwritten. (Admin required) + */ + setProjectAssociationsForScheme: { + parameters: { + path: { + /** @description the id of the issue type scheme whose project associations we're removing */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds additional projects to those already associated with the specified issue type scheme. (Admin required) */ + addProjectAssociationsToScheme: { + parameters: { + path: { + /** @description the id of the issue type scheme whose project associations we're removing */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Removes all project associations for the specified issue type scheme. These projects revert to an association with + * the default/global issue type scheme.(Admin required) + */ + removeAllProjectAssociations: { + parameters: { + path: { + /** @description the id of the issue type scheme whose project associations we're removing */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description For the specified issue type scheme, removes the given project association . This project reverts to an association + * with the default/global issue type scheme.(Admin required) + */ + removeProjectAssociation: { + parameters: { + path: { + /** @description the id or key of the project that is to be un-associated with the issue type scheme */ + projIdOrKey: string; + /** @description the id of the issue type scheme whose project association we're removing */ + schemeId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the auto complete data required for JQL searches. */ + getAutoComplete: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns auto complete suggestions for JQL search. */ + getFieldAutoCompleteForQueryString: { + parameters: { + query?: { + /** @description the field name for which the suggestions are generated. */ + fieldName?: string; + /** @description the portion of the field value that has already been provided by the user. */ + fieldValue?: string; + /** @description the predicate for which the suggestions are generated. Suggestions are generated only for: "by", "from" and "to". */ + predicateName?: string; + /** @description the portion of the predicate value that has already been provided by the user. */ + predicateValue?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + validate: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + isAppMonitoringEnabled: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + setAppMonitoringEnabled: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + isIpdMonitoringEnabled: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + areMetricsExposed: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + getAvailableMetrics: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + start: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + stop: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all permissions in the system and whether the currently logged in user has them. You can optionally provide a specific context to get permissions for + * (projectKey OR projectId OR issueKey OR issueId) + *
    + *
  • When no context supplied the project related permissions will return true if the user has that permission in ANY project
  • + *
  • If a project context is provided, project related permissions will return true if the user has the permissions in the specified project. + * For permissions that are determined using issue data (e.g Current Assignee), true will be returned if the user meets the permission criteria in ANY issue in that project
  • + *
  • If an issue context is provided, it will return whether or not the user has each permission in that specific issue
  • + *
+ *

+ * NB: The above means that for issue-level permissions (EDIT_ISSUE for example), hasPermission may be true when no context is provided, or when a project context is provided, + * but may be false for any given (or all) issues. This would occur (for example) if Reporters were given the EDIT_ISSUE permission. This is because + * any user could be a reporter, except in the context of a concrete issue, where the reporter is known. + *

+ *

+ * Global permissions will still be returned for all scopes. + *

+ *

+ * Prior to version 6.4 this service returned project permissions with keys corresponding to com.atlassian.jira.security.Permissions.Permission constants. + * Since 6.4 those keys are considered deprecated and this service returns system project permission keys corresponding to constants defined in com.atlassian.jira.permission.ProjectPermissions. + * Permissions with legacy keys are still also returned for backwards compatibility, they are marked with an attribute deprecatedKey=true. + * The attribute is missing for project permissions with the current keys. + *

+ */ + getPermissions: { + parameters: { + query?: { + /** @description - key of project to scope returned permissions for. */ + projectKey?: string; + /** @description - id of project to scope returned permissions for. */ + projectId?: string; + /** @description - key of the issue to scope returned permissions for. */ + issueKey?: string; + /** @description - id of the issue to scope returned permissions for. */ + issueId?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns preference of the currently logged in user. Preference key must be provided as input parameter (key). The + * value is returned exactly as it is. If key parameter is not provided or wrong - status code 404. If value is + * found - status code 200. + */ + getPreference: { + parameters: { + query?: { + /** @description - key of the preference to be returned. */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Sets preference of the currently logged in user. Preference key must be provided as input parameters (key). Value + * must be provided as post body. If key or value parameter is not provided - status code 404. If preference is set + * - status code 204. + */ + setPreference: { + parameters: { + query?: { + /** @description - key of the preference to be set. */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Removes preference of the currently logged in user. Preference key must be provided as input parameters (key). If + * key parameter is not provided or wrong - status code 404. If preference is unset - status code 204. + */ + removePreference: { + parameters: { + query?: { + /** @description - key of the preference to be removed. */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a user. This resource cannot be accessed anonymously. */ + getUser: { + parameters: { + query?: { + /** @description the username */ + username?: string; + /** @description user key */ + key?: string; + /** @description whether deleted users should be returned (flag available to users with global ADMIN rights) */ + includeDeleted?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Modify user. The "value" fields present will override the existing value. + * Fields skipped in request will not be changed. + */ + updateUser: { + parameters: { + query?: { + /** @description the username */ + username?: string; + /** @description user key */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Modify caller password. */ + changeMyPassword: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a paginated list of notification schemes. In order to access notification scheme, the calling user is + * required to have permissions to administer at least one project associated with the requested notification scheme. Each scheme contains + * a list of events and recipient configured to receive notifications for these events. Consumer should allow events without recipients to appear in response. + * The list is ordered by the scheme's name. + * Follow the documentation of /notificationscheme/{id} resource for all details about returned value. + */ + getNotificationSchemes: { + parameters: { + query?: { + /** @description the index of the first notification scheme to return (0 based). */ + startAt?: number; + /** @description the maximum number of notification schemes to return (max 50). */ + maxResults?: number; + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Gets a notification scheme associated with the project. + * Follow the documentation of /notificationscheme/{id} resource for all details about returned value. + */ + getNotificationScheme: { + parameters: { + query?: { + expand?: string; + }; + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the list of requirements for the current password policy. For example, "The password must have at least 10 characters.", + * "The password must not be similar to the user's name or email address.", etc. + */ + getPasswordPolicy: { + parameters: { + query?: { + /** + * @description whether or not the user will be required to enter their current password. Use + * {@code false} (the default) if this is a new user or if an administrator is forcibly changing + * another user's password. + */ + hasOldPassword?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of statements explaining why the password policy would disallow a proposed password for a new user. + *

+ * You can use this method to test the password policy validation. This could be done prior to an action + * where a new user and related password are created, using methods like the ones in + * UserService. + * For example, you could use this to validate a password in a create user form in the user interface, as the user enters it.
+ * The username and new password must be not empty to perform the validation.
+ * Note, this method will help you validate against the policy only. It won't check any other validations that might be performed + * when creating a new user, e.g. checking whether a user with the same name already exists. + *

+ */ + policyCheckCreateUser: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of statements explaining why the password policy would disallow a proposed new password for a user with an existing password. + *

+ * You can use this method to test the password policy validation. This could be done prior to an action where the password + * is actually updated, using methods like ChangePassword + * or ResetPassword. + * For example, you could use this to validate a password in a change password form in the user interface, as the user enters it.
+ * The user must exist and the username and new password must be not empty, to perform the validation.
+ * Note, this method will help you validate against the policy only. It won't check any other validations that might be performed + * when submitting a password change/reset request, e.g. verifying whether the old password is valid. + *

+ */ + policyCheckUpdateUser: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all permissions that are present in the Jira instance - Global, Project and the global ones added by plugins */ + getAllPermissions: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of all permission schemes. + *

+ * By default only shortened beans are returned. If you want to include permissions of all the schemes, + * then specify the permissions expand parameter. Permissions will be included also if you specify + * any other expand parameter. + *

+ */ + getPermissionSchemes: { + parameters: { + query?: { + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Create a new permission scheme. + * This method can create schemes with a defined permission set, or without. + */ + createPermissionScheme: { + parameters: { + query?: { + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + getSchemeAttribute: { + parameters: { + path: { + /** @description permission scheme id */ + permissionSchemeId: number; + /** @description permission scheme attribute key */ + attributeKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates or inserts the attribute for a permission scheme specified by permission scheme id. + * The attribute consists of the key and the value. The value will be converted to Boolean using Boolean#valueOf. + */ + setSchemeAttribute: { + parameters: { + path: { + /** @description permission scheme id */ + permissionSchemeId: number; + /** @description permission scheme attribute key */ + key: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a permission scheme identified by the given id. */ + getPermissionScheme: { + parameters: { + query?: { + expand?: string; + }; + path: { + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates a permission scheme. + *

+ * If the permissions list is present then it will be set in the permission scheme, which basically means it will overwrite any permission grants that + * existed in the permission scheme. Sending an empty list will remove all permission grants from the permission scheme. + *

+ *

+ * To update just the name and description, do not send permissions list at all. + *

+ *

+ * To add or remove a single permission grant instead of updating the whole list at once use the {schemeId}/permission/ resource. + *

+ */ + updatePermissionScheme: { + parameters: { + query?: { + expand?: string; + }; + path: { + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes a permission scheme identified by the given id. */ + deletePermissionScheme: { + parameters: { + path: { + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all permission grants of the given permission scheme. */ + getPermissionSchemeGrants: { + parameters: { + query?: { + expand?: string; + }; + path: { + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates a permission grant in a permission scheme. */ + createPermissionGrant: { + parameters: { + query?: { + expand?: string; + }; + path: { + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a permission grant identified by the given id. */ + getPermissionSchemeGrant: { + parameters: { + query?: { + expand?: string; + }; + path: { + permissionId: number; + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes a permission grant from a permission scheme. */ + deletePermissionSchemeEntity: { + parameters: { + path: { + permissionId: number; + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all issue priorities. */ + getPriorities: { + parameters: { + query?: { + startAt?: number; + maxResults?: number; + query?: string; + projectIds?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns an issue priority. */ + getPriority: { + parameters: { + path: { + /** @description a String containing the priority id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all priority schemes. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=schemes.projectKeys. + */ + getPrioritySchemes: { + parameters: { + query?: { + /** @description the page offset, if not specified then defaults to 0 */ + startAt?: number; + /** @description how many results on the page should be included. Defaults to 100, maximum is 1000. */ + maxResults?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates new priority scheme. */ + createPriorityScheme: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Gets a full representation of a priority scheme in JSON format. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + getPriorityScheme: { + parameters: { + path: { + /** @description id of priority scheme to get */ + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates a priority scheme. + * Update will be rejected if issue migration would be needed as a result of scheme update. + * Priority scheme update with migration is possible from the UI. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + updatePriorityScheme: { + parameters: { + path: { + /** @description id of priority scheme to get */ + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Deletes a priority scheme. All projects using deleted scheme will use default priority scheme afterwards. + * + * Default priority scheme can't be deleted. + */ + deletePriorityScheme: { + parameters: { + path: { + /** @description id of priority scheme to get */ + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all projects which are visible for the currently logged in user. If no user is logged in, it returns the + * list of projects that are visible when using anonymous access. + */ + getAllProjects: { + parameters: { + query?: { + /** @description the parameters to expand */ + expand?: string; + /** @description if this parameter is set then only projects recently accessed by the current user (if not logged in then based on HTTP session) will be returned (maximum count limited to the specified number but no more than 20). */ + recent?: number; + /** @description whether to include archived projects in response, default: false */ + includeArchived?: boolean; + /** @description whether to include only projects where current user can browse archive */ + browseArchive?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates a new project. */ + createProject: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all the project types defined on the Jira instance, not taking into account whether + * the license to use those project types is valid or not. + */ + getAllProjectTypes: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the project type with the given key. */ + getProjectTypeByKey: { + parameters: { + path: { + projectTypeKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the project type with the given key, if it is accessible to the logged in user. + * This takes into account whether the user is licensed on the Application that defines the project type. + */ + getAccessibleProjectTypeByKey: { + parameters: { + path: { + projectTypeKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Validates a project key. */ + getProject: { + parameters: { + query?: { + /** @description the project key */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates a project. + *

+ * Only non null values sent in JSON will be updated in the project.

+ *

+ * Values available for the assigneeType field are: "PROJECT_LEAD" and "UNASSIGNED".

+ */ + updateProject: { + parameters: { + query?: { + /** @description the parameters to expand in returned project */ + expand?: string; + }; + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes a project. */ + deleteProject: { + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Archives a project. */ + archiveProject: { + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates an avatar for a project. This is step 3/3 of changing an avatar for a project: + * + *
    + *
  • Upload (store temporary avatar)
  • + *
  • Crop (create avatar from temporary)
  • + *
  • Update (update project avatar)
  • + *
+ */ + updateProjectAvatar: { + parameters: { + path: { + /** @description project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes avatar */ + deleteAvatar: { + parameters: { + query?: { + /** @description username */ + username?: string; + }; + path: { + /** @description database id for avatar */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all avatars which are visible for the currently logged in user. */ + getAllAvatars: { + parameters: { + query?: { + /** @description username */ + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Contains a full representation of a the specified project's components. */ + getProjectComponents: { + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Restore an archived project. + * In case of success restored project should be re-indexed. + */ + restoreProject: { + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Get all the ProjectRoles available in Jira. Currently this list is global. */ + getProjectRoles: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the details for a given project role in a project. */ + getProjectRole: { + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + /** @description the project role id */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Updates a project role to include the specified actors (users or groups). Can be also used to clear roles to not include any users or groups. + *

+ * For user actors, their usernames should be used. + */ + setActors: { + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + /** @description the project role id */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Adds an actor (user or group) to a project role. + *

+ * For user actors, their usernames should be used. + */ + addActorUsers: { + parameters: { + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + /** @description the project role id */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Deletes actors (users or groups) from a project role. + *

+ *

    + *
  • Delete a user from the role: /rest/api/2/project/{projectIdOrKey}/role/{roleId}?user={username}
  • + *
  • Delete a group from the role: /rest/api/2/project/{projectIdOrKey}/role/{roleId}?group={groupname}
  • + *
+ */ + deleteActor: { + parameters: { + query?: { + /** @description the username of the user to remove from the project role */ + user?: string; + /** @description the groupname to remove from the project role */ + group?: string; + }; + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + /** @description the project role id */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Get all issue types with valid status values for a project */ + getAllStatuses: { + parameters: { + path: { + /** @description Project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Updates the type of a project. */ + updateProjectType: { + parameters: { + path: { + /** @description identity of the project to update */ + projectIdOrKey: string; + /** @description The key of the new project type */ + newProjectTypeKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all versions for the specified project. Results are paginated. + *

+ * Results can be ordered by the following fields: + *

    + *
  • sequence
  • + *
  • name
  • + *
  • startDate
  • + *
  • releaseDate
  • + *
+ *

+ */ + getProjectVersionsPaginated: { + parameters: { + query?: { + /** @description the page offset, if not specified then defaults to 0 */ + startAt?: number; + /** @description how many results on the page should be included. Defaults to 50. */ + maxResults?: number; + /** @description ordering of the results. */ + orderBy?: string; + /** @description the parameters to expand */ + expand?: string; + }; + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Contains a full representation of a the specified project's versions. */ + getProjectVersions: { + parameters: { + query?: { + /** @description the parameters to expand */ + expand?: string; + }; + path: { + /** @description the project id or project key */ + projectIdOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Gets a permission scheme assigned with a project. */ + getAssignedPermissionScheme: { + parameters: { + query?: { + expand?: string; + }; + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Assigns a permission scheme with a project. */ + assignPermissionScheme: { + parameters: { + query?: { + expand?: string; + }; + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Gets a full representation of a priority scheme in JSON format used by specified project. + * User must be global administrator or project administrator. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + getAssignedPriorityScheme: { + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Assigns project with priority scheme. + * Priority scheme assign with migration is possible from the UI. + * + * Operation will fail if migration is needed as a result of operation eg. there are issues with priorities invalid in the destination scheme. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + assignPriorityScheme: { + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Unassigns project from priority scheme. + * + * Operation will fail for defualt priority scheme, project is not found or project is not associated with provided priority scheme. + * + * All project keys associated with the priority scheme will only be returned if additional query parameter is provided expand=projectKeys. + */ + unassignPriorityScheme: { + parameters: { + path: { + /** @description key or id of the project */ + projectKeyOrId: string; + /** @description object that contains an id of the scheme */ + schemeId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all security levels for the project that the current logged in user has access to. + * If the user does not have the Set Issue Security permission, the list will be empty. + */ + getSecurityLevelsForProject: { + parameters: { + path: { + /** @description - key or id of project to list the security levels for */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the workflow scheme that is associated with requested project. */ + getWorkflowSchemeForProject: { + parameters: { + path: { + /** @description the key or id of the project. */ + projectKeyOrId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns all project categories */ + getAllProjectCategories: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Create a project category via POST. */ + createProjectCategory: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Contains a representation of a project category in JSON format. */ + getProjectCategoryById: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Modify a project category via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field + * is not present, it is silently ignored. + */ + updateProjectCategory: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete a project category. */ + removeProjectCategory: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of projects visible to the user where project name and/or key is matching the given query. + *

+ * Passing an empty (or whitespace only) query will match no projects. The project matches will + * contain a field with the query highlighted. + *

+ * The number of projects returned can be controlled by passing a value for "maxResults", but a hard limit of no + * more than 100 projects is enforced. The projects are wrapped in a single response object that contains + * a header for use in the picker, specifically Showing X of Y matching projects and the total number + * of matches for the query. + */ + searchForProjects: { + parameters: { + query?: { + /** @description a sequence of characters expected to be found in the word-prefix of project name and/or key. */ + query?: string; + /** @description maximum number of matches to return. Zero means a default limit of 100 and negative numbers return no results. */ + maxResults?: number; + /** @description if true, and the query is empty, the method will return first results limited to the value of "maxResults" or default limit of 100. */ + allowEmptyQuery?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns information on the system reindexes. If a reindex is currently taking place then information about this reindex is returned. + * If there is no active index task, then returns information about the latest reindex task run, otherwise returns a 404 + * indicating that no reindex has taken place. + */ + getReindexInfo: { + parameters: { + query?: { + /** + * @description the id of an indexing task you wish to obtain details on. If omitted, then defaults to the standard behaviour and + * returns information on the active reindex task, or the last task to run if no reindex is taking place. . If there is no + * reindexing task with that id then a 404 is returned. + */ + taskId?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Kicks off a reindex. Need Admin permissions to perform this reindex. */ + reindex: { + parameters: { + query?: { + /** @description Case insensitive String indicating type of reindex. If omitted, then defaults to BACKGROUND_PREFERRED. */ + type?: string; + /** @description Indicates that comments should also be reindexed. Not relevant for foreground reindex, where comments are always reindexed. */ + indexComments?: boolean; + /** @description Indicates that changeHistory should also be reindexed. Not relevant for foreground reindex, where changeHistory is always reindexed. */ + indexChangeHistory?: boolean; + /** @description Indicates that worklogs should also be reindexed. Not relevant for foreground reindex, where worklogs are always reindexed. */ + indexWorklogs?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Reindexes one or more individual issues. Indexing is performed synchronously - the call returns when indexing of + * the issues has completed or a failure occurs. + *

+ * Use either explicitly specified issue IDs or a JQL query to select issues to reindex. + */ + reindexIssues: { + parameters: { + query?: { + /** @description the IDs or keys of one or more issues to reindex. */ + issueId?: string; + /** @description Indicates that comments should also be reindexed. */ + indexComments?: boolean; + /** @description Indicates that changeHistory should also be reindexed. */ + indexChangeHistory?: boolean; + /** @description Indicates that worklogs should also be reindexed. */ + indexWorklogs?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns information on the system reindexes. If a reindex is currently taking place then information about this reindex is returned. + * If there is no active index task, then returns information about the latest reindex task run, otherwise returns a 404 + * indicating that no reindex has taken place. + */ + getReindexProgress: { + parameters: { + query?: { + /** + * @description the id of an indexing task you wish to obtain details on. If omitted, then defaults to the standard behaviour and + * returns information on the active reindex task, or the last task to run if no reindex is taking place. . If there is no + * reindexing task with that id then a 404 is returned. + */ + taskId?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Executes any pending reindex requests. Returns a JSON array containing the IDs of the reindex requests + * that are being processed. Execution is asynchronous - progress of the returned tasks can be monitored through + * other REST calls. + */ + processRequests: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Retrieves the progress of a multiple reindex requests. Only reindex requests that actually exist will be returned + * in the results. + */ + getProgressBulk: { + parameters: { + query?: { + /** @description the reindex request IDs. */ + requestId?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns information about a user anonymization operation progress. */ + getProgress: { + parameters: { + query?: { + /** + * @description the id of a user anonymization task you wish to obtain details on. If omitted, then defaults to + * the active anonymization task, or the last task that was run if no anonymization is taking place. + */ + taskId?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all resolutions. */ + getResolutions: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns paginated list of filtered resolutions */ + getPaginatedResolutions: { + parameters: { + query?: { + /** @description the index of the first status to return */ + startAt?: number; + /** @description the maximum number of statuses to return */ + maxResults?: number; + /** @description the string that status names will be matched with */ + query?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a resolution. */ + getResolution: { + parameters: { + path: { + /** @description a String containing the resolution id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates a new ProjectRole to be available in Jira. + * The created role does not have any default actors assigned. + */ + createProjectRole: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Get a specific ProjectRole available in Jira. */ + getProjectRolesById: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Fully updates a roles. Both name and description must be given. */ + fullyUpdateProjectRole: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Partially updates a roles name or description. */ + partialUpdateProjectRole: { + parameters: { + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes a role. May return 403 in the future */ + deleteProjectRole: { + parameters: { + query?: { + /** @description if given, removes a role even if it is used in scheme by replacing the role with the given one */ + swap?: number; + }; + path: { + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Gets default actors for the given role. */ + getProjectRoleActorsForRole: { + parameters: { + path: { + /** @description the role id to remove the actors from */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds default actors to the given role. The request data should contain a list of usernames or a list of groups to add. */ + addProjectRoleActorsToRole: { + parameters: { + path: { + /** @description the role id to remove the actors from */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Removes default actor from the given role. */ + deleteProjectRoleActorsFromRole: { + parameters: { + query?: { + /** @description if given, removes an actor from given role */ + user?: string; + /** @description if given, removes an actor from given role */ + group?: string; + }; + path: { + /** @description the role id to remove the actors from */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Gets available field screens */ + getAllScreens: { + parameters: { + query?: { + /** @description offset from which the response starts */ + startAt?: string; + /** @description amount of field screens to return */ + maxResults?: string; + expand?: string; + search?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds field or custom field to the default tab */ + addFieldToDefaultScreen: { + parameters: { + path: { + /** @description id of field / custom field */ + fieldId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Gets available fields for screen. i.e ones that haven't already been added. */ + getFieldsToAdd: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all tabs for the given screen */ + getAllTabs: { + parameters: { + query?: { + /** @description the key of the project; this parameter is optional */ + projectKey?: string; + }; + path: { + /** @description id of screen */ + screenId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Creates tab for given screen */ + addTab: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Renames tab on given screen */ + renameTab: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Deletes tab to give screen */ + deleteTab: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Gets all fields for a given tab */ + getAllFields: { + parameters: { + query?: { + /** @description the key of the project; this parameter is optional */ + projectKey?: string; + }; + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Adds field to the given tab. */ + addField: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Removes field from given tab */ + removeField: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Moves field on the given tab */ + moveField: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Update 'showWhenEmptyIndicator' for given field on screen */ + updateShowWhenEmptyIndicator: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + /** @description new value of 'showWhenEmptyIndicator' */ + newValue: boolean; + /** @description id of field */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Moves tab position */ + moveTab: { + parameters: { + path: { + /** @description id of screen */ + screenId: number; + /** @description id of tab */ + tabId: number; + /** @description position of tab */ + pos: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Searches for issues using JQL. + *

+ * Sorting + * the jql parameter is a full JQL + * expression, and includes an ORDER BY clause. + *

+ *

+ * The fields param (which can be specified multiple times) gives a comma-separated list of fields + * to include in the response. This can be used to retrieve a subset of fields. + * A particular field can be excluded by prefixing it with a minus. + *

+ * By default, only navigable (*navigable) fields are returned in this search resource. Note: the default is different + * in the get-issue resource -- the default there all fields (*all). + *

    + *
  • *all - include all fields
  • + *
  • *navigable - include just navigable fields
  • + *
  • summary,comment - include just the summary and comments
  • + *
  • -description - include navigable fields except the description (the default is *navigable for search)
  • + *
  • *all,-comment - include everything except comments
  • + *
+ *

+ *

+ *

GET vs POST: + * If the JQL query is too large to be encoded as a query param you should instead + * POST to this resource. + *

+ *

+ * Expanding Issues in the Search Result: + * It is possible to expand the issues returned by directly specifying the expansion on the expand parameter passed + * in to this resources. + *

+ *

+ * For instance, to expand the "changelog" for all the issues on the search result, it is neccesary to + * specify "changelog" as one of the values to expand. + *

+ */ + search: { + parameters: { + query?: { + /** @description a JQL query string */ + jql?: string; + /** @description the index of the first issue to return (0-based) */ + startAt?: number; + /** + * @description the maximum number of issues to return (defaults to 50). The maximum allowable value is + * dictated by the Jira property 'jira.search.views.default.max'. If you specify a value that is higher than this + * number, your search results will be truncated. + */ + maxResults?: number; + /** @description whether to validate the JQL query */ + validateQuery?: boolean; + /** @description the list of fields to return for each issue. By default, all navigable fields are returned. */ + fields?: string; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Performs a search using JQL. */ + searchUsingSearchRequest: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a full representation of the security level that has the given id. */ + getIssuesecuritylevel: { + parameters: { + path: { + /** @description a String containing an issue security level id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns general information about the current Jira server. */ + getServerInfo: { + parameters: { + query?: { + doHealthCheck?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Sets the base URL that is configured for this Jira instance. */ + setBaseURL: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the default system columns for issue navigator. Admin permission will be required. */ + getIssueNavigatorDefaultColumns: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Sets the default system columns for issue navigator. Admin permission will be required. */ + setIssueNavigatorDefaultColumns: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all statuses */ + getStatuses: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns paginated list of filtered statuses */ + getPaginatedStatuses: { + parameters: { + query?: { + /** @description the index of the first status to return */ + startAt?: number; + /** @description the maximum number of statuses to return */ + maxResults?: number; + /** @description the string that status names will be matched with */ + query?: string; + /** @description the list of project ids to filter statuses */ + projectIds?: string; + /** @description the list of issue type ids to filter statuses */ + issueTypeIds?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a full representation of the Status having the given id or name. */ + getStatus: { + parameters: { + path: { + /** @description a numeric Status id or a status name */ + idOrName: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of all status categories */ + getStatusCategories: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a full representation of the StatusCategory having the given id or key */ + getStatusCategory: { + parameters: { + path: { + /** @description a numeric StatusCategory id or a status category key */ + idOrKey: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the list of all defined names for the default words "epic" and "sprint". */ + getAllTerminologyEntries: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Change epic/sprint names from {"originalName"} to {"newName"}. The {"newName"} will be displayed in Jira instead of {"originalName"}. + *

+ * {"originalName"} must be equal to "epic" or "sprint". + * There can be only one entry per unique {"originalName"}. + *

+ * {"newName"} can only consist of alphanumeric characters and spaces e.g. {"newName": "iteration number 2"}. + *

+ * {"newName"} must be between 1 to 100 characters. + * It can't use the already defined {"newName"} values or restricted JQL words . + *

+ * To reset {"newName"} to the default value, enter the {"originalName"} value as the value for {"newName"}. For example, if you want to return to {"originalName": "sprint"}, enter {"newName": "sprint"}. + */ + setTerminologyEntries: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns epic or sprint name as specified in the {originalName} path param. */ + getTerminologyEntry: { + parameters: { + path: { + originalName: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + getAvatars: { + parameters: { + path: { + type: string; + owningObjectId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the result of the last upgrade task. + * + * Returns {@link javax.ws.rs.core.Response#seeOther(java.net.URI)} if still running. + */ + getUpgradeResult: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Runs any pending delayed upgrade tasks. Need Admin permissions to do this. */ + runUpgradesNow: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Create user. By default created user will not be notified with email. + * If password field is not set then password will be randomly generated. + */ + createUser: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Removes user and its references (like project roles associations, watches, history). + *
+ *
+ * Note: user references will not be removed if multiple User Directories are used and there is a user with + * the same name existing in another directory (shadowing user). + */ + removeUser: { + parameters: { + query?: { + /** @description the username */ + username?: string; + /** @description user key */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns available accessibility personal settings along with `enabled` property + * that indicates the currently logged-in user preference. + */ + getA11yPersonalSettings: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Validates user anonymization process. */ + validateUserAnonymization: { + parameters: { + query?: { + /** @description the key of the user to validate anonymization for. */ + userKey?: string; + /** @description Parameter used to include parts of the response. This can be used to include: affectedEntities. Affected entities will only be returned if expand=affectedEntities. */ + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Schedules a user anonymization process. Requires system admin permission. */ + scheduleUserAnonymization: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Validates user anonymization re-run process. */ + validateUserAnonymizationRerun: { + parameters: { + query?: { + /** @description the key of the user to validate anonymization for */ + userKey?: string; + /** + * @description user key before anonymization, only needed when current value is anonymized. + * If there is no old key, e.g. because the user was already created + * using the new key generation strategy, provide a value equal to the current key. + */ + oldUserKey?: string; + /** + * @description user name before anonymization, only needed when the current value is anonymized. + * If there is no old name, provide a value equal to the current name. + */ + oldUserName?: string; + /** @description Parameter used to include parts of the response. This can be used to include: affectedEntities. Affected entities will only be returned if expand=affectedEntities. */ + expand?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Schedules a user anonymization process. Requires system admin permission. */ + scheduleUserAnonymizationRerun: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Removes stale user anonymization task, for scenarios when the node that was executing it is no longer alive. + *

+ * Use it only after making sure that the parent node of the task is actually down, and not just having + * connectivity issues. + */ + unlockAnonymization: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Add user to given application. Admin permission will be required to perform this operation. */ + addUserToApplication: { + parameters: { + query?: { + /** @description username */ + username?: string; + /** @description application key */ + applicationKey?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove user from given application. Admin permission will be required to perform this operation. */ + removeUserFromApplication: { + parameters: { + query?: { + /** @description username */ + username?: string; + /** @description application key */ + applicationKey?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of users that match the search string and can be assigned issues for all the given projects. */ + findBulkAssignableUsers: { + parameters: { + query?: { + /** @description the username */ + username?: string; + /** @description the keys of the projects we are finding assignable users for, comma-separated */ + projectKeys?: string; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 100. + * If you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of users that match the search string. This resource cannot be accessed anonymously. + * Please note that this resource should be called with an issue key when a list of assignable users is retrieved + * for editing. For create only a project key should be supplied. The list of assignable users may be incorrect + * if it's called with the project key for editing. + */ + findAssignableUsers: { + parameters: { + query?: { + /** @description the username */ + username?: string; + /** @description the key of the project we are finding assignable users for */ + project?: string; + /** @description the issue key for the issue being edited we need to find assignable users for. */ + issueKey?: string; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 100. + * If you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + actionDescriptorId?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + updateUserAvatar: { + parameters: { + query?: { + username?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns the number of users whose accounts are duplicated. + * Duplicated means that the user has an account in more than one directory + * and either more than one account is active or the only active account does not belong to the directory + * with the highest priority. + * The data returned by this endpoint is cached for 10 minutes and the cache is flushed when any User Directory + * is added, removed, enabled, disabled, or synchronized. + * A System Administrator can also flush the cache manually. + * Related JAC ticket: https://jira.atlassian.com/browse/JRASERVER-68797 + */ + getDuplicatedUsersCount: { + parameters: { + query?: { + /** @description if set to true forces cache flush, user must be sysadmin for this parameter to have an effect. */ + flush?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns duplicated users mapped to their directories with an indication if their accounts are active or not. + * Duplicated means that the user has an account in more than one directory and either more than one account is active + * or the only active account does not belong to the directory with the highest priority. + * The data returned by this endpoint is cached for 10 minutes and the cache is flushed when any User Directory + * is added, removed, enabled, disabled, or synchronized. + * A System Administrator can also flush the cache manually. + * Related JAC ticket: https://jira.atlassian.com/browse/JRASERVER-68797 + */ + getDuplicatedUsersMapping: { + parameters: { + query?: { + /** @description if set to true forces cache flush, user must be sysadmin for this parameter to have an effect. */ + flush?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Modify user password. */ + changeUserPassword: { + parameters: { + query?: { + /** @description the username */ + username?: string; + /** @description user key */ + key?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of active users that match the search string and have all specified permissions for the project or issue.
+ * This resource can be accessed by users with ADMINISTER_PROJECT permission for the project or global ADMIN or SYSADMIN rights.
+ * This endpoint can cause serious performance issues and will be removed in Jira 9.0. + */ + findUsersWithAllPermissions: { + parameters: { + query?: { + /** @description the username filter, list includes all users if unspecified */ + username?: string; + /** + * @description comma separated list of permissions for project or issue returned users must have, see + * Permissions + * JavaDoc for the list of all possible permissions. + */ + permissions?: string; + /** @description the issue key for the issue for which returned users have specified permissions. */ + issueKey?: string; + /** @description the optional project key to search for users with if no issueKey is supplied. */ + projectKey?: string; + /** @description the index of the first user to return (0-based) */ + startAt?: number; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. + * If you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of users matching query with highlighting. */ + findUsersForPicker: { + parameters: { + query?: { + /** @description A string used to search username, Name or e-mail address */ + query?: string; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. + * If you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + showAvatar?: boolean; + exclude?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a list of users that match the search string. This resource cannot be accessed anonymously. */ + findUsers: { + parameters: { + query?: { + /** @description A query string used to search username, name or e-mail address */ + username?: string; + /** @description the index of the first user to return (0-based) */ + startAt?: number; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. + * If you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + /** @description If true, then active users are included in the results (default true) */ + includeActive?: boolean; + /** @description If true, then inactive users are included in the results (default false) */ + includeInactive?: boolean; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + deleteSession: { + parameters: { + path: { + username: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns a list of active users that match the search string. This resource cannot be accessed anonymously + * and requires the Browse Users global permission. + * Given an issue key this resource will provide a list of users that match the search string and have + * the browse issue permission for the issue provided. + */ + findUsersWithBrowsePermission: { + parameters: { + query?: { + /** @description the username filter, no users returned if left blank */ + username?: string; + /** @description the issue key for the issue being edited we need to find viewable users for. */ + issueKey?: string; + /** @description the optional project key to search for users with if no issueKey is supplied. */ + projectKey?: string; + /** + * @description the maximum number of users to return (defaults to 50). The maximum allowed value is 100. + * If you specify a value that is higher than this number, your search results will be truncated. + */ + maxResults?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Retrieve paginated collection of versions matching given query optionally filtered by given project IDs. */ + getPaginatedVersions: { + parameters: { + query?: { + /** @description optional index of the first version to return */ + startAt?: number; + /** @description optional maximum number of versions to return */ + maxResults?: number; + /** @description optional string that version names will be matched with */ + query?: string; + /** @description optional set of project IDs to filter versions with */ + projectIds?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Create a version via POST. */ + createVersion: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the remote version links for a given global ID. */ + getRemoteVersionLinks: { + parameters: { + query?: { + /** @description the global ID of the remote resource that is linked to the versions */ + globalId?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a project version. */ + getVersion: { + parameters: { + query?: { + expand?: string; + }; + path: { + /** @description The version to delete */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Modify a version via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field + * is not present, it is silently ignored. + */ + updateVersion: { + parameters: { + path: { + /** @description The version to delete */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Merge versions */ + merge: { + parameters: { + path: { + /** + * @description The version to set fixVersion to on issues where the deleted version is the fix version, + * If null then the fixVersion is removed. + */ + moveIssuesTo: string; + /** @description The version that will be merged to version {@code moveIssuesTo} and removed */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Modify a version's sequence within a project. + *

+ * The move version bean has 2 alternative field value pairs: + *

+ *
position
An absolute position, which may have a value of 'First', 'Last', 'Earlier' or 'Later'
+ *
after
A version to place this version after. The value should be the self link of another version
+ *
+ */ + moveVersion: { + parameters: { + path: { + /** @description a String containing the version id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns a bean containing the number of fixed in and affected issues for the given version. */ + getVersionRelatedIssues: { + parameters: { + path: { + /** @description a String containing the version id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the number of unresolved issues for the given version */ + getVersionUnresolvedIssues: { + parameters: { + path: { + /** @description a String containing the version id */ + id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the remote version links associated with the given version ID. */ + getRemoteVersionLinksByVersionId: { + parameters: { + path: { + /** @description The version for which to delete ALL existing remote version links */ + versionId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Create a remote version link via POST. The link's global ID will be taken from the + * JSON payload if provided; otherwise, it will be generated. + */ + createOrUpdateRemoteVersionLink: { + parameters: { + path: { + /** @description The version ID of the remote link */ + versionId: string; + /** @description The global ID of the remote link */ + globalId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete all remote version links for a given version ID. */ + deleteRemoteVersionLinksByVersionId: { + parameters: { + path: { + /** @description The version for which to delete ALL existing remote version links */ + versionId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description A REST sub-resource representing a remote version link */ + getRemoteVersionLink: { + parameters: { + path: { + /** @description The version ID of the remote link */ + versionId: string; + /** @description The global ID of the remote link */ + globalId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete a specific remote version link with the given version ID and global ID. */ + deleteRemoteVersionLink: { + parameters: { + path: { + /** @description The version ID of the remote link */ + versionId: string; + /** @description The global ID of the remote link */ + globalId: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns all workflows. The “lastModifiedDate” is returned in Jira Complete Date/Time Format (dd/MMM/yy h:mm by default), + * but can also be returned as a relative date. + */ + getAllWorkflows: { + parameters: { + query?: { + workflowName?: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Return the property or properties associated with a transition. */ + getProperties: { + parameters: { + query?: { + /** + * @description some keys under the "jira." prefix are editable, some are not. Set this to true + * in order to include the non-editable keys in the response. + */ + includeReservedKeys?: boolean; + /** @description the name of the property key to query. Can be left off the query to return all properties. */ + key?: string; + /** @description the name of the workflow to use. */ + workflowName?: string; + /** @description the type of workflow to use. Can either be "live" or "draft". */ + workflowMode?: string; + }; + path: { + /** @description the ID of the transition within the workflow. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Update/add new property to a transition. Trying to update a property that does + * not exist will result in a new property being added. + */ + updateProperty: { + parameters: { + query?: { + /** @description the name of the property to add. */ + key?: string; + /** @description the name of the workflow to use. */ + workflowName?: string; + /** @description the type of workflow to use. Can either be "live" or "draft". */ + workflowMode?: string; + }; + path: { + /** @description the ID of the transition within the workflow. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Add a new property to a transition. Trying to add a property that already + * exists will fail. + */ + createProperty: { + parameters: { + query?: { + /** @description the name of the property to add. */ + key?: string; + /** @description the name of the workflow to use. */ + workflowName?: string; + /** @description the type of workflow to use. Can either be "live" or "draft". */ + workflowMode?: string; + }; + path: { + /** @description the ID of the transition within the workflow. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Create a new workflow scheme. + *

+ * The body contains a representation of the new scheme. Values not passed are assumed to be set to their defaults. + */ + createScheme: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the requested workflow scheme to the caller. */ + getById: { + parameters: { + query?: { + /** + * @description when true indicates that a scheme's draft, if it exists, should be queried instead of + * the scheme itself. + */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Update the passed workflow scheme. + *

+ * The body of the request is a representation of the workflow scheme. Values not passed are assumed to indicate + * no change for that field. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that the draft + * should be created and/or updated when the actual scheme cannot be edited (e.g. when the scheme is being used by + * a project). Values not appearing the body will not be touched. + */ + update: { + parameters: { + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the passed workflow scheme. */ + deleteScheme: { + parameters: { + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Create a draft for the passed scheme. The draft will be a copy of the state of the parent. */ + createDraftForParent: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Return the default workflow from the passed workflow scheme. */ + getDefault: { + parameters: { + query?: { + /** + * @description when true indicates that a scheme's draft, if it exists, should be queried instead of + * the scheme itself. + */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Set the default workflow for the passed workflow scheme. + *

+ * The passed representation can have its + * updateDraftIfNeeded flag set to true to indicate that the draft should be created/updated when the actual scheme + * cannot be edited. + */ + updateDefault: { + parameters: { + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove the default workflow from the passed workflow scheme. */ + deleteDefault: { + parameters: { + query?: { + /** + * @description when true will create and return a draft when the workflow scheme cannot be edited + * (e.g. when it is being used by a project). + */ + updateDraftIfNeeded?: boolean; + }; + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the requested draft workflow scheme to the caller. */ + getDraftById: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Update a draft workflow scheme. The draft will created if necessary. + *

+ * The body is a representation of the workflow scheme. Values not passed are assumed to indicate no change for that field. + */ + updateDraft: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the passed draft workflow scheme. */ + deleteDraftById: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Return the default workflow from the passed draft workflow scheme to the caller. */ + getDraftDefault: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Set the default workflow for the passed draft workflow scheme. */ + updateDraftDefault: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove the default workflow from the passed draft workflow scheme. */ + deleteDraftDefault: { + parameters: { + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the issue type mapping for the passed draft workflow scheme. */ + getDraftIssueType: { + parameters: { + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Set the issue type mapping for the passed draft scheme. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that + * the draft should be created/updated when the actual scheme cannot be edited. + */ + setDraftIssueType: { + parameters: { + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Remove the specified issue type mapping from the draft scheme. */ + deleteDraftIssueType: { + parameters: { + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the draft workflow mappings or requested mapping to the caller. */ + getDraftWorkflow: { + parameters: { + query?: { + /** @description the workflow mapping to return. Null can be passed to return all mappings. Must be a valid workflow name. */ + workflowName?: string; + }; + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Update the draft scheme to include the passed mapping. + *

+ * The body is a representation of the workflow mapping. + * Values not passed are assumed to indicate no change for that field. + */ + updateDraftWorkflowMapping: { + parameters: { + query?: { + /** @description the name of the workflow mapping to update. */ + workflowName?: string; + }; + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the passed workflow from the draft workflow scheme. */ + deleteDraftWorkflowMapping: { + parameters: { + query?: { + /** @description the name of the workflow to delete. */ + workflowName?: string; + }; + path: { + /** @description the id of the parent scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Set the issue type mapping for the passed scheme. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that + * the draft should be created/updated when the actual scheme cannot be edited. + */ + setIssueType: { + parameters: { + path: { + /** @description the issue type being set. */ + issueType: string; + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Returns the workflow mappings or requested mapping to the caller for the passed scheme. */ + getWorkflow: { + parameters: { + query?: { + /** @description the workflow mapping to return. Null can be passed to return all mappings. Must be a valid workflow name. */ + workflowName?: string; + /** + * @description when true indicates that a scheme's draft, if it exists, should be queried instead of + * the scheme itself. + */ + returnDraftIfExists?: boolean; + }; + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Update the scheme to include the passed mapping. + *

+ * The body is a representation of the workflow mapping. + * Values not passed are assumed to indicate no change for that field. + *

+ * The passed representation can have its updateDraftIfNeeded flag set to true to indicate that the draft + * should be created/updated when the actual scheme cannot be edited. + */ + updateWorkflowMapping: { + parameters: { + query?: { + /** @description the name of the workflow mapping to update. */ + workflowName?: string; + }; + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Delete the passed workflow from the workflow scheme. */ + deleteWorkflowMapping: { + parameters: { + query?: { + /** @description the name of the workflow to delete. */ + workflowName?: string; + /** + * @description flag to indicate if a draft should be created if necessary to delete the workflow + * from the scheme. + */ + updateDraftIfNeeded?: boolean; + }; + path: { + /** @description the id of the scheme. */ + id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns worklogs id and delete time of worklogs that was deleted since given time. + * The returns set of worklogs is limited to 1000 elements. + * This API will not return worklogs deleted during last minute. + */ + getIdsOfWorklogsDeletedSince: { + parameters: { + query?: { + /** @description a date time in unix timestamp format since when deleted worklogs will be returned. */ + since?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns worklogs for given worklog ids. Only worklogs to which the calling user has permissions, will be included in the result. + * The returns set of worklogs is limited to 1000 elements. + */ + getWorklogsForIds: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns worklogs id and update time of worklogs that was updated since given time. + * The returns set of worklogs is limited to 1000 elements. + * This API will not return worklogs updated during last minute. + */ + getIdsOfWorklogsModifiedSince: { + parameters: { + query?: { + /** @description a date time in unix timestamp format since when updated worklogs will be returned. */ + since?: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Returns information about the currently authenticated user's session. If the caller is not authenticated they + * will get a 401 Unauthorized status code. + */ + currentUser: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** + * @description Creates a new session for a user in Jira. Once a session has been successfully created it can be used to access + * any of Jira's remote APIs and also the web UI by passing the appropriate HTTP Cookie header. + *

+ * Note that it is generally preferrable to use HTTP BASIC authentication with the REST API. However, this resource + * may be used to mimic the behaviour of Jira's log-in page (e.g. to display log-in errors to a user). + */ + login: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description Logs the current user out of Jira, destroying the existing session, if any. */ + logout: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; + /** @description This method invalidates the any current WebSudo session. */ + release: { + responses: { + /** @description Successful Response */ + 200: { + content: never; + }; + }; + }; +} diff --git a/src/generated/openapi-service-desk.ts b/src/generated/openapi-service-desk.ts new file mode 100644 index 0000000..c4cf5f0 --- /dev/null +++ b/src/generated/openapi-service-desk.ts @@ -0,0 +1,5737 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ + +export interface paths { + "/rest/servicedeskapi/assets/workspace": { + /** + * Get assets workspaces + * @description Returns a list of Assets workspace IDs. Include a workspace ID in the path to access the [Assets REST APIs](https://developer.atlassian.com/cloud/assets/rest). + * + * **[Permissions](#permissions) required**: Any + */ + get: operations["getAssetsWorkspaces"]; + }; + "/rest/servicedeskapi/customer": { + /** + * Create customer + * @description This method adds a customer to the Jira Service Management instance by passing a JSON file including an email address and display name. The display name does not need to be unique. The record's identifiers, `name` and `key`, are automatically generated from the request details. + * + * **[Permissions](#permissions) required**: Jira Administrator Global permission + */ + post: operations["createCustomer"]; + }; + "/rest/servicedeskapi/info": { + /** + * Get info + * @description This method retrieves information about the Jira Service Management instance such as software version, builds, and related links. + * + * **[Permissions](#permissions) required**: None, the user does not need to be logged in. + */ + get: operations["getInfo"]; + }; + "/rest/servicedeskapi/insight/workspace": { + /** + * Get insight workspaces + * @description This endpoint is deprecated, please use /assets/workspace/. + */ + get: operations["getInsightWorkspaces"]; + }; + "/rest/servicedeskapi/knowledgebase/article": { + /** + * Get articles + * @description Returns articles which match the given query string across all service desks. + * + * **[Permissions](#permissions) required**: Permission to access the [customer portal](https://confluence.atlassian.com/servicedeskcloud/configuring-the-customer-portal-732528918.html). + */ + get: operations["getArticles"]; + }; + "/rest/servicedeskapi/organization": { + /** + * Get organizations + * @description This method returns a list of organizations in the Jira Service Management instance. Use this method when you want to present a list of organizations or want to locate an organization by name. + * + * **[Permissions](#permissions) required**: Any. However, to fetch organizations based on `accountId` the user must have a Service Desk agent license. + * + * **Response limitations**: If the user is a customer, only those organizations of which the customer is a member are listed. + */ + get: operations["getOrganizations"]; + /** + * Create organization + * @description This method creates an organization by passing the name of the organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. Note: Permission to create organizations can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + post: operations["createOrganization"]; + }; + "/rest/servicedeskapi/organization/{organizationId}": { + /** + * Get organization + * @description This method returns details of an organization. Use this method to get organization details whenever your application component is passed an organization ID but needs to display other organization details. + * + * **[Permissions](#permissions) required**: Any + * + * **Response limitations**: Customers can only retrieve organization of which they are members. + */ + get: operations["getOrganization"]; + /** + * Delete organization + * @description This method deletes an organization. Note that the organization is deleted regardless of other associations it may have. For example, associations with service desks. + * + * **[Permissions](#permissions) required**: Jira administrator. + */ + delete: operations["deleteOrganization"]; + }; + "/rest/servicedeskapi/organization/{organizationId}/property": { + /** + * Get properties keys + * @description Returns the keys of all properties for an organization. Use this resource when you need to find out what additional properties items have been added to an organization. + * + * **[Permissions](#permissions) required**: Any + * + * **Response limitations**: Customers can only access properties of organizations of which they are members. + */ + get: operations["getPropertiesKeys"]; + }; + "/rest/servicedeskapi/organization/{organizationId}/property/{propertyKey}": { + /** + * Get property + * @description Returns the value of a property from an organization. Use this method to obtain the JSON content for an organization's property. + * + * **[Permissions](#permissions) required**: Any + * + * **Response limitations**: Customers can only access properties of organizations of which they are members. + */ + get: operations["getProperty"]; + /** + * Set property + * @description Sets the value of a property for an organization. Use this resource to store custom data against an organization. + * + * **[Permissions](#permissions) required**: Service Desk Administrator or Agent. + * + * Note: Permission to manage organizations can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + put: operations["setProperty"]; + /** + * Delete property + * @description Removes a property from an organization. + * + * **[Permissions](#permissions) required**: Service Desk Administrator or Agent. + * + * Note: Permission to manage organizations can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + delete: operations["deleteProperty"]; + }; + "/rest/servicedeskapi/organization/{organizationId}/user": { + /** + * Get users in organization + * @description This method returns all the users associated with an organization. Use this method where you want to provide a list of users for an organization or determine if a user is associated with an organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. + */ + get: operations["getUsersInOrganization"]; + /** + * Add users to organization + * @description This method adds users to an organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. Note: Permission to add users to an organization can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + post: operations["addUsersToOrganization"]; + /** + * Remove users from organization + * @description This method removes users from an organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. Note: Permission to delete users from an organization can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + delete: operations["removeUsersFromOrganization"]; + }; + "/rest/servicedeskapi/request": { + /** + * Get customer requests + * @description 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](#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. + */ + get: operations["getCustomerRequests"]; + /** + * Create customer request + * @description 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](#permissions) required**: Permission to create requests in the specified service desk. + */ + post: operations["createCustomerRequest"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}": { + /** + * Get customer request by id or key + * @description This method returns a customer request. + * + * **[Permissions](#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. + * + * **Note:** `requestFieldValues` does not include hidden fields. To get a list of request type fields that includes hidden fields, see [/rest/servicedeskapi/servicedesk/\{serviceDeskId\}/requesttype/\{requestTypeId\}/field](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-servicedesk/#api-rest-servicedeskapi-servicedesk-servicedeskid-requesttype-requesttypeid-field-get) + */ + get: operations["getCustomerRequestByIdOrKey"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/approval": { + /** + * Get approvals + * @description This method returns all approvals on a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + get: operations["getApprovals"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/approval/{approvalId}": { + /** + * Get approval by id + * @description This method returns an approval. Use this method to determine the status of an approval and the list of approvers. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + get: operations["getApprovalById"]; + /** + * Answer approval + * @description 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](#permissions) required**: User is assigned to the approval request. + */ + post: operations["answerApproval"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/attachment": { + /** + * Get attachments for request + * @description This method returns all the attachments for a customer requests. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + * + * **Response limitations**: Customers will only get a list of public attachments. + */ + get: operations["getAttachmentsForRequest"]; + /** + * Create comment with attachment + * @description This method creates a comment on a customer request using one or more attachment files (uploaded using [servicedeskapi/servicedesk/\{serviceDeskId\}/attachTemporaryFile](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-servicedesk/#api-rest-servicedeskapi-servicedesk-servicedeskid-attachtemporaryfile-post)), with the visibility set by `public`. See + * + * * GET [servicedeskapi/request/\{issueIdOrKey\}/attachment](./#api-rest-servicedeskapi-request-issueidorkey-attachment-get) + * * GET [servicedeskapi/request/\{issueIdOrKey\}/comment/\{commentId\}/attachment](./#api-rest-servicedeskapi-request-issueidorkey-comment-commentid-attachment-get) + * + * **[Permissions](#permissions) required**: Permission to add an attachment. + * + * **Request limitations**: Customers can set public visibility only. + */ + post: operations["createCommentWithAttachment"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/attachment/{attachmentId}": { + /** + * Get attachment content + * @description 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. + */ + get: operations["getAttachmentContent"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/attachment/{attachmentId}/thumbnail": { + /** + * Get attachment thumbnail + * @description 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. + */ + get: operations["getAttachmentThumbnail"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/comment": { + /** + * Get request comments + * @description 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](#permissions) required**: Permission to view the customer request. + * + * **Response limitations**: Customers are returned public comments only. + */ + get: operations["getRequestComments"]; + /** + * Create request comment + * @description 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](#permissions) required**: User has Add Comments permission. + * + * **Request limitations**: Customers can set comments to public visibility only. + */ + post: operations["createRequestComment"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/comment/{commentId}": { + /** + * Get request comment by id + * @description This method returns details of a customer request's comment. + * + * **[Permissions](#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. + */ + get: operations["getRequestCommentById"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/comment/{commentId}/attachment": { + /** + * Get comment attachments + * @description This method returns the attachments referenced in a comment. + * + * **[Permissions](#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. + */ + get: operations["getCommentAttachments"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/notification": { + /** + * Get subscription status + * @description 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](#permissions) required**: Permission to view the customer request. + */ + get: operations["getSubscriptionStatus"]; + /** + * Subscribe + * @description This method subscribes the user to receiving notifications from a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + put: operations["subscribe"]; + /** + * Unsubscribe + * @description This method unsubscribes the user from notifications from a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + delete: operations["unsubscribe"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/participant": { + /** + * Get request participants + * @description This method returns a list of all the participants on a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + get: operations["getRequestParticipants"]; + /** + * Add request participants + * @description This method adds participants to a customer request. + * + * **[Permissions](#permissions) required**: Permission to manage participants on the customer request. + * + * Note, participants can be added when creating a customer request using the [request](#api-request-post) resource, by defining the participants in the `requestParticipants` field. + */ + post: operations["addRequestParticipants"]; + /** + * Remove request participants + * @description This method removes participants from a customer request. + * + * **[Permissions](#permissions) required**: Permission to manage participants on the customer request. + */ + delete: operations["removeRequestParticipants"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/sla": { + /** + * Get sla information + * @description 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](#permissions) required**: Agent for the Service Desk containing the queried customer request. + */ + get: operations["getSlaInformation"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/sla/{slaMetricId}": { + /** + * Get sla information by id + * @description This method returns the details for an SLA on a customer request. + * + * **[Permissions](#permissions) required**: Agent for the Service Desk containing the queried customer request. + */ + get: operations["getSlaInformationById"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/status": { + /** + * Get customer request status + * @description 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](#permissions) required**: Permission to view the customer request. + */ + get: operations["getCustomerRequestStatus"]; + }; + "/rest/servicedeskapi/request/{issueIdOrKey}/transition": { + /** + * Get customer transitions + * @description 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](#permissions) required**: Permission to view the customer request. + */ + get: operations["getCustomerTransitions"]; + /** + * Perform customer transition + * @description 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](#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. + */ + post: operations["performCustomerTransition"]; + }; + "/rest/servicedeskapi/request/{requestIdOrKey}/feedback": { + /** + * Get feedback + * @description This method retrieves a feedback of a request using it's `requestKey` or `requestId` + * + * **[Permissions](#permissions) required**: User has view request permissions. + */ + get: operations["getFeedback"]; + /** + * Post feedback + * @description This method adds a feedback on an request using it's `requestKey` or `requestId` + * + * **[Permissions](#permissions) required**: User must be the reporter or an Atlassian Connect app. + */ + post: operations["postFeedback"]; + /** + * Delete feedback + * @description This method deletes the feedback of request using it's `requestKey` or `requestId` + * + * **[Permissions](#permissions) required**: User must be the reporter or an Atlassian Connect app. + */ + delete: operations["deleteFeedback"]; + }; + "/rest/servicedeskapi/requesttype": { + /** + * Get all request types + * @description This method returns all customer request types used in the Jira Service Management instance, optionally filtered by a query string. + * + * Use [servicedeskapi/servicedesk/\{serviceDeskId\}/requesttype](#api-servicedesk-serviceDeskId-requesttype-get) to find the customer request types supported by a specific service desk. + * + * The returned list of customer request types can be filtered using the `query` parameter. The parameter is matched against the customer request types' `name` or `description`. For example, searching for "Install", "Inst", "Equi", or "Equipment" will match a customer request type with the *name* "Equipment Installation Request". + * + * **Note:** This API will filter out hidden request types (aka.request types without groups) when `query` is provided. + * + * **[Permissions](#permissions) required**: Any + */ + get: operations["getAllRequestTypes"]; + }; + "/rest/servicedeskapi/servicedesk": { + /** + * Get service desks + * @description This method returns all the service desks in the Jira Service Management instance that the user has permission to access. Use this method where you need a list of service desks or need to locate a service desk by name or keyword. + * + * **Note:** This method will be slow if the instance has hundreds of service desks. If you want to fetch a single service desk by its ID, use [/rest/servicedeskapi/servicedesk/\{serviceDeskId\}](./#api-rest-servicedeskapi-servicedesk-servicedeskid-get) instead. + * + * **[Permissions](#permissions) required**: Any + */ + get: operations["getServiceDesks"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}": { + /** + * Get service desk by id + * @description This method returns a service desk. Use this method to get service desk details whenever your application component is passed a service desk ID but needs to display other service desk details. + * + * **[Permissions](#permissions) required**: Permission to access the Service Desk. For example, being the Service Desk's Administrator or one of its Agents or Users. + */ + get: operations["getServiceDeskById"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/attachTemporaryFile": { + /** + * Attach temporary file + * @description This method adds one or more temporary attachments to a service desk, which can then be permanently attached to a customer request using [servicedeskapi/request/\{issueIdOrKey\}/attachment](#api-request-issueIdOrKey-attachment-post). + * + * **Note**: It is possible for a service desk administrator to turn off the ability to add attachments to a service desk. + * + * This method expects a multipart request. The media-type multipart/form-data is defined in RFC 1867. Most client libraries have classes that make dealing with multipart posts simple. For instance, in Java the Apache HTTP Components library provides [MultiPartEntity](http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html). + * + * Because this method accepts multipart/form-data, it has XSRF protection on it. This means you must submit a header of X-Atlassian-Token: no-check with the request or it will be blocked. + * + * The name of the multipart/form-data parameter that contains the attachments must be `file`. + * + * For example, to upload a file called `myfile.txt` in the Service Desk with ID 10001 use + * + * curl -D- -u customer:customer -X POST -H "X-ExperimentalApi: opt-in" -H "X-Atlassian-Token: no-check" -F "file=@myfile.txt" https://your-domain.atlassian.net/rest/servicedeskapi/servicedesk/10001/attachTemporaryFile + * + * **[Permissions](#permissions) required**: Permission to add attachments in this Service Desk. + */ + post: operations["attachTemporaryFile"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/customer": { + /** + * Get customers + * @description This method returns a list of the customers on a service desk. + * + * The returned list of customers can be filtered using the `query` parameter. The parameter is matched against customers' `displayName`, `name`, or `email`. For example, searching for "John", "Jo", "Smi", or "Smith" will match a user with display name "John Smith". + * + * **[Permissions](#permissions) required**: Permission to view this Service Desk's customers. + */ + get: operations["getCustomers"]; + /** + * Add customers + * @description Adds one or more customers to a service desk. If any of the passed customers are associated with the service desk, no changes will be made for those customers and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Service desk administrator + */ + post: operations["addCustomers"]; + /** + * Remove customers + * @description This method removes one or more customers from a service desk. The service desk must have closed access. If any of the passed customers are not associated with the service desk, no changes will be made for those customers and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Services desk administrator + */ + delete: operations["removeCustomers"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/knowledgebase/article": { + /** + * Get articles + * @description Returns articles which match the given query and belong to the knowledge base linked to the service desk. + * + * **[Permissions](#permissions) required**: Permission to access the service desk. + */ + get: operations["getArticles"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/organization": { + /** + * Get organizations + * @description This method returns a list of all organizations associated with a service desk. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + get: operations["getOrganizations"]; + /** + * Add organization + * @description This method adds an organization to a service desk. If the organization ID is already associated with the service desk, no change is made and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + post: operations["addOrganization"]; + /** + * Remove organization + * @description This method removes an organization from a service desk. If the organization ID does not match an organization associated with the service desk, no change is made and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + delete: operations["removeOrganization"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/queue": { + /** + * Get queues + * @description This method returns the queues in a service desk. To include a customer request count for each queue (in the `issueCount` field) in the response, set the query parameter `includeCount` to true (its default is false). + * + * **[Permissions](#permissions) required**: service desk's Agent. + */ + get: operations["getQueues"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/queue/{queueId}": { + /** + * Get queue + * @description This method returns a specific queues in a service desk. To include a customer request count for the queue (in the `issueCount` field) in the response, set the query parameter `includeCount` to true (its default is false). + * + * **[Permissions](#permissions) required**: service desk's Agent. + */ + get: operations["getQueue"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/queue/{queueId}/issue": { + /** + * Get issues in queue + * @description This method returns the customer requests in a queue. Only fields that the queue is configured to show are returned. For example, if a queue is configured to show description and due date, then only those two fields are returned for each customer request in the queue. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + get: operations["getIssuesInQueue"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttype": { + /** + * Get request types + * @description This method returns all customer request types from a service desk. There are two parameters for filtering the returned list: + * + * * `groupId` which filters the results to items in the customer request type group. + * * `searchQuery` which is matched against request types' `name` or `description`. For example, the strings "Install", "Inst", "Equi", or "Equipment" will match a request type with the *name* "Equipment Installation Request". + * + * **Note:** This API by default will filter out hidden request types (aka.request types without groups) when `searchQuery` is provided, unless `includeHiddenRequestTypesInSearch` is set to true. + * + * **[Permissions](#permissions) required**: Permission to access the service desk. + */ + get: operations["getRequestTypes"]; + /** + * Create request type + * @description This method enables a customer request type to be added to a service desk based on an issue type. Note that not all customer request type fields can be specified in the request and these fields are given the following default values: + * + * * Request type icon is given the headset icon. + * * Request type groups is left empty, which means this customer request type will not be visible on the [customer portal](https://confluence.atlassian.com/servicedeskcloud/configuring-the-customer-portal-732528918.html). + * * Request type status mapping is left empty, so the request type has no custom status mapping but inherits the status map from the issue type upon which it is based. + * * Request type field mapping is set to show the required fields as specified by the issue type used to create the customer request type. + * + * + * These fields can be updated by a service desk administrator using the **Request types** option in **Project settings**. + * Request Types are created in next-gen projects by creating Issue Types. Please use the Jira Cloud Platform Create issue type endpoint instead. + * + * **[Permissions](#permissions) required**: Service desk's administrator + */ + post: operations["createRequestType"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttype/{requestTypeId}": { + /** + * Get request type by id + * @description This method returns a customer request type from a service desk. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required**: Permission to access the service desk. + */ + get: operations["getRequestTypeById"]; + /** + * Delete request type + * @description This method deletes a customer request type from a service desk, and removes it from all customer requests. + * This only supports classic projects. + * + * **[Permissions](#permissions) required**: Service desk administrator. + */ + delete: operations["deleteRequestType"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttype/{requestTypeId}/field": { + /** + * Get request type fields + * @description This method returns the fields for a service desk's customer request type. + * + * Also, the following information about the user's permissions for the request type is returned: + * + * * `canRaiseOnBehalfOf` returns `true` if the user has permission to raise customer requests on behalf of other customers. Otherwise, returns `false`. + * * `canAddRequestParticipants` returns `true` if the user can add customer request participants. Otherwise, returns `false`. + * + * **[Permissions](#permissions) required**: Permission to view the Service Desk. However, hidden fields would be visible to only Service desk's Administrator. + */ + get: operations["getRequestTypeFields"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttype/{requestTypeId}/property": { + /** + * Get properties keys + * @description Returns the keys of all properties for a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore the keys of all properties for a request type are also available by calling the Jira Cloud Platform [Get issue type property keys](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-get) endpoint. + * + * **[Permissions](#permissions) required**: The user must have permission to view the request type. + */ + get: operations["getPropertiesKeys"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttype/{requestTypeId}/property/{propertyKey}": { + /** + * Get property + * @description Returns the value of the property from a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore also available by calling the Jira Cloud Platform [Get issue type property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-get) endpoint. + * + * **[Permissions](#permissions) required**: User must have permission to view the request type. + */ + get: operations["getProperty"]; + /** + * Set property + * @description Sets the value of a request type property. Use this resource to store custom data against a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore can also be set by calling the Jira Cloud Platform [Set issue type property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-put) endpoint. + * + * **[Permissions](#permissions) required**: Jira project administrator with a Jira Service Management agent license. + */ + put: operations["setProperty"]; + /** + * Delete property + * @description Removes a property from a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore can also be deleted by calling the Jira Cloud Platform [Delete issue type property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-delete) endpoint. + * + * **[Permissions](#permissions) required**: Jira project administrator with a Jira Service Management agent license. + */ + delete: operations["deleteProperty"]; + }; + "/rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttypegroup": { + /** + * Get request type groups + * @description This method returns a service desk's customer request type groups. Jira Service Management administrators can arrange the customer request type groups in an arbitrary order for display on the customer portal; the groups are returned in this order. + * + * **[Permissions](#permissions) required**: Permission to view the service desk. + */ + get: operations["getRequestTypeGroups"]; + }; +} + +export type webhooks = Record; + +export interface components { + schemas: { + AdditionalCommentDTO: { + /** @description Content of the comment. */ + body?: string; + }; + ApprovalDTO: { + /** @description The REST API URL of the approval. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description Detailed list of the users who must provide a response to the approval. */ + approvers?: components["schemas"]["ApproverDTO"][]; + /** @description Indicates whether the user making the request is one of the approvers and can respond to the approval (true) or not (false). */ + canAnswerApproval?: boolean; + /** @description Date the approval was completed. */ + completedDate?: components["schemas"]["DateDTO"]; + /** @description Date the approval was created. */ + createdDate?: components["schemas"]["DateDTO"]; + /** + * @description Outcome of the approval, based on the approvals provided by all approvers. + * @enum {string} + */ + finalDecision?: "approved" | "declined" | "pending"; + /** @description ID of the approval. */ + id?: string; + /** @description Description of the approval being sought or provided. */ + name?: string; + }; + ApprovalDecisionRequestDTO: { + /** + * @description Response to the approval request. + * @enum {string} + */ + decision?: "approve" | "decline"; + }; + ApproverDTO: { + /** @description Details of the User who is providing approval. */ + approver?: components["schemas"]["UserDTO"]; + /** + * @description Decision made by the approver. + * @enum {string} + */ + approverDecision?: "approved" | "declined" | "pending"; + }; + ArticleDTO: { + content?: components["schemas"]["ContentDTO"]; + /** @description Excerpt of the article which matches the given query string. */ + excerpt?: string; + /** @description Source of the article. */ + source?: components["schemas"]["SourceDTO"]; + /** @description Title of the article. */ + title?: string; + }; + /** @description Details of an Assets workspace ID. */ + AssetsWorkspaceDTO: { + /** @description The workspace ID used as the identifier to access the Assets REST API. */ + workspaceId?: string; + }; + AttachmentCreateDTO: { + /** @description Additional content of the comment */ + additionalComment?: components["schemas"]["AdditionalCommentDTO"]; + /** @description Controls whether the comment and its attachments are visible to customers */ + public?: boolean; + /** @description List of IDs for the temporary attachments to be added to the customer request. */ + temporaryAttachmentIds?: string[]; + }; + AttachmentCreateResultDTO: { + /** @description List of the attachments added. */ + attachments?: components["schemas"]["PagedDTOAttachmentDTO"]; + /** @description Details of the comment included with the attachments. */ + comment?: components["schemas"]["CommentDTO"]; + }; + AttachmentDTO: { + /** @description Various URLs for the attachment. */ + _links?: components["schemas"]["AttachmentLinkDTO"]; + /** @description Details of the user who attached the file. */ + author?: components["schemas"]["UserDTO"]; + /** @description Date the attachment was added. */ + created?: components["schemas"]["DateDTO"]; + /** @description Filename of the item attached. */ + filename?: string; + /** @description MIME type of the attachment. */ + mimeType?: string; + /** + * Format: int64 + * @description Size of the attachment in bytes. + */ + size?: number; + }; + AttachmentLinkDTO: { + /** + * Format: uri + * @description URL for the attachment. + */ + content?: string; + /** + * Format: uri + * @description REST API URL for the attachment + */ + jiraRest?: string; + /** Format: uri */ + self?: string; + /** + * Format: uri + * @description URL for the attachment's thumbnail image. + */ + thumbnail?: string; + }; + AvatarUrlsBean: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + CSATFeedbackFullDTO: { + /** @description (Optional) The comment provided with this feedback. */ + comment?: components["schemas"]["AdditionalCommentDTO"]; + /** + * Format: int32 + * @description A numeric representation of the rating, this must be an integer value between 1 and 5. + */ + rating?: number; + /** @description Indicates the type of feedback, supported values: `csat`. */ + type?: string; + }; + /** @description A change item. */ + ChangeDetails: { + /** @description The name of the field changed. */ + field?: string; + /** @description The ID of the field changed. */ + fieldId?: string; + /** @description The type of the field changed. */ + fieldtype?: string; + /** @description The details of the original value. */ + from?: string; + /** @description The details of the original value as a string. */ + fromString?: string; + /** @description The details of the new value. */ + to?: string; + /** @description The details of the new value as a string. */ + toString?: string; + }; + /** @description A log of changes made to issue fields. Changelogs related to workflow associations are currently being deprecated. */ + Changelog: { + /** @description The user who made the change. */ + author?: components["schemas"]["UserDetails"]; + /** + * Format: date-time + * @description The date on which the change took place. + */ + created?: string; + /** @description The history metadata associated with the changed. */ + historyMetadata?: components["schemas"]["HistoryMetadata"]; + /** @description The ID of the changelog. */ + id?: string; + /** @description The list of items changed. */ + items?: readonly components["schemas"]["ChangeDetails"][]; + }; + CommentCreateDTO: { + /** @description Content of the comment. */ + body?: string; + /** @description Indicates whether the comment is public (true) or private/internal (false). */ + public?: boolean; + }; + CommentDTO: { + /** @description List of items that can be expanded in the response by specifying the expand query parameter. */ + _expands?: string[]; + /** @description REST API URL link to the comment. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description List of the attachments included in the comment. */ + attachments?: components["schemas"]["PagedDTOAttachmentDTO"]; + /** @description Details of the customer who authored the comment. */ + author?: components["schemas"]["UserDTO"]; + /** @description Content of the comment. */ + body?: string; + /** @description Date the comment was created. */ + created?: components["schemas"]["DateDTO"]; + /** @description ID of the comment. */ + id?: string; + /** @description Indicates whether the comment is public (true) or private/internal (false). */ + public?: boolean; + /** @description The rendered body of the comment. */ + renderedBody?: components["schemas"]["RenderedValueDTO"]; + }; + ContentDTO: { + /** @description Url containing the body of the article (without title), suitable for rendering in an iframe */ + iframeSrc?: string; + }; + CustomerCreateDTO: { + /** @description Customer's name for display in the UI. */ + displayName?: string; + /** @description Customer's email address. */ + email?: string; + /** @description Deprecated, please use 'displayName'. */ + fullName?: string; + }; + CustomerRequestActionDTO: { + /** @description Indicates whether the user can undertake the action (true) or not (false). */ + allowed?: boolean; + }; + CustomerRequestActionsDTO: { + /** @description Action of adding attachments to a request. */ + addAttachment?: components["schemas"]["CustomerRequestActionDTO"]; + /** @description Action of adding comments to a request. */ + addComment?: components["schemas"]["CustomerRequestActionDTO"]; + /** @description Action of adding participants to a request. */ + addParticipant?: components["schemas"]["CustomerRequestActionDTO"]; + /** @description Action of removing participants from a request. */ + removeParticipant?: components["schemas"]["CustomerRequestActionDTO"]; + }; + CustomerRequestCreateMetaDTO: { + /** @description Flag indicating if participants can be added to a request (true) or not. */ + canAddRequestParticipants?: boolean; + /** @description Flag indicating if a request can be raised on behalf of another user (true) or not. */ + canRaiseOnBehalfOf?: boolean; + /** @description List of the fields included in this request. */ + requestTypeFields?: components["schemas"]["RequestTypeFieldDTO"][]; + }; + CustomerRequestDTO: { + /** @description List of items that can be expanded in the response by specifying the expand query parameter. */ + _expands?: string[]; + /** @description List of links associated with the request. */ + _links?: components["schemas"]["CustomerRequestLinkDTO"]; + /** @description List of actions that the user can take on the request. */ + actions?: components["schemas"]["CustomerRequestActionsDTO"]; + /** @description List of attachments included with the request. */ + attachments?: components["schemas"]["PagedDTOAttachmentDTO"]; + /** @description List of comments included with the request. */ + comments?: components["schemas"]["PagedDTOCommentDTO"]; + /** @description Date on which the request was created. */ + createdDate?: components["schemas"]["DateDTO"]; + /** @description Status of the request. */ + currentStatus?: components["schemas"]["CustomerRequestStatusDTO"]; + /** @description ID of the request, as the peer issue ID. */ + issueId?: string; + /** @description Key of the request, as the peer issue key. */ + issueKey?: string; + /** @description Expandable details of the customers participating in the request. */ + participants?: components["schemas"]["PagedDTOUserDTO"]; + /** @description Details of the customer reporting the request. */ + reporter?: components["schemas"]["UserDTO"]; + /** @description JSON map of Jira field IDs and their values representing the content of the request. This list does not include hidden fields. */ + requestFieldValues?: components["schemas"]["CustomerRequestFieldValueDTO"][]; + /** @description Expandable details of the request type. */ + requestType?: components["schemas"]["RequestTypeDTO"]; + /** @description ID of the request type for the request. */ + requestTypeId?: string; + /** @description Expandable details of the service desk. */ + serviceDesk?: components["schemas"]["ServiceDeskDTO"]; + /** @description ID of the service desk the request belongs to. */ + serviceDeskId?: string; + /** @description Expandable details of the SLAs relating to the request. */ + sla?: components["schemas"]["PagedDTOSlaInformationDTO"]; + /** @description Expandable details of the request's status history. */ + status?: components["schemas"]["PagedDTOCustomerRequestStatusDTO"]; + }; + CustomerRequestFieldValueDTO: { + /** @description ID of the field. */ + fieldId?: string; + /** @description Text label for the field. */ + label?: string; + /** @description Value of the field rendered in the UI. */ + renderedValue?: Record; + /** @description Value of the field. */ + value?: unknown; + }; + CustomerRequestLinkDTO: { + /** + * Format: uri + * @description Jira agent view URL for the request. + */ + agent?: string; + /** + * Format: uri + * @description REST API URL for the request. + */ + jiraRest?: string; + /** Format: uri */ + self?: string; + /** + * Format: uri + * @description Web URL for the request. + */ + web?: string; + }; + CustomerRequestStatusDTO: { + /** @description Name of the status condition. */ + status?: string; + /** + * @description Status category the status belongs to. + * @enum {string} + */ + statusCategory?: "UNDEFINED" | "NEW" | "INDETERMINATE" | "DONE"; + /** @description Date on which the status was attained. */ + statusDate?: components["schemas"]["DateDTO"]; + }; + CustomerTransitionDTO: { + /** @description ID of the transition. */ + id?: string; + /** @description Name of the transition. */ + name?: string; + }; + CustomerTransitionExecutionDTO: { + /** @description Comment explaining the reason for the transition. */ + additionalComment?: components["schemas"]["AdditionalCommentDTO"]; + /** @description ID of the transition to be performed. */ + id?: string; + }; + DateDTO: { + /** + * Format: int64 + * @description Date as the number of milliseconds that have elapsed since 00:00:00 Coordinated Universal Time (UTC), 1 January 1970. + */ + epochMillis?: number; + /** @description Date in a user-friendly text format. */ + friendly?: string; + /** @description Date in ISO8601 format. */ + iso8601?: string; + /** @description Date in the format used in the Jira REST APIs, which is ISO8601 format but extended with milliseconds. For example, 2016-09-28T23:08:32.097+1000. */ + jira?: string; + }; + DurationDTO: { + /** @description Duration in a user-friendly text format. */ + friendly?: string; + /** + * Format: int64 + * @description Duration in milliseconds. + */ + millis?: number; + }; + /** @description An entity property, for more information see [Entity properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/). */ + EntityProperty: { + /** @description The key of the property. Required on create and update. */ + key?: string; + /** @description The value of the property. Required on create and update. */ + value?: unknown; + }; + ErrorResponse: { + errorMessage?: string; + i18nErrorMessage?: components["schemas"]["I18nErrorMessage"]; + }; + Expandable: { + _expands?: string[]; + }; + /** @description The metadata describing an issue field. */ + FieldMetadata: { + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The key of the field. */ + key: string; + /** @description The name of the field. */ + name: string; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: components["schemas"]["JsonTypeBean"]; + }; + Form: { + /** @description JSON mapping of form field answers containing form field IDs and corresponding values. */ + answers?: { + [key: string]: components["schemas"]["FormAnswer"]; + }; + [key: string]: unknown; + }; + FormAnswer: { + /** @description Answer in Atlassian Document Format (ADF) */ + adf?: components["schemas"]["JsonNode"]; + /** @description IDs of selected choices */ + choices?: string[]; + /** @description Answer in date format (yyyy-MM-dd) */ + date?: string; + /** @description The IDs of files to be attached to the form that are obtained by calling the ‘attach temporary file’ endpoint on the corresponding service desk. */ + files?: string[]; + /** @description Answer in free text format */ + text?: string; + /** @description Answer in timestamp format (HH:mm) */ + time?: string; + /** @description IDs of selected users */ + users?: string[]; + }; + /** @description Details of issue history metadata. */ + HistoryMetadata: { + /** @description The activity described in the history record. */ + activityDescription?: string; + /** @description The key of the activity described in the history record. */ + activityDescriptionKey?: string; + /** @description Details of the user whose action created the history record. */ + actor?: components["schemas"]["HistoryMetadataParticipant"]; + /** @description Details of the cause that triggered the creation the history record. */ + cause?: components["schemas"]["HistoryMetadataParticipant"]; + /** @description The description of the history record. */ + description?: string; + /** @description The description key of the history record. */ + descriptionKey?: string; + /** @description The description of the email address associated the history record. */ + emailDescription?: string; + /** @description The description key of the email address associated the history record. */ + emailDescriptionKey?: string; + /** @description Additional arbitrary information about the history record. */ + extraData?: { + [key: string]: string; + }; + /** @description Details of the system that generated the history record. */ + generator?: components["schemas"]["HistoryMetadataParticipant"]; + /** @description The type of the history record. */ + type?: string; + [key: string]: unknown; + }; + /** @description Details of user or system associated with a issue history metadata item. */ + HistoryMetadataParticipant: { + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + I18nErrorMessage: { + i18nKey?: string; + parameters?: string[]; + }; + IncludedFields: { + actuallyIncluded?: string[]; + excluded?: string[]; + included?: string[]; + }; + InputStreamSource: { + inputStream?: Record; + }; + /** @description Details of an insight workspace ID. */ + InsightWorkspaceDTO: { + /** @description The workspace ID used as the identifier to access the Insight REST API. */ + workspaceId?: string; + }; + /** @description Details about an issue. */ + IssueBean: { + /** @description Details of changelogs associated with the issue. */ + changelog?: components["schemas"]["PageOfChangelogs"]; + /** @description The metadata for the fields on the issue that can be amended. */ + editmeta?: components["schemas"]["IssueUpdateMetadata"]; + /** @description Expand options that include additional issue details in the response. */ + expand?: string; + fields?: { + [key: string]: unknown; + }; + fieldsToInclude?: components["schemas"]["IncludedFields"]; + /** @description The ID of the issue. */ + id?: string; + /** @description The key of the issue. */ + key?: string; + /** @description The ID and name of each field present on the issue. */ + names?: { + [key: string]: string; + }; + /** @description The operations that can be performed on the issue. */ + operations?: components["schemas"]["Operations"]; + /** @description Details of the issue properties identified in the request. */ + properties?: { + [key: string]: unknown; + }; + /** @description The rendered value of each field present on the issue. */ + renderedFields?: { + [key: string]: unknown; + }; + /** @description The schema describing each field present on the issue. */ + schema?: { + [key: string]: components["schemas"]["JsonTypeBean"]; + }; + /** + * Format: uri + * @description The URL of the issue details. + */ + self?: string; + /** @description The transitions that can be performed on the issue. */ + transitions?: readonly components["schemas"]["IssueTransition"][]; + /** @description The versions of each field on the issue. */ + versionedRepresentations?: { + [key: string]: { + [key: string]: unknown; + }; + }; + }; + /** @description Details of an issue transition. */ + IssueTransition: { + /** @description Expand options that include additional transition details in the response. */ + expand?: string; + /** @description Details of the fields associated with the issue transition screen. Use this information to populate `fields` and `update` in a transition request. */ + fields?: { + [key: string]: components["schemas"]["FieldMetadata"]; + }; + /** @description Whether there is a screen associated with the issue transition. */ + hasScreen?: boolean; + /** @description The ID of the issue transition. Required when specifying a transition to undertake. */ + id?: string; + /** @description Whether the transition is available to be performed. */ + isAvailable?: boolean; + /** @description Whether the issue has to meet criteria before the issue transition is applied. */ + isConditional?: boolean; + /** @description Whether the issue transition is global, that is, the transition is applied to issues regardless of their status. */ + isGlobal?: boolean; + /** @description Whether this is the initial issue transition for the workflow. */ + isInitial?: boolean; + looped?: boolean; + /** @description The name of the issue transition. */ + name?: string; + /** @description Details of the issue status after the transition. */ + to?: components["schemas"]["StatusDetails"]; + [key: string]: unknown; + }; + /** @description A list of editable field details. */ + IssueUpdateMetadata: { + fields?: { + [key: string]: components["schemas"]["FieldMetadata"]; + }; + }; + JsonNode: { + array?: boolean; + bigDecimal?: boolean; + bigInteger?: boolean; + bigIntegerValue?: number; + binary?: boolean; + binaryValue?: string[]; + boolean?: boolean; + booleanValue?: boolean; + containerNode?: boolean; + decimalValue?: number; + double?: boolean; + /** Format: double */ + doubleValue?: number; + elements?: Record; + fieldNames?: Record; + fields?: Record; + floatingPointNumber?: boolean; + int?: boolean; + /** Format: int32 */ + intValue?: number; + integralNumber?: boolean; + long?: boolean; + /** Format: int64 */ + longValue?: number; + missingNode?: boolean; + null?: boolean; + number?: boolean; + /** @enum {string} */ + numberType?: "INT" | "LONG" | "BIG_INTEGER" | "FLOAT" | "DOUBLE" | "BIG_DECIMAL"; + numberValue?: number; + object?: boolean; + pojo?: boolean; + textValue?: string; + textual?: boolean; + valueAsBoolean?: boolean; + /** Format: double */ + valueAsDouble?: number; + /** Format: int32 */ + valueAsInt?: number; + /** Format: int64 */ + valueAsLong?: number; + valueAsText?: string; + valueNode?: boolean; + }; + /** @description The schema of a field. */ + JsonTypeBean: { + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description The data type of the field. */ + type: string; + }; + /** @description Details a link group, which defines issue operations. */ + LinkGroup: { + groups?: components["schemas"]["LinkGroup"][]; + header?: components["schemas"]["SimpleLink"]; + id?: string; + links?: components["schemas"]["SimpleLink"][]; + styleClass?: string; + /** Format: int32 */ + weight?: number; + }; + Linkable: { + _links?: components["schemas"]["SelfLinkDTO"]; + }; + LinkableAttachmentLinkDTO: { + _links?: components["schemas"]["AttachmentLinkDTO"]; + }; + LinkableCustomerRequestLinkDTO: { + _links?: components["schemas"]["CustomerRequestLinkDTO"]; + }; + LinkableUserLinkDTO: { + _links?: components["schemas"]["UserLinkDTO"]; + }; + MultipartFile: { + bytes?: string[]; + contentType?: string; + empty?: boolean; + inputStream?: Record; + name?: string; + originalFilename?: string; + resource?: components["schemas"]["Resource"]; + /** Format: int64 */ + size?: number; + }; + /** @description Details of the operations that can be performed on the issue. */ + Operations: { + /** @description Details of the link groups defining issue operations. */ + linkGroups?: readonly components["schemas"]["LinkGroup"][]; + [key: string]: unknown; + }; + OrganizationCreateDTO: { + /** @description Name of the organization. Must contain 1-200 characters. */ + name: string; + }; + OrganizationDTO: { + /** @description REST API URL to the organization. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description Date the organization was created. This field may not be present in some older organizations. */ + created?: components["schemas"]["DateDTO"]; + /** @description A unique system generated ID for the organization. */ + id?: string; + /** @description Name of the organization. */ + name?: string; + }; + OrganizationServiceDeskUpdateDTO: { + /** + * Format: int32 + * @description List of organizations, specified by 'ID' field values, to add to or remove from the service desk. + */ + organizationId: number; + /** @description Service desk Id for which, organization needs to be updated */ + serviceDeskId?: string; + [key: string]: unknown; + }; + /** @description A page of changelogs. */ + PageOfChangelogs: { + /** @description The list of changelogs. */ + histories?: readonly components["schemas"]["Changelog"][]; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + }; + PagedDTOApprovalDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["ApprovalDTO"][]; + }; + PagedDTOArticleDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["ArticleDTO"][]; + }; + PagedDTOAssetsWorkspaceDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["AssetsWorkspaceDTO"][]; + }; + PagedDTOAttachmentDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["AttachmentDTO"][]; + }; + PagedDTOCommentDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["CommentDTO"][]; + }; + PagedDTOCustomerRequestDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["CustomerRequestDTO"][]; + }; + PagedDTOCustomerRequestStatusDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["CustomerRequestStatusDTO"][]; + }; + PagedDTOCustomerTransitionDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["CustomerTransitionDTO"][]; + }; + PagedDTOInsightWorkspaceDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["InsightWorkspaceDTO"][]; + }; + PagedDTOIssueBean: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["IssueBean"][]; + }; + PagedDTOOrganizationDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["OrganizationDTO"][]; + }; + PagedDTOQueueDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["QueueDTO"][]; + }; + PagedDTORequestTypeDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["RequestTypeDTO"][]; + }; + PagedDTORequestTypeGroupDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["RequestTypeGroupDTO"][]; + }; + PagedDTOServiceDeskDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["ServiceDeskDTO"][]; + }; + PagedDTOSlaInformationDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["SlaInformationDTO"][]; + }; + PagedDTOUserDTO: { + _expands?: string[]; + /** @description List of the links relating to the page. */ + _links?: components["schemas"]["PagedLinkDTO"]; + /** @description Indicates if this is the last page of records (true) or not (false). */ + isLastPage?: boolean; + /** + * Format: int32 + * @description Number of items to be returned per page, up to the maximum set for these objects in the current implementation. + */ + limit?: number; + /** + * Format: int32 + * @description Number of items returned in the page. + */ + size?: number; + /** + * Format: int32 + * @description Index of the first item returned in the page. + */ + start?: number; + /** @description Details of the items included in the page. */ + values?: components["schemas"]["UserDTO"][]; + }; + PagedLinkDTO: { + /** + * Format: uri + * @description Base URL for the REST API calls. + */ + base?: string; + context?: string; + /** + * Format: uri + * @description REST API URL for the next page, if there is one. + */ + next?: string; + /** + * Format: uri + * @description REST API URL for the previous page, if there is one. + */ + prev?: string; + /** + * Format: uri + * @description REST API URL for the current page. + */ + self?: string; + }; + /** @description Details about a project. */ + ProjectDetails: { + /** @description The URLs of the project's avatars. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description The ID of the project. */ + id?: string; + /** @description The key of the project. */ + key?: string; + /** @description The name of the project. */ + name?: string; + /** @description The category the project belongs to. */ + projectCategory?: components["schemas"]["UpdatedProjectCategory"]; + /** + * @description The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes) of the project. + * @enum {string} + */ + projectTypeKey?: "software" | "service_desk" | "business"; + /** @description The URL of the project details. */ + self?: string; + /** @description Whether or not the project is simplified. */ + simplified?: boolean; + }; + /** @description Property key details. */ + PropertyKey: { + /** @description The key of the property. */ + key?: string; + /** @description The URL of the property. */ + self?: string; + }; + /** @description List of property keys. */ + PropertyKeys: { + /** @description Property key details. */ + keys?: readonly components["schemas"]["PropertyKey"][]; + }; + QueueDTO: { + /** @description REST API URL to the queue. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description Fields returned for each request in the queue. */ + fields?: string[]; + /** @description ID for the queue. */ + id?: string; + /** + * Format: int64 + * @description The count of customer requests in the queue. + */ + issueCount?: number; + /** @description JQL query that filters reqeusts for the queue. */ + jql?: string; + /** @description Short name for the queue. */ + name?: string; + }; + RenderedValueDTO: { + html?: string; + }; + RequestCreateDTO: { + /** @description (Experimental) Shows extra information for the request channel. */ + channel?: string; + /** @description (Experimental) Provides answers to the form associated with a request type that is attached to the request on creation. Jira fields should be omitted from `requestFieldValues` if they are linked to form answers. Form answers in ADF format should have `isAdfRequest` set to true. Form answers are not currently validated. */ + form?: components["schemas"]["Form"]; + /** @description (Experimental) Whether to accept rich text fields in Atlassian Document Format (ADF). */ + isAdfRequest?: boolean; + /** @description The `accountId` of the customer that the request is being raised on behalf of. */ + raiseOnBehalfOf?: string; + /** @description JSON map of Jira field IDs and their values representing the content of the request. */ + requestFieldValues?: { + [key: string]: unknown; + }; + /** @description List of customers to participate in the request, as a list of `accountId` values. */ + requestParticipants?: string[]; + /** @description ID of the request type for the request. */ + requestTypeId?: string; + /** @description ID of the service desk in which to create the request. */ + serviceDeskId?: string; + }; + RequestNotificationSubscriptionDTO: { + /** @description Indicates whether the user is subscribed (true) or not (false) to the request's notifications. */ + subscribed?: boolean; + }; + RequestParticipantUpdateDTO: { + /** @description List of users, specified by account IDs, to add to or remove as participants in the request. */ + accountIds?: string[]; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. Use `accountIds` instead. */ + usernames?: string[]; + }; + RequestTypeCreateDTO: { + /** @description Description of the request type on the service desk. */ + description?: string; + /** @description Help text for the request type on the service desk. */ + helpText?: string; + /** @description ID of the request type to add to the service desk. */ + issueTypeId?: string; + /** @description Name of the request type on the service desk. */ + name?: string; + }; + RequestTypeDTO: { + /** @description List of items that can be expanded in the response by specifying the expand query parameter. */ + _expands?: string[]; + /** @description REST API URL for the request type. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description Description of the request type. */ + description?: string; + /** @description Fields and additional metadata for creating a request that uses the request type */ + fields?: components["schemas"]["CustomerRequestCreateMetaDTO"]; + /** @description List of the request type groups the request type belongs to. */ + groupIds?: string[]; + /** @description Help text for the request type. */ + helpText?: string; + /** @description Links to the request type's icons. */ + icon?: components["schemas"]["RequestTypeIconDTO"]; + /** @description ID for the request type. */ + id?: string; + /** @description ID of the issue type the request type is based upon. */ + issueTypeId?: string; + /** @description Short name for the request type. */ + name?: string; + /** @description ID of the customer portal associated with the service desk project. */ + portalId?: string; + /** @description The request type's practice */ + practice?: string; + /** @description ID of the service desk the request type belongs to. */ + serviceDeskId?: string; + }; + RequestTypeFieldDTO: { + /** @description List of default values for the field. */ + defaultValues?: components["schemas"]["RequestTypeFieldValueDTO"][]; + /** @description Description of the field. */ + description?: string; + /** @description ID of the field. */ + fieldId?: string; + /** @description Jira specific implementation details for the field in the UI. */ + jiraSchema?: components["schemas"]["JsonTypeBean"]; + /** @description Name of the field. */ + name?: string; + /** @description List of preset values for the field. */ + presetValues?: string[]; + /** @description Indicates if the field is required (true) or not (false). */ + required?: boolean; + /** @description List of valid values for the field. */ + validValues?: components["schemas"]["RequestTypeFieldValueDTO"][]; + visible?: boolean; + }; + RequestTypeFieldValueDTO: { + /** @description List of child fields. */ + children?: components["schemas"]["RequestTypeFieldValueDTO"][]; + /** @description Label for the field. */ + label?: string; + /** @description Value of the field. */ + value?: string; + }; + RequestTypeGroupDTO: { + /** @description ID of the request type group */ + id?: string; + /** @description Name of the request type group. */ + name?: string; + }; + RequestTypeIconDTO: { + /** @description Map of the URLs for the request type icons. */ + _links?: components["schemas"]["RequestTypeIconLinkDTO"]; + /** @description ID of the request type icon. */ + id?: string; + }; + RequestTypeIconLinkDTO: { + /** @description URLs for the request type icons. */ + iconUrls?: { + [key: string]: string; + }; + }; + Resource: { + description?: string; + /** Format: binary */ + file?: string; + filename?: string; + inputStream?: Record; + open?: boolean; + readable?: boolean; + /** Format: uri */ + uri?: string; + /** Format: url */ + url?: string; + }; + /** @description The projects the item is associated with. Indicated for items associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO). */ + Scope: { + /** @description The project the item has scope in. */ + project?: components["schemas"]["ProjectDetails"]; + /** + * @description The type of scope. + * @enum {string} + */ + type?: "PROJECT" | "TEMPLATE"; + [key: string]: unknown; + }; + SelfLinkDTO: { + /** Format: uri */ + self?: string; + }; + ServiceDeskCustomerDTO: { + /** @description List of users, specified by account IDs, to add to or remove from a service desk. */ + accountIds?: string[]; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. Use `accountIds` instead. */ + usernames?: string[]; + }; + ServiceDeskDTO: { + /** @description REST API URL to the service desk. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description ID of the service desk. */ + id?: string; + /** @description ID of the peer project for the service desk. */ + projectId?: string; + /** @description Key of the peer project of the service desk. */ + projectKey?: string; + /** @description Name of the project and service desk. */ + projectName?: string; + }; + /** @description Details about the operations available in this version. */ + SimpleLink: { + href?: string; + iconClass?: string; + id?: string; + label?: string; + styleClass?: string; + title?: string; + /** Format: int32 */ + weight?: number; + }; + SlaInformationCompletedCycleDTO: { + /** @description Time and date at which the SLA cycle breached in case of completed breached cycle or would have breached in case of non-breached completed cycle. */ + breachTime?: components["schemas"]["DateDTO"]; + /** @description Indicates if the SLA (duration) was exceeded (true) or not (false). */ + breached?: boolean; + /** @description Duration in which the service was completed. */ + elapsedTime?: components["schemas"]["DurationDTO"]; + /** @description Duration within which the service should have been completed. */ + goalDuration?: components["schemas"]["DurationDTO"]; + /** @description Duration remaining after the service was completed. */ + remainingTime?: components["schemas"]["DurationDTO"]; + /** @description Time and date at which the SLA cycle started. */ + startTime?: components["schemas"]["DateDTO"]; + /** @description Time and date at which the SLA cycle completed. */ + stopTime?: components["schemas"]["DateDTO"]; + }; + SlaInformationDTO: { + /** @description REST API URL for the SLA. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description List of completed cycles for the SLA. */ + completedCycles?: components["schemas"]["SlaInformationCompletedCycleDTO"][]; + /** @description ID of the Service Level Agreement (SLA). */ + id?: string; + /** @description Description of the SLA. */ + name?: string; + /** @description Details of the active cycle for the SLA. */ + ongoingCycle?: components["schemas"]["SlaInformationOngoingCycleDTO"]; + /** @description Format in which SLA is to be displayed in the UI */ + slaDisplayFormat?: string; + }; + SlaInformationOngoingCycleDTO: { + /** @description Time and date at which the SLA cycle would have breached its limit. */ + breachTime?: components["schemas"]["DateDTO"]; + /** @description Indicates whether the SLA has been breached (true) or not (false). */ + breached?: boolean; + /** @description Duration of the service. */ + elapsedTime?: components["schemas"]["DurationDTO"]; + /** @description Duration within which the service should be completed. */ + goalDuration?: components["schemas"]["DurationDTO"]; + /** @description Indicates whether the SLA is paused (true) or not (false). */ + paused?: boolean; + /** @description Duration remaining in which to complete the service. */ + remainingTime?: components["schemas"]["DurationDTO"]; + /** @description Time and date at which the SLA cycle started. */ + startTime?: components["schemas"]["DateDTO"]; + /** @description Indicates whether the SLA it timed during calendared working hours only (true) or not (false). */ + withinCalendarHours?: boolean; + }; + SoftwareInfoDTO: { + /** @description REST API URL of the instance. */ + _links?: components["schemas"]["SelfLinkDTO"]; + /** @description Reference of the change set included in the build. */ + buildChangeSet?: string; + /** @description Date of the current build. */ + buildDate?: components["schemas"]["DateDTO"]; + /** @description Indicates whether the instance is licensed (true) or not (false). */ + isLicensedForUse?: boolean; + /** @description Jira Platform version upon which Service Desk is based. */ + platformVersion?: string; + /** @description Jira Service Management version. */ + version?: string; + }; + SourceDTO: { + /** + * @description Type of the knowledge base source + * @enum {string} + */ + type?: "confluence"; + [key: string]: unknown; + }; + /** @description A status category. */ + StatusCategory: { + /** @description The name of the color used to represent the status category. */ + colorName?: string; + /** + * Format: int64 + * @description The ID of the status category. + */ + id?: number; + /** @description The key of the status category. */ + key?: string; + /** @description The name of the status category. */ + name?: string; + /** @description The URL of the status category. */ + self?: string; + [key: string]: unknown; + }; + /** @description A status. */ + StatusDetails: { + /** @description The description of the status. */ + description?: string; + /** @description The URL of the icon used to represent the status. */ + iconUrl?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The name of the status. */ + name?: string; + /** @description The scope of the field. */ + scope?: components["schemas"]["Scope"]; + /** @description The URL of the status. */ + self?: string; + /** @description The category assigned to the status. */ + statusCategory?: components["schemas"]["StatusCategory"]; + [key: string]: unknown; + }; + /** @description A project category. */ + UpdatedProjectCategory: { + /** @description The name of the project category. */ + description?: string; + /** @description The ID of the project category. */ + id?: string; + /** @description The description of the project category. */ + name?: string; + /** @description The URL of the project category. */ + self?: string; + }; + UserDTO: { + /** @description URLs for the customer record and related items. */ + _links?: components["schemas"]["UserLinkDTO"]; + /** @description The accountId of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description Indicates if the customer is active (true) or inactive (false) */ + active?: boolean; + /** @description Customer's name for display in a UI. Depending on the customer’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description Customer's email address. Depending on the customer’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description Customer time zone. Depending on the customer’s privacy settings, this may be returned as null. */ + timeZone?: string; + }; + /** + * @description User details permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions: + * + * * User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank). + * * User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values. + * * User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values. + */ + UserDetails: { + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user) */ + accountType?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The avatars of the user. */ + avatarUrls?: components["schemas"]["AvatarUrlsBean"]; + /** @description The display name of the user. Depending on the user’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description The email address of the user. Depending on the user’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description The URL of the user. */ + self?: string; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null. */ + timeZone?: string; + }; + UserLinkDTO: { + /** @description Links to the various sizes of the customer's avatar. Note that this property is deprecated, and will be removed in future versions. */ + avatarUrls?: { + [key: string]: string; + }; + /** + * Format: uri + * @description REST API URL for the customer. + */ + jiraRest?: string; + /** Format: uri */ + self?: string; + }; + UsersOrganizationUpdateDTO: { + /** @description List of customers, specific by account IDs, to add to or remove from the organization. */ + accountIds?: string[]; + /** + * Format: int32 + * @description The organizationId in which users need to be added + */ + organizationId?: number; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. Use `accountIds` instead. */ + usernames?: string[]; + [key: string]: unknown; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} + +export type $defs = Record; + +export type external = Record; + +export interface operations { + /** + * Get assets workspaces + * @description Returns a list of Assets workspace IDs. Include a workspace ID in the path to access the [Assets REST APIs](https://developer.atlassian.com/cloud/assets/rest). + * + * **[Permissions](#permissions) required**: Any + */ + getAssetsWorkspaces: { + parameters: { + query?: { + /** @description The starting index of the returned workspace IDs. Base index: 0 See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of workspace IDs to return per page. Default: 50 See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + }; + responses: { + /** @description Returned if the request is successful. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOAssetsWorkspaceDTO"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect or missing. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Create customer + * @description This method adds a customer to the Jira Service Management instance by passing a JSON file including an email address and display name. The display name does not need to be unique. The record's identifiers, `name` and `key`, are automatically generated from the request details. + * + * **[Permissions](#permissions) required**: Jira Administrator Global permission + */ + createCustomer: { + parameters: { + query?: { + /** @description Optional boolean flag to return 409 Conflict status code for duplicate customer creation request */ + strictConflictStatusCode?: boolean; + }; + }; + requestBody: { + content: { + /** + * @example { + * "displayName": "Fred F. User", + * "email": "fred@example.com" + * } + */ + "application/json": components["schemas"]["CustomerCreateDTO"]; + }; + }; + responses: { + /** @description Returns the customer details. */ + 201: { + content: { + "application/json": components["schemas"]["UserDTO"]; + }; + }; + /** @description Returned if the request is invalid, either because the email address is incorrectly formed or already exists in the database if `strictConflictStatusCode=false` or if `strictConflictStatusCode` parameter is not provided */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the request is invalid because the email address already exists in the database and `strictConflictStatusCode=true` */ + 409: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get info + * @description This method retrieves information about the Jira Service Management instance such as software version, builds, and related links. + * + * **[Permissions](#permissions) required**: None, the user does not need to be logged in. + */ + getInfo: { + responses: { + /** @description Returns the runtime information for the Jira Service Management instance. */ + 200: { + content: { + "application/json": components["schemas"]["SoftwareInfoDTO"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get insight workspaces + * @description This endpoint is deprecated, please use /assets/workspace/. + */ + getInsightWorkspaces: { + parameters: { + query?: { + start?: number; + limit?: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOInsightWorkspaceDTO"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get articles + * @description Returns articles which match the given query and belong to the knowledge base linked to the service desk. + * + * **[Permissions](#permissions) required**: Permission to access the service desk. + */ + getArticles: { + parameters: { + query: { + /** @description The string used to filter the articles (required). */ + query: string; + /** @description If set to true matching query term in the title and excerpt will be highlighted using the \{@code */ + highlight?: boolean; + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the articles, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOArticleDTO"]; + }; + }; + /** @description Returned if the request is invalid, for example: missing query parameter. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get organizations + * @description This method returns a list of all organizations associated with a service desk. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + getOrganizations: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + }; + path: { + /** @description The ID of the service desk from which the organization list will be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the requested organizations list. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOOrganizationDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist or the user is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Create organization + * @description This method creates an organization by passing the name of the organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. Note: Permission to create organizations can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + createOrganization: { + requestBody: { + content: { + /** + * @example { + * "name": "Charlie Cakes Franchises" + * } + */ + "application/json": components["schemas"]["OrganizationCreateDTO"]; + }; + }; + responses: { + /** @description Returns the created organization or the existing organization if name already exists. */ + 201: { + content: { + "application/json": components["schemas"]["OrganizationDTO"]; + }; + }; + /** @description Returned if the HTTP request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get organization + * @description This method returns details of an organization. Use this method to get organization details whenever your application component is passed an organization ID but needs to display other organization details. + * + * **[Permissions](#permissions) required**: Any + * + * **Response limitations**: Customers can only retrieve organization of which they are members. + */ + getOrganization: { + parameters: { + path: { + /** @description The ID of the organization. */ + organizationId: number; + }; + }; + responses: { + /** @description Returns the requested organization. */ + 200: { + content: { + "application/json": components["schemas"]["OrganizationDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the organization does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Delete organization + * @description This method deletes an organization. Note that the organization is deleted regardless of other associations it may have. For example, associations with service desks. + * + * **[Permissions](#permissions) required**: Jira administrator. + */ + deleteOrganization: { + parameters: { + path: { + /** @description The ID of the organization. */ + organizationId: number; + }; + }; + responses: { + /** @description Returned if the organization was deleted. */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the organization does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get properties keys + * @description Returns the keys of all properties for a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore the keys of all properties for a request type are also available by calling the Jira Cloud Platform [Get issue type property keys](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-get) endpoint. + * + * **[Permissions](#permissions) required**: The user must have permission to view the request type. + */ + getPropertiesKeys: { + parameters: { + path: { + /** @description The ID of the request type for which keys will be retrieved. */ + requestTypeId: number; + /** @description The ID of the service desk which contains the request type. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returned if the request type was found. */ + 200: { + content: { + "application/json": components["schemas"]["PropertyKeys"]; + }; + }; + /** @description Returned if the request type ID is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the request type does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get property + * @description Returns the value of the property from a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore also available by calling the Jira Cloud Platform [Get issue type property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-get) endpoint. + * + * **[Permissions](#permissions) required**: User must have permission to view the request type. + */ + getProperty: { + parameters: { + path: { + /** @description The ID of the service desk which contains the request type. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description The ID of the request type from which the property will be retrieved. */ + requestTypeId: number; + /** @description The key of the property to return. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request type property was returned. */ + 200: { + content: { + "application/json": components["schemas"]["EntityProperty"]; + }; + }; + /** @description Returned if the request type ID is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the request type or property do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Set property + * @description Sets the value of a request type property. Use this resource to store custom data against a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore can also be set by calling the Jira Cloud Platform [Set issue type property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-put) endpoint. + * + * **[Permissions](#permissions) required**: Jira project administrator with a Jira Service Management agent license. + */ + setProperty: { + parameters: { + path: { + /** @description The ID of the service desk which contains the request type. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description The ID of the request type on which the property will be set. */ + requestTypeId: number; + /** @description The key of the request type property. The maximum length of the key is 255 bytes. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request type property is updated. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request type property is created. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request type ID is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the calling user doesn't have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the request type does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Delete property + * @description Removes a property from a request type. + * + * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore can also be deleted by calling the Jira Cloud Platform [Delete issue type property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-delete) endpoint. + * + * **[Permissions](#permissions) required**: Jira project administrator with a Jira Service Management agent license. + */ + deleteProperty: { + parameters: { + path: { + /** @description The ID of the service desk which contains the request type. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description The ID of the request type for which the property will be removed. */ + requestTypeId: number; + /** @description The key of the property to remove. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the request type property was removed. */ + 204: { + content: never; + }; + /** @description Returned if the request type ID is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the calling user doesn't have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the request type or property do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get users in organization + * @description This method returns all the users associated with an organization. Use this method where you want to provide a list of users for an organization or determine if a user is associated with an organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. + */ + getUsersInOrganization: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of users to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID of the organization. */ + organizationId: number; + }; + }; + responses: { + /** @description Returns a paged list of users associated with the organization, ordered by their accountId. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOUserDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the organization does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Add users to organization + * @description This method adds users to an organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. Note: Permission to add users to an organization can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + addUsersToOrganization: { + parameters: { + path: { + /** @description The ID of the organization. */ + organizationId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "accountIds": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd" + * ], + * "usernames": [] + * } + */ + "application/json": components["schemas"]["UsersOrganizationUpdateDTO"]; + }; + }; + responses: { + /** @description Returned if all the users were valid and added to the organization, no response payload is provided. */ + 204: { + content: never; + }; + /** @description Returned if one or more usernames are unknown. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the organization does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Remove users from organization + * @description This method removes users from an organization. + * + * **[Permissions](#permissions) required**: Service desk administrator or agent. Note: Permission to delete users from an organization can be switched to users with the Jira administrator permission, using the **[Organization management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)** feature. + */ + removeUsersFromOrganization: { + parameters: { + path: { + /** @description The ID of the organization. */ + organizationId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "accountIds": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd" + * ], + * "usernames": [] + * } + */ + "application/json": components["schemas"]["UsersOrganizationUpdateDTO"]; + }; + }; + responses: { + /** @description The request completed successfully. No additional content will be sent in the response. */ + 204: { + content: never; + }; + /** @description Returned if one or more user names are invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the organization does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get customer requests + * @description 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](#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. + */ + getCustomerRequests: { + parameters: { + query?: { + /** @description Filters customer requests where the request summary matches the `searchTerm`. [Wildcards](https://confluence.atlassian.com/display/JIRACORECLOUD/Search+syntax+for+text+fields) can be used in the `searchTerm` parameter. */ + searchTerm?: string; + /** + * @description Filters customer requests using the following values: + * + * * `OWNED_REQUESTS` returns customer requests where the user is the creator. + * * `PARTICIPATED_REQUESTS` returns customer requests where the user is a participant. + * * `ORGANIZATION` returns customer requests for an organization of which the user is a member when used in conjunction with `organizationId`. + * * `ALL_ORGANIZATIONS` returns customer requests that belong to all organizations of which the user is a member. + * * `APPROVER` returns customer requests where the user is an approver. Can be used in conjunction with `approvalStatus` to filter pending or complete approvals. + * * `ALL_REQUESTS` returns all customer requests. **Deprecated and will be removed, as the returned requests may change if more values are added in the future. Instead, explicitly list the desired filtering strategies.** + * + * Multiple values of the query parameter are supported. For example, `requestOwnership=OWNED_REQUESTS&requestOwnership=PARTICIPATED_REQUESTS` will only return customer requests where the user is the creator or a participant. If not specified, filtering defaults to `OWNED_REQUESTS`, `PARTICIPATED_REQUESTS`, and `ALL_ORGANIZATIONS`. + */ + requestOwnership?: string[]; + /** + * @description Filters customer requests where the request is closed, open, or either of the two where: + * + * * `CLOSED_REQUESTS` returns customer requests that are closed. + * * `OPEN_REQUESTS` returns customer requests that are open. + * * `ALL_REQUESTS` returns all customer requests. + */ + requestStatus?: string; + /** + * @description Filters results to customer requests based on their approval status: + * + * * `MY_PENDING_APPROVAL` returns customer requests pending the user's approval. + * * `MY_HISTORY_APPROVAL` returns customer requests where the user was an approver. + * + * **Note**: Valid only when used with requestOwnership=APPROVER. + */ + approvalStatus?: string; + /** @description Filters customer requests that belong to a specific organization (note that the user must be a member of that organization). **Note**: Valid only when used with requestOwnership=ORGANIZATION. */ + organizationId?: number; + /** @description Filters customer requests by service desk. */ + serviceDeskId?: number; + /** @description Filters customer requests by request type. Note that the `serviceDeskId` must be specified for the service desk in which the request type belongs. */ + requestTypeId?: number; + /** + * @description A multi-value parameter indicating which properties of the customer request to expand, where: + * + * * `serviceDesk` returns additional details for each service desk. + * * `requestType` returns additional details for each request type. + * * `participant` returns the participant details, if any, for each customer request. + * * `sla` returns the SLA information on each customer request. + * * `status` returns the status transitions, in chronological order, for each customer request. + * * `attachment` returns the attachments for the customer request. + * * `action` returns the actions that the user can or cannot perform on this customer request. + * * `comment` returns the comments, if any, for each customer request. + * * `comment.attachment` returns the attachment details, if any, for each comment. + * * `comment.renderedBody` (Experimental) returns the rendered body in HTML format (in addition to the raw body) for each comment. + */ + expand?: string[]; + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + }; + responses: { + /** @description Returns the customer requests, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOCustomerRequestDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to access the service desk, the service desk does not exist, or the service desk does not support the request type. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Create customer request + * @description 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](#permissions) required**: Permission to create requests in the specified service desk. + */ + createCustomerRequest: { + requestBody: { + content: { + /** + * @example { + * "form": { + * "answers": { + * "1": { + * "text": "Answer to a text form field" + * }, + * "2": { + * "date": "2023-07-06" + * }, + * "3": { + * "time": "14:35" + * }, + * "4": { + * "choices": [ + * "5" + * ] + * }, + * "5": { + * "users": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ] + * } + * } + * }, + * "isAdfRequest": false, + * "requestFieldValues": { + * "description": "I need a new *mouse* for my Mac", + * "summary": "Request JSD help via REST" + * }, + * "requestParticipants": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ], + * "requestTypeId": "25", + * "serviceDeskId": "10" + * } + */ + "application/json": components["schemas"]["RequestCreateDTO"]; + }; + }; + responses: { + /** @description Returned if the customer request was created. */ + 201: { + content: { + "application/json": components["schemas"]["CustomerRequestDTO"]; + }; + }; + /** @description Returned if the HTTP request call is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get customer request by id or key + * @description This method returns a customer request. + * + * **[Permissions](#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. + * + * **Note:** `requestFieldValues` does not include hidden fields. To get a list of request type fields that includes hidden fields, see [/rest/servicedeskapi/servicedesk/\{serviceDeskId\}/requesttype/\{requestTypeId\}/field](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-servicedesk/#api-rest-servicedeskapi-servicedesk-servicedeskid-requesttype-requesttypeid-field-get) + */ + getCustomerRequestByIdOrKey: { + parameters: { + query?: { + /** + * @description A multi-value parameter indicating which properties of the customer request to expand, where: + * + * * `serviceDesk` returns additional service desk details. + * * `requestType` returns additional customer request type details. + * * `participant` returns the participant details. + * * `sla` returns the SLA information. + * * `status` returns the status transitions, in chronological order. + * * `attachment` returns the attachments. + * * `action` returns the actions that the user can or cannot perform. + * * `comment` returns the comments. + * * `comment.attachment` returns the attachment details for each comment. + * * `comment.renderedBody` (Experimental) return the rendered body in HTML format (in addition to the raw body) for each comment. + */ + expand?: string[]; + }; + path: { + /** @description The ID or Key of the customer request to be returned */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the customer request. */ + 200: { + content: { + "application/json": components["schemas"]["CustomerRequestDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get approvals + * @description This method returns all approvals on a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + getApprovals: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of approvals to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request to be queried for its approvals. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the customer request's approvals. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOApprovalDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get approval by id + * @description This method returns an approval. Use this method to determine the status of an approval and the list of approvers. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + getApprovalById: { + parameters: { + path: { + /** @description The ID or key of the customer request the approval is on. */ + issueIdOrKey: string; + /** @description The ID of the approval to be returned. */ + approvalId: number; + }; + }; + responses: { + /** @description Returns the requested approval. */ + 200: { + content: { + "application/json": components["schemas"]["ApprovalDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request or approval do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Answer approval + * @description 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](#permissions) required**: User is assigned to the approval request. + */ + answerApproval: { + parameters: { + path: { + /** @description The ID or key of the customer request to be updated. */ + issueIdOrKey: string; + /** @description The ID of the approval to be updated. */ + approvalId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "decision": "approve" + * } + */ + "application/json": components["schemas"]["ApprovalDecisionRequestDTO"]; + }; + }; + responses: { + /** @description Returns the updated approval. */ + 200: { + content: { + "application/json": components["schemas"]["ApprovalDTO"]; + }; + }; + /** @description Returned if the request is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request or the approval do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer has already submitted a decision or the approval has already been completed. */ + 409: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get attachments for request + * @description This method returns all the attachments for a customer requests. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + * + * **Response limitations**: Customers will only get a list of public attachments. + */ + getAttachmentsForRequest: { + parameters: { + query: { + /** @description The starting index of the returned attachment. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start: number; + /** @description The maximum number of comments to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit: number; + }; + path: { + /** @description The ID or key of the customer request from which the attachments will be listed. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the visible attachments from the customer request. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOAttachmentDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Create comment with attachment + * @description This method creates a comment on a customer request using one or more attachment files (uploaded using [servicedeskapi/servicedesk/\{serviceDeskId\}/attachTemporaryFile](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-servicedesk/#api-rest-servicedeskapi-servicedesk-servicedeskid-attachtemporaryfile-post)), with the visibility set by `public`. See + * + * * GET [servicedeskapi/request/\{issueIdOrKey\}/attachment](./#api-rest-servicedeskapi-request-issueidorkey-attachment-get) + * * GET [servicedeskapi/request/\{issueIdOrKey\}/comment/\{commentId\}/attachment](./#api-rest-servicedeskapi-request-issueidorkey-comment-commentid-attachment-get) + * + * **[Permissions](#permissions) required**: Permission to add an attachment. + * + * **Request limitations**: Customers can set public visibility only. + */ + createCommentWithAttachment: { + parameters: { + path: { + /** @description The ID or key of the customer request to which the attachment will be added. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "additionalComment": { + * "body": "Please find the screenshot and the log file attached." + * }, + * "public": true, + * "temporaryAttachmentIds": [ + * "temp910441317820424274", + * "temp3600755449679003114" + * ] + * } + */ + "application/json": components["schemas"]["AttachmentCreateDTO"]; + }; + }; + responses: { + /** @description Returns the attachments and comment. */ + 201: { + content: { + "application/json": components["schemas"]["AttachmentCreateResultDTO"]; + }; + }; + /** @description Returned if the HTTP request is invalid, including missing the required `public` field or list of temporary file IDs, or if the temporary files have expired. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get attachment content + * @description 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. + */ + getAttachmentContent: { + parameters: { + path: { + /** @description The ID or key for the customer request the attachment is associated with */ + issueIdOrKey: string; + /** @description The ID for the attachment */ + attachmentId: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is successful. See the `Location` header for the download URL. */ + 303: { + content: never; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description The user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get attachment thumbnail + * @description 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. + */ + getAttachmentThumbnail: { + parameters: { + path: { + /** @description The ID or key for the customer request the attachment is associated with */ + issueIdOrKey: string; + /** @description The ID of the attachment. */ + attachmentId: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is successful. See the `Location` header for the download URL. */ + 303: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the authentication credentials are incorrect. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description The user does not have the necessary permission. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** + * @description Returned if: + * + * * the attachment is not found. + * * attachments are disabled in the Jira settings. + */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request comments + * @description 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](#permissions) required**: Permission to view the customer request. + * + * **Response limitations**: Customers are returned public comments only. + */ + getRequestComments: { + parameters: { + query?: { + /** @description Specifies whether to return public comments or not. Default: true. */ + public?: boolean; + /** @description Specifies whether to return internal comments or not. Default: true. */ + internal?: boolean; + /** + * @description A multi-value parameter indicating which properties of the comment to expand: + * + * * `attachment` returns the attachment details, if any, for each comment. (If you want to get all attachments for a request, use [servicedeskapi/request/\{issueIdOrKey\}/attachment](#api-request-issueIdOrKey-attachment-get).) + * * `renderedBody` (Experimental) returns the rendered body in HTML format (in addition to the raw body) for each comment. + */ + expand?: string[]; + /** @description The starting index of the returned comments. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of comments to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request whose comments will be retrieved. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the comments, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOCommentDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Create request comment + * @description 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](#permissions) required**: User has Add Comments permission. + * + * **Request limitations**: Customers can set comments to public visibility only. + */ + createRequestComment: { + parameters: { + path: { + /** @description The ID or key of the customer request to which the comment will be added. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "body": "Hello there", + * "public": true + * } + */ + "application/json": components["schemas"]["CommentCreateDTO"]; + }; + }; + responses: { + /** @description Returns the comment. */ + 201: { + content: { + "application/json": components["schemas"]["CommentDTO"]; + }; + }; + /** @description Returned if the HTTP request is invalid, e.g. missing the required `public`. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request comment by id + * @description This method returns details of a customer request's comment. + * + * **[Permissions](#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. + */ + getRequestCommentById: { + parameters: { + query?: { + /** + * @description A multi-value parameter indicating which properties of the comment to expand: + * + * * `attachment` returns the attachment details, if any, for the comment. (If you want to get all attachments for a request, use [servicedeskapi/request/\{issueIdOrKey\}/attachment](#api-request-issueIdOrKey-attachment-get).) + * * `renderedBody` (Experimental) returns the rendered body in HTML format (in addition to the raw body) of the comment. + */ + expand?: string[]; + }; + path: { + /** @description The ID or key of the customer request that contains the comment. */ + issueIdOrKey: string; + /** @description The ID of the comment to retrieve. */ + commentId: number; + }; + }; + responses: { + /** @description Returns the comment. */ + 200: { + content: { + "application/json": components["schemas"]["CommentDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request or comment do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get comment attachments + * @description This method returns the attachments referenced in a comment. + * + * **[Permissions](#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. + */ + getCommentAttachments: { + parameters: { + query?: { + /** @description The starting index of the returned comments. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of comments to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request that contains the comment. */ + issueIdOrKey: string; + /** @description The ID of the comment. */ + commentId: number; + }; + }; + responses: { + /** @description Returns the attachments, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOAttachmentDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request or the comment do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get subscription status + * @description 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](#permissions) required**: Permission to view the customer request. + */ + getSubscriptionStatus: { + parameters: { + path: { + /** @description The ID or key of the customer request to be queried for subscription status. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the status of the notification subscription. */ + 200: { + content: { + "application/json": components["schemas"]["RequestNotificationSubscriptionDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Subscribe + * @description This method subscribes the user to receiving notifications from a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + subscribe: { + parameters: { + path: { + /** @description The ID or key of the customer request to be subscribed to. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns if the user was subscribed. */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Unsubscribe + * @description This method unsubscribes the user from notifications from a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + unsubscribe: { + parameters: { + path: { + /** @description The ID or key of the customer request to be unsubscribed from. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns if the user was unsubscribed. */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request participants + * @description This method returns a list of all the participants on a customer request. + * + * **[Permissions](#permissions) required**: Permission to view the customer request. + */ + getRequestParticipants: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of request types to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request to be queried for its participants. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the customer request's participants, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOUserDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Add request participants + * @description This method adds participants to a customer request. + * + * **[Permissions](#permissions) required**: Permission to manage participants on the customer request. + * + * Note, participants can be added when creating a customer request using the [request](#api-request-post) resource, by defining the participants in the `requestParticipants` field. + */ + addRequestParticipants: { + parameters: { + path: { + /** @description The ID or key of the customer request to have participants added. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "accountIds": [], + * "usernames": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ] + * } + */ + "application/json": components["schemas"]["RequestParticipantUpdateDTO"]; + }; + }; + responses: { + /** @description Returns the participants added to the customer request. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOUserDTO"]; + }; + }; + /** @description Returned if any user to be added as a participant does not exist. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Remove request participants + * @description This method removes participants from a customer request. + * + * **[Permissions](#permissions) required**: Permission to manage participants on the customer request. + */ + removeRequestParticipants: { + parameters: { + path: { + /** @description The ID or key of the customer request to have participants removed. */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "accountIds": [], + * "usernames": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ] + * } + */ + "application/json": components["schemas"]["RequestParticipantUpdateDTO"]; + }; + }; + responses: { + /** @description Returns the first page of the customer request's participants (after removal of the users). */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOUserDTO"]; + }; + }; + /** @description Returned if any user to be removed as a participant does not exist, is not a participant in the customer request, or is the reporter of the request. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get sla information + * @description 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](#permissions) required**: Agent for the Service Desk containing the queried customer request. + */ + getSlaInformation: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of request types to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request whose SLAs will be retrieved. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the SLA records on the customer request, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOSlaInformationDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get sla information by id + * @description This method returns the details for an SLA on a customer request. + * + * **[Permissions](#permissions) required**: Agent for the Service Desk containing the queried customer request. + */ + getSlaInformationById: { + parameters: { + path: { + /** @description The ID or key of the customer request whose SLAs will be retrieved. */ + issueIdOrKey: string; + /** @description The ID or key of the SLAs metric to be retrieved. */ + slaMetricId: number; + }; + }; + responses: { + /** @description Returns the SLA record, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["SlaInformationDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get customer request status + * @description 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](#permissions) required**: Permission to view the customer request. + */ + getCustomerRequestStatus: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request to be retrieved. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the customer request's status history, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOCustomerRequestStatusDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request is not found. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get customer transitions + * @description 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](#permissions) required**: Permission to view the customer request. + */ + getCustomerTransitions: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID or key of the customer request whose transitions will be retrieved. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the transitions available to the user on the customer request. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOCustomerTransitionDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Perform customer transition + * @description 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](#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. + */ + performCustomerTransition: { + parameters: { + path: { + /** @description ID or key of the issue to transition */ + issueIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "additionalComment": { + * "body": "I have fixed the problem." + * }, + * "id": "1" + * } + */ + "application/json": components["schemas"]["CustomerTransitionExecutionDTO"]; + }; + }; + responses: { + /** @description Returned if the request is transitioned. */ + 204: { + content: never; + }; + /** @description Returned if the transition ID is invalid or the comment is too long. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get feedback + * @description This method retrieves a feedback of a request using it's `requestKey` or `requestId` + * + * **[Permissions](#permissions) required**: User has view request permissions. + */ + getFeedback: { + parameters: { + path: { + /** @description The id or the key of the request to post the feedback on */ + requestIdOrKey: string; + }; + }; + responses: { + /** @description Returns the comment. */ + 200: { + content: { + "application/json": components["schemas"]["CSATFeedbackFullDTO"]; + }; + }; + /** @description Returned if the HTTP request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if no logged in user/app. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user/app does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Post feedback + * @description This method adds a feedback on an request using it's `requestKey` or `requestId` + * + * **[Permissions](#permissions) required**: User must be the reporter or an Atlassian Connect app. + */ + postFeedback: { + parameters: { + path: { + /** @description The id or the key of the request to post the feedback on */ + requestIdOrKey: string; + }; + }; + /** @description The feedback to be added on the request */ + requestBody: { + content: { + /** + * @example { + * "comment": { + * "body": "Great work!" + * }, + * "rating": 4, + * "type": "csat" + * } + */ + "application/json": components["schemas"]["CSATFeedbackFullDTO"]; + }; + }; + responses: { + /** @description Returns the comment. */ + 201: { + content: { + "application/json": components["schemas"]["CSATFeedbackFullDTO"]; + }; + }; + /** @description Returned if the HTTP request is invalid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if no logged in user/app. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user/app does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Delete feedback + * @description This method deletes the feedback of request using it's `requestKey` or `requestId` + * + * **[Permissions](#permissions) required**: User must be the reporter or an Atlassian Connect app. + */ + deleteFeedback: { + parameters: { + path: { + /** @description The id or the key of the request to post the feedback on */ + requestIdOrKey: string; + }; + }; + responses: { + /** @description No content. */ + 204: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if no logged in user/app. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user/app does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the customer request does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get all request types + * @description This method returns all customer request types used in the Jira Service Management instance, optionally filtered by a query string. + * + * Use [servicedeskapi/servicedesk/\{serviceDeskId\}/requesttype](#api-servicedesk-serviceDeskId-requesttype-get) to find the customer request types supported by a specific service desk. + * + * The returned list of customer request types can be filtered using the `query` parameter. The parameter is matched against the customer request types' `name` or `description`. For example, searching for "Install", "Inst", "Equi", or "Equipment" will match a customer request type with the *name* "Equipment Installation Request". + * + * **Note:** This API will filter out hidden request types (aka.request types without groups) when `query` is provided. + * + * **[Permissions](#permissions) required**: Any + */ + getAllRequestTypes: { + parameters: { + query?: { + /** @description String to be used to filter the results. */ + searchQuery?: string; + /** @description Filter the request types by service desk Ids provided. Multiple values of the query parameter are supported. For example, `serviceDeskId=1&serviceDeskId=2` will return request types only for service desks 1 and 2. */ + serviceDeskId?: number[]; + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + expand?: string[]; + }; + }; + responses: { + /** @description Returns the request types, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTORequestTypeDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get service desks + * @description This method returns all the service desks in the Jira Service Management instance that the user has permission to access. Use this method where you need a list of service desks or need to locate a service desk by name or keyword. + * + * **Note:** This method will be slow if the instance has hundreds of service desks. If you want to fetch a single service desk by its ID, use [/rest/servicedeskapi/servicedesk/\{serviceDeskId\}](./#api-rest-servicedeskapi-servicedesk-servicedeskid-get) instead. + * + * **[Permissions](#permissions) required**: Any + */ + getServiceDesks: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + }; + responses: { + /** @description Returns the service desks, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOServiceDeskDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get service desk by id + * @description This method returns a service desk. Use this method to get service desk details whenever your application component is passed a service desk ID but needs to display other service desk details. + * + * **[Permissions](#permissions) required**: Permission to access the Service Desk. For example, being the Service Desk's Administrator or one of its Agents or Users. + */ + getServiceDeskById: { + parameters: { + path: { + /** @description The ID of the service desk to return. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the requested service desk. */ + 200: { + content: { + "application/json": components["schemas"]["ServiceDeskDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Attach temporary file + * @description This method adds one or more temporary attachments to a service desk, which can then be permanently attached to a customer request using [servicedeskapi/request/\{issueIdOrKey\}/attachment](#api-request-issueIdOrKey-attachment-post). + * + * **Note**: It is possible for a service desk administrator to turn off the ability to add attachments to a service desk. + * + * This method expects a multipart request. The media-type multipart/form-data is defined in RFC 1867. Most client libraries have classes that make dealing with multipart posts simple. For instance, in Java the Apache HTTP Components library provides [MultiPartEntity](http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html). + * + * Because this method accepts multipart/form-data, it has XSRF protection on it. This means you must submit a header of X-Atlassian-Token: no-check with the request or it will be blocked. + * + * The name of the multipart/form-data parameter that contains the attachments must be `file`. + * + * For example, to upload a file called `myfile.txt` in the Service Desk with ID 10001 use + * + * curl -D- -u customer:customer -X POST -H "X-ExperimentalApi: opt-in" -H "X-Atlassian-Token: no-check" -F "file=@myfile.txt" https://your-domain.atlassian.net/rest/servicedeskapi/servicedesk/10001/attachTemporaryFile + * + * **[Permissions](#permissions) required**: Permission to add attachments in this Service Desk. + */ + attachTemporaryFile: { + parameters: { + path: { + /** @description The ID of the Service Desk to which the file will be attached. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + requestBody: { + content: { + "multipart/form-data": components["schemas"]["MultipartFile"][]; + }; + }; + responses: { + /** @description Returns if the file(s) were attached. */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the attachments are not valid, or exceed the maximum configured attachment size. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if more than 60 files are requested to be uploaded. */ + 413: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get customers + * @description This method returns a list of the customers on a service desk. + * + * The returned list of customers can be filtered using the `query` parameter. The parameter is matched against customers' `displayName`, `name`, or `email`. For example, searching for "John", "Jo", "Smi", or "Smith" will match a user with display name "John Smith". + * + * **[Permissions](#permissions) required**: Permission to view this Service Desk's customers. + */ + getCustomers: { + parameters: { + query?: { + /** @description The string used to filter the customer list. */ + query?: string; + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of users to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID of the service desk the customer list should be returned from. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the service desk's customer list. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOUserDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Add customers + * @description Adds one or more customers to a service desk. If any of the passed customers are associated with the service desk, no changes will be made for those customers and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Service desk administrator + */ + addCustomers: { + parameters: { + path: { + /** @description The ID of the service desk the customer list should be returned from. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "accountIds": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ], + * "usernames": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ] + * } + */ + "application/json": components["schemas"]["ServiceDeskCustomerDTO"]; + }; + }; + responses: { + /** @description Returned if all the customers were added to the service desk or were already associated with the service desk. */ + 204: { + content: never; + }; + /** @description Returned if any of the customers do not exist. Note that any valid customers are added, but no confirmation is returned. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Remove customers + * @description This method removes one or more customers from a service desk. The service desk must have closed access. If any of the passed customers are not associated with the service desk, no changes will be made for those customers and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Services desk administrator + */ + removeCustomers: { + parameters: { + path: { + /** @description The ID of the service desk the customers should be removed from. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "accountIds": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ], + * "usernames": [ + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b", + * "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d69abfa3980ce712caae" + * ] + * } + */ + "application/json": components["schemas"]["ServiceDeskCustomerDTO"]; + }; + }; + responses: { + /** @description Returned if the customers were removed from the service desk, or any of the customers were not associated with the service desk. */ + 204: { + content: never; + }; + /** @description Returned if the service desk has public signup or open access enabled. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Add organization + * @description This method adds an organization to a service desk. If the organization ID is already associated with the service desk, no change is made and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + addOrganization: { + parameters: { + path: { + /** @description The ID of the service desk to which the organization will be added. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "organizationId": 1 + * } + */ + "application/json": components["schemas"]["OrganizationServiceDeskUpdateDTO"]; + }; + }; + responses: { + /** @description Returned if the organization was added or the organization was already associated with the service desk. */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or organization do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Remove organization + * @description This method removes an organization from a service desk. If the organization ID does not match an organization associated with the service desk, no change is made and the resource returns a 204 success code. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + removeOrganization: { + parameters: { + path: { + /** @description The ID of the service desk from which the organization will be removed. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "organizationId": 1 + * } + */ + "application/json": components["schemas"]["OrganizationServiceDeskUpdateDTO"]; + }; + }; + responses: { + /** @description Returned if the organization was removed from the service desk or no such organization was associated with the service desk. */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or organization do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get queues + * @description This method returns the queues in a service desk. To include a customer request count for each queue (in the `issueCount` field) in the response, set the query parameter `includeCount` to true (its default is false). + * + * **[Permissions](#permissions) required**: service desk's Agent. + */ + getQueues: { + parameters: { + query?: { + /** @description Specifies whether to include each queue's customer request (issue) count in the response. */ + includeCount?: boolean; + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description ID of the service desk whose queues will be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the queues of the service desk, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOQueueDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get queue + * @description This method returns a specific queues in a service desk. To include a customer request count for the queue (in the `issueCount` field) in the response, set the query parameter `includeCount` to true (its default is false). + * + * **[Permissions](#permissions) required**: service desk's Agent. + */ + getQueue: { + parameters: { + query?: { + /** @description Specifies whether to include each queue's customer request (issue) count in the response. */ + includeCount?: boolean; + }; + path: { + /** @description ID of the service desk whose queues will be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description ID of the required queue. */ + queueId: number; + }; + }; + responses: { + /** @description Returns the specific queue of the service desk. */ + 200: { + content: { + "application/json": components["schemas"]["QueueDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get issues in queue + * @description This method returns the customer requests in a queue. Only fields that the queue is configured to show are returned. For example, if a queue is configured to show description and due date, then only those two fields are returned for each customer request in the queue. + * + * **[Permissions](#permissions) required**: Service desk's agent. + */ + getIssuesInQueue: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID of the service desk containing the queue to be queried. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description The ID of the queue whose customer requests will be returned. */ + queueId: number; + }; + }; + responses: { + /** @description Returns the customer requests belonging to the queue, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTOIssueBean"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or the queue do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request types + * @description This method returns all customer request types from a service desk. There are two parameters for filtering the returned list: + * + * * `groupId` which filters the results to items in the customer request type group. + * * `searchQuery` which is matched against request types' `name` or `description`. For example, the strings "Install", "Inst", "Equi", or "Equipment" will match a request type with the *name* "Equipment Installation Request". + * + * **Note:** This API by default will filter out hidden request types (aka.request types without groups) when `searchQuery` is provided, unless `includeHiddenRequestTypesInSearch` is set to true. + * + * **[Permissions](#permissions) required**: Permission to access the service desk. + */ + getRequestTypes: { + parameters: { + query?: { + /** @description Filters results to those in a customer request type group. */ + groupId?: number; + expand?: string[]; + /** @description The string to be used to filter the results. */ + searchQuery?: string; + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + /** @description Whether to include hidden request types when searching with `searchQuery`. Default: false */ + includeHiddenRequestTypesInSearch?: boolean; + }; + path: { + /** @description The ID of the service desk whose customer request types are to be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the requested customer request types, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTORequestTypeDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Create request type + * @description This method enables a customer request type to be added to a service desk based on an issue type. Note that not all customer request type fields can be specified in the request and these fields are given the following default values: + * + * * Request type icon is given the headset icon. + * * Request type groups is left empty, which means this customer request type will not be visible on the [customer portal](https://confluence.atlassian.com/servicedeskcloud/configuring-the-customer-portal-732528918.html). + * * Request type status mapping is left empty, so the request type has no custom status mapping but inherits the status map from the issue type upon which it is based. + * * Request type field mapping is set to show the required fields as specified by the issue type used to create the customer request type. + * + * + * These fields can be updated by a service desk administrator using the **Request types** option in **Project settings**. + * Request Types are created in next-gen projects by creating Issue Types. Please use the Jira Cloud Platform Create issue type endpoint instead. + * + * **[Permissions](#permissions) required**: Service desk's administrator + */ + createRequestType: { + parameters: { + path: { + /** @description The ID of the service desk where the customer request type is to be created. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "description": "Get IT Help", + * "helpText": "Please tell us clearly the problem you have within 100 words.", + * "issueTypeId": "12345", + * "name": "Get IT Help" + * } + */ + "application/json": components["schemas"]["RequestTypeCreateDTO"]; + }; + }; + responses: { + /** @description Returns the customer request type created. */ + 200: { + content: { + "application/json": components["schemas"]["RequestTypeDTO"]; + }; + }; + /** @description Returned if the customer request type name is empty. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or issue type do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request type by id + * @description This method returns a customer request type from a service desk. + * + * This operation can be accessed anonymously. + * + * **[Permissions](#permissions) required**: Permission to access the service desk. + */ + getRequestTypeById: { + parameters: { + query?: { + expand?: string[]; + }; + path: { + /** @description The ID of the service desk whose customer request type is to be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description The ID of the customer request type to be returned. */ + requestTypeId: string; + }; + }; + responses: { + /** @description Returns the customer request type item. */ + 200: { + content: { + "application/json": components["schemas"]["RequestTypeDTO"]; + }; + }; + /** @description Returned if the user credentials are invalid. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or customer request type do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Delete request type + * @description This method deletes a customer request type from a service desk, and removes it from all customer requests. + * This only supports classic projects. + * + * **[Permissions](#permissions) required**: Service desk administrator. + */ + deleteRequestType: { + parameters: { + path: { + /** @description The ID or [project identifier](#project-identifiers) of the service desk. */ + serviceDeskId: string; + /** @description The ID of the request type. */ + requestTypeId: number; + }; + }; + responses: { + /** @description Returned if the request type is deleted. */ + 204: { + content: never; + }; + /** @description Returned if the request type ID is not valid. */ + 400: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have the necessary permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or request type do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request type fields + * @description This method returns the fields for a service desk's customer request type. + * + * Also, the following information about the user's permissions for the request type is returned: + * + * * `canRaiseOnBehalfOf` returns `true` if the user has permission to raise customer requests on behalf of other customers. Otherwise, returns `false`. + * * `canAddRequestParticipants` returns `true` if the user can add customer request participants. Otherwise, returns `false`. + * + * **[Permissions](#permissions) required**: Permission to view the Service Desk. However, hidden fields would be visible to only Service desk's Administrator. + */ + getRequestTypeFields: { + parameters: { + query?: { + /** @description Use [expand](#expansion) to include additional information in the response. This parameter accepts `hiddenFields` that returns hidden fields associated with the request type. */ + expand?: string[]; + }; + path: { + /** @description The ID of the service desk containing the request types whose fields are to be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + /** @description The ID of the request types whose fields are to be returned. */ + requestTypeId: number; + }; + }; + responses: { + /** @description Returns the request type's fields and user permission details, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["CustomerRequestCreateMetaDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk or request type do not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + /** + * Get request type groups + * @description This method returns a service desk's customer request type groups. Jira Service Management administrators can arrange the customer request type groups in an arbitrary order for display on the customer portal; the groups are returned in this order. + * + * **[Permissions](#permissions) required**: Permission to view the service desk. + */ + getRequestTypeGroups: { + parameters: { + query?: { + /** @description The starting index of the returned objects. Base index: 0. See the [Pagination](#pagination) section for more details. */ + start?: number; + /** @description The maximum number of items to return per page. Default: 50. See the [Pagination](#pagination) section for more details. */ + limit?: number; + }; + path: { + /** @description The ID of the service desk whose customer request type groups are to be returned. This can alternatively be a [project identifier.](#project-identifiers) */ + serviceDeskId: string; + }; + }; + responses: { + /** @description Returns the service desk's customer request type groups, on the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["PagedDTORequestTypeGroupDTO"]; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the user does not have permission to complete this request. */ + 403: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Returned if the service desk does not exist. */ + 404: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error. */ + 500: { + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; +} diff --git a/src/generated/openapi-software.ts b/src/generated/openapi-software.ts new file mode 100644 index 0000000..724244e --- /dev/null +++ b/src/generated/openapi-software.ts @@ -0,0 +1,11646 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ + +/** OneOf type helpers */ +type Without = { [P in Exclude]?: never }; +type XOR = T | U extends object ? (Without & U) | (Without & T) : T | U; +type OneOf = T extends [infer Only] + ? Only + : T extends [infer A, infer B, ...infer Rest] + ? OneOf<[XOR, ...Rest]> + : never; + +export interface paths { + "/rest/agile/1.0/backlog/issue": { + /** + * Move issues to backlog + * @description Move issues to the backlog. + * This operation is equivalent to remove future and active sprints from a given set of issues. At most 50 issues may be moved at once. + */ + post: operations["moveIssuesToBacklog"]; + }; + "/rest/agile/1.0/backlog/{boardId}/issue": { + /** + * Move issues to backlog for board + * @description Move issues to the backlog of a particular board (if they are already on that board). + * This operation is equivalent to remove future and active sprints from a given set of issues if the board has sprints If the board does not have sprints this will put the issues back into the backlog from the board. At most 50 issues may be moved at once. + */ + post: operations["moveIssuesToBacklogForBoard"]; + }; + "/rest/agile/1.0/board": { + /** + * Get all boards + * @description Returns all boards. This only includes boards that the user has permission to view. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024. + * + * * `read:board-scope:jira-software`, `read:project:jira` + */ + get: operations["getAllBoards"]; + /** + * Create board + * @description Creates a new board. Board name, type and filter ID is required. + * + * * `name` \- Must be less than 255 characters. + * * `type` \- Valid values: scrum, kanban + * * `filterId` \- ID of a filter that the user has permissions to view. Note, if the user does not have the 'Create shared objects' permission and tries to create a shared board, a private board will be created instead (remember that board sharing depends on the filter sharing). + * * `location` \- The container that the board will be located in. `location` must include the `type` property (Valid values: project, user). If choosing 'project', then a project must be specified by a `projectKeyOrId` property in `location`. If choosing 'user', the current user is chosen by default. The `projectKeyOrId` property should not be provided. + * + * Note: + * + * * If you want to create a new project with an associated board, use the [Jira platform REST API](https://docs.atlassian.com/jira/REST/latest). For more information, see the [Create project](#api-rest-api-3-project-post) method. The `projectTypeKey` for software boards must be 'software' and the `projectTemplateKey` must be either `com.pyxis.greenhopper.jira:gh-kanban-template` or `com.pyxis.greenhopper.jira:gh-scrum-template`. + * * You can create a filter using the [Jira REST API](https://docs.atlassian.com/jira/REST/latest). For more information, see the [Create filter](#api-rest-api-3-filter-post) method. + * * If you do not ORDER BY the Rank field for the filter of your board, you will not be able to reorder issues on the board. + */ + post: operations["createBoard"]; + }; + "/rest/agile/1.0/board/filter/{filterId}": { + /** + * Get board by filter id + * @description Returns any boards which use the provided filter id. This method can be executed by users without a valid software license in order to find which boards are using a particular filter. + */ + get: operations["getBoardByFilterId"]; + }; + "/rest/agile/1.0/board/{boardId}": { + /** + * Get board + * @description Returns the board for the given board ID. This board will only be returned if the user has permission to view it. Admins without the view permission will see the board as a private one, so will see only a subset of the board's data (board location for instance). + */ + get: operations["getBoard"]; + /** + * Delete board + * @description Deletes the board. Admin without the view permission can still remove the board. + */ + delete: operations["deleteBoard"]; + }; + "/rest/agile/1.0/board/{boardId}/backlog": { + /** + * Get issues for backlog + * @description Returns all issues from the board's backlog, for the given board ID. This only includes issues that the user has permission to view. The backlog contains incomplete issues that are not assigned to any future or active sprint. Note, if the user does not have permission to view the board, no issues will be returned at all. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + get: operations["getIssuesForBacklog"]; + }; + "/rest/agile/1.0/board/{boardId}/configuration": { + /** + * Get configuration + * @description Get the board configuration. The response contains the following fields: + * + * * `id` \- ID of the board. + * * `name` \- Name of the board. + * * `filter` \- Reference to the filter used by the given board. + * * `location` \- Reference to the container that the board is located in. Includes the container type (Valid values: project, user). + * * `subQuery` (Kanban only) - JQL subquery used by the given board. + * * `columnConfig` \- The column configuration lists the columns for the board, in the order defined in the column configuration. For each column, it shows the issue status mapping as well as the constraint type (Valid values: none, issueCount, issueCountExclSubs) for the min/max number of issues. Note, the last column with statuses mapped to it is treated as the "Done" column, which means that issues in that column will be marked as already completed. + * * `estimation` (Scrum only) - Contains information about type of estimation used for the board. Valid values: none, issueCount, field. If the estimation type is "field", the ID and display name of the field used for estimation is also returned. Note, estimates for an issue can be updated by a PUT /rest/api/3/issue/\{issueIdOrKey\} request, however the fields must be on the screen. "timeoriginalestimate" field will never be on the screen, so in order to update it "originalEstimate" in "timetracking" field should be updated. + * * `ranking` \- Contains information about custom field used for ranking in the given board. + */ + get: operations["getConfiguration"]; + }; + "/rest/agile/1.0/board/{boardId}/epic": { + /** + * Get epics + * @description Returns all epics from the board, for the given board ID. This only includes epics that the user has permission to view. Note, if the user does not have permission to view the board, no epics will be returned at all. + */ + get: operations["getEpics"]; + }; + "/rest/agile/1.0/board/{boardId}/epic/none/issue": { + /** + * Get issues without epic for board + * @description Returns all issues that do not belong to any epic on a board, for a given board ID. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + get: operations["getIssuesWithoutEpicForBoard"]; + }; + "/rest/agile/1.0/board/{boardId}/epic/{epicId}/issue": { + /** + * Get board issues for epic + * @description Returns all issues that belong to an epic on the board, for the given epic ID and the board ID. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + get: operations["getBoardIssuesForEpic"]; + }; + "/rest/agile/1.0/board/{boardId}/features": { + /** Get features for board */ + get: operations["getFeaturesForBoard"]; + /** Toggle features */ + put: operations["toggleFeatures"]; + }; + "/rest/agile/1.0/board/{boardId}/issue": { + /** + * Get issues for board + * @description Returns all issues from a board, for a given board ID. This only includes issues that the user has permission to view. An issue belongs to the board if its status is mapped to the board's column. Epic issues do not belongs to the scrum boards. Note, if the user does not have permission to view the board, no issues will be returned at all. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + get: operations["getIssuesForBoard"]; + /** + * Move issues to board + * @description Move issues from the backog to the board (if they are already in the backlog of that board). + * This operation either moves an issue(s) onto a board from the backlog (by adding it to the issueList for the board) Or transitions the issue(s) to the first column for a kanban board with backlog. At most 50 issues may be moved at once. + */ + post: operations["moveIssuesToBoard"]; + }; + "/rest/agile/1.0/board/{boardId}/project": { + /** + * Get projects + * @description Returns all projects that are associated with the board, for the given board ID. If the user does not have permission to view the board, no projects will be returned at all. Returned projects are ordered by the name. + * + * A project is associated with a board if the board filter contains reference the project or there is an issue from the project that belongs to the board. + * + * The board filter contains reference the project only if JQL query guarantees that returned issues will be returned from the project set defined in JQL. For instance the query `project in (ABC, BCD) AND reporter = admin` have reference to ABC and BCD projects but query `project in (ABC, BCD) OR reporter = admin` doesn't have reference to any project. + * + * An issue belongs to the board if its status is mapped to the board's column. Epic issues do not belongs to the scrum boards. + */ + get: operations["getProjects"]; + }; + "/rest/agile/1.0/board/{boardId}/project/full": { + /** + * Get projects full + * @description Returns all projects that are statically associated with the board, for the given board ID. Returned projects are ordered by the name. + * + * A project is associated with a board if the board filter contains reference the project. + * + * The board filter contains reference the project only if JQL query guarantees that returned issues will be returned from the project set defined in JQL. For instance the query `project in (ABC, BCD) AND reporter = admin` have reference to ABC and BCD projects but query `project in (ABC, BCD) OR reporter = admin` doesn't have reference to any project. + */ + get: operations["getProjectsFull"]; + }; + "/rest/agile/1.0/board/{boardId}/properties": { + /** + * Get board property keys + * @description Returns the keys of all properties for the board identified by the id. The user who retrieves the property keys is required to have permissions to view the board. + */ + get: operations["getBoardPropertyKeys"]; + }; + "/rest/agile/1.0/board/{boardId}/properties/{propertyKey}": { + /** + * Get board property + * @description Returns the value of the property with a given key from the board identified by the provided id. The user who retrieves the property is required to have permissions to view the board. + */ + get: operations["getBoardProperty"]; + /** + * Set board property + * @description Sets the value of the specified board's property. + * + * You can use this resource to store a custom data against the board identified by the id. The user who stores the data is required to have permissions to modify the board. + */ + put: operations["setBoardProperty"]; + /** + * Delete board property + * @description Removes the property from the board identified by the id. Ths user removing the property is required to have permissions to modify the board. + */ + delete: operations["deleteBoardProperty"]; + }; + "/rest/agile/1.0/board/{boardId}/quickfilter": { + /** + * Get all quick filters + * @description Returns all quick filters from a board, for a given board ID. + */ + get: operations["getAllQuickFilters"]; + }; + "/rest/agile/1.0/board/{boardId}/quickfilter/{quickFilterId}": { + /** + * Get quick filter + * @description Returns the quick filter for a given quick filter ID. The quick filter will only be returned if the user can view the board that the quick filter belongs to. + */ + get: operations["getQuickFilter"]; + }; + "/rest/agile/1.0/board/{boardId}/reports": { + /** Get reports for board */ + get: operations["getReportsForBoard"]; + }; + "/rest/agile/1.0/board/{boardId}/sprint": { + /** + * Get all sprints + * @description Returns all sprints from a board, for a given board ID. This only includes sprints that the user has permission to view. + */ + get: operations["getAllSprints"]; + }; + "/rest/agile/1.0/board/{boardId}/sprint/{sprintId}/issue": { + /** + * Get board issues for sprint + * @description Get all issues you have access to that belong to the sprint from the board. Issue returned from this resource contains additional fields like: sprint, closedSprints, flagged and epic. Issues are returned ordered by rank. JQL order has higher priority than default rank. + */ + get: operations["getBoardIssuesForSprint"]; + }; + "/rest/agile/1.0/board/{boardId}/version": { + /** + * Get all versions + * @description Returns all versions from a board, for a given board ID. This only includes versions that the user has permission to view. Note, if the user does not have permission to view the board, no versions will be returned at all. Returned versions are ordered by the name of the project from which they belong and then by sequence defined by user. + */ + get: operations["getAllVersions"]; + }; + "/rest/agile/1.0/epic/none/issue": { + /** + * Get issues without epic + * @description Returns all issues that do not belong to any epic. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. **Note:** If you are querying a next-gen project, do not use this operation. Instead, search for issues that don't belong to an epic by using the [Search for issues using JQL](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-get) operation in the Jira platform REST API. Build your JQL query using the `parent is empty` clause. For more information on the `parent` JQL field, see [Advanced searching](https://confluence.atlassian.com/x/dAiiLQ#Advancedsearching-fieldsreference-Parent). + */ + get: operations["getIssuesWithoutEpic"]; + /** + * Remove issues from epic + * @description Removes issues from epics. The user needs to have the edit issue permission for all issue they want to remove from epics. The maximum number of issues that can be moved in one operation is 50. **Note:** This operation does not work for epics in next-gen projects. Instead, update the issue using `\{ fields: \{ parent: \{\} \} \}` + */ + post: operations["removeIssuesFromEpic"]; + }; + "/rest/agile/1.0/epic/{epicIdOrKey}": { + /** + * Get epic + * @description Returns the epic for a given epic ID. This epic will only be returned if the user has permission to view it. **Note:** This operation does not work for epics in next-gen projects. + */ + get: operations["getEpic"]; + /** + * Partially update epic + * @description Performs a partial update of the epic. A partial update means that fields not present in the request JSON will not be updated. Valid values for color are `color_1` to `color_9`. **Note:** This operation does not work for epics in next-gen projects. + */ + post: operations["partiallyUpdateEpic"]; + }; + "/rest/agile/1.0/epic/{epicIdOrKey}/issue": { + /** + * Get issues for epic + * @description Returns all issues that belong to the epic, for the given epic ID. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. **Note:** If you are querying a next-gen project, do not use this operation. Instead, search for issues that belong to an epic by using the [Search for issues using JQL](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-get) operation in the Jira platform REST API. Build your JQL query using the `parent` clause. For more information on the `parent` JQL field, see [Advanced searching](https://confluence.atlassian.com/x/dAiiLQ#Advancedsearching-fieldsreference-Parent). + */ + get: operations["getIssuesForEpic"]; + /** + * Move issues to epic + * @description Moves issues to an epic, for a given epic id. Issues can be only in a single epic at the same time. That means that already assigned issues to an epic, will not be assigned to the previous epic anymore. The user needs to have the edit issue permission for all issue they want to move and to the epic. The maximum number of issues that can be moved in one operation is 50. **Note:** This operation does not work for epics in next-gen projects. + */ + post: operations["moveIssuesToEpic"]; + }; + "/rest/agile/1.0/epic/{epicIdOrKey}/rank": { + /** + * Rank epics + * @description Moves (ranks) an epic before or after a given epic. + * + * If rankCustomFieldId is not defined, the default rank field will be used. + * + * **Note:** This operation does not work for epics in next-gen projects. + */ + put: operations["rankEpics"]; + }; + "/rest/agile/1.0/issue/rank": { + /** + * Rank issues + * @description Moves (ranks) issues before or after a given issue. At most 50 issues may be ranked at once. + * + * This operation may fail for some issues, although this will be rare. In that case the 207 status code is returned for the whole response and detailed information regarding each issue is available in the response body. + * + * If rankCustomFieldId is not defined, the default rank field will be used. + */ + put: operations["rankIssues"]; + }; + "/rest/agile/1.0/issue/{issueIdOrKey}": { + /** + * Get issue + * @description Returns a single issue, for a given issue ID or issue key. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. + */ + get: operations["getIssue"]; + }; + "/rest/agile/1.0/issue/{issueIdOrKey}/estimation": { + /** + * Get issue estimation for board + * @description Returns the estimation of the issue and a fieldId of the field that is used for it. `boardId` param is required. This param determines which field will be updated on a issue. + * + * Original time internally stores and returns the estimation as a number of seconds. + * + * The field used for estimation on the given board can be obtained from [board configuration resource](#agile/1.0/board-getConfiguration). More information about the field are returned by [edit meta resource](#api-rest-api-3-issue-getEditIssueMeta) or [field resource](#api-rest-api-3-field-get). + */ + get: operations["getIssueEstimationForBoard"]; + /** + * Estimate issue for board + * @description Updates the estimation of the issue. boardId param is required. This param determines which field will be updated on a issue. + * + * Note that this resource changes the estimation field of the issue regardless of appearance the field on the screen. + * + * Original time tracking estimation field accepts estimation in formats like "1w", "2d", "3h", "20m" or number which represent number of minutes. However, internally the field stores and returns the estimation as a number of seconds. + * + * The field used for estimation on the given board can be obtained from [board configuration resource](#agile/1.0/board-getConfiguration). More information about the field are returned by [edit meta resource](#api-rest-api-3-issue-issueIdOrKey-editmeta-get) or [field resource](#api-rest-api-3-field-get). + */ + put: operations["estimateIssueForBoard"]; + }; + "/rest/agile/1.0/sprint": { + /** + * Create sprint + * @description Creates a future sprint. Sprint name and origin board id are required. Start date, end date, and goal are optional. + * + * Note that the sprint name is trimmed. Also, when starting sprints from the UI, the "endDate" set through this call is ignored and instead the last sprint's duration is used to fill the form. + */ + post: operations["createSprint"]; + }; + "/rest/agile/1.0/sprint/{sprintId}": { + /** + * Get sprint + * @description Returns the sprint for a given sprint ID. The sprint will only be returned if the user can view the board that the sprint was created on, or view at least one of the issues in the sprint. + */ + get: operations["getSprint"]; + /** + * Update sprint + * @description Performs a full update of a sprint. A full update means that the result will be exactly the same as the request body. Any fields not present in the request JSON will be set to null. + * + * Notes: + * + * * Sprints that are in a closed state cannot be updated. + * * A sprint can be started by updating the state to 'active'. This requires the sprint to be in the 'future' state and have a startDate and endDate set. + * * A sprint can be completed by updating the state to 'closed'. This action requires the sprint to be in the 'active' state. This sets the completeDate to the time of the request. + * * Other changes to state are not allowed. + * * The completeDate field cannot be updated manually. + */ + put: operations["updateSprint"]; + /** + * Partially update sprint + * @description Performs a partial update of a sprint. A partial update means that fields not present in the request JSON will not be updated. + * + * Notes: + * + * * Sprints that are in a closed state cannot be updated. + * * A sprint can be started by updating the state to 'active'. This requires the sprint to be in the 'future' state and have a startDate and endDate set. + * * A sprint can be completed by updating the state to 'closed'. This action requires the sprint to be in the 'active' state. This sets the completeDate to the time of the request. + * * Other changes to state are not allowed. + * * The completeDate field cannot be updated manually. + */ + post: operations["partiallyUpdateSprint"]; + /** + * Delete sprint + * @description Deletes a sprint. Once a sprint is deleted, all open issues in the sprint will be moved to the backlog. + */ + delete: operations["deleteSprint"]; + }; + "/rest/agile/1.0/sprint/{sprintId}/issue": { + /** + * Get issues for sprint + * @description Returns all issues in a sprint, for a given sprint ID. This only includes issues that the user has permission to view. By default, the returned issues are ordered by rank. + */ + get: operations["getIssuesForSprint"]; + /** + * Move issues to sprint and rank + * @description Moves issues to a sprint, for a given sprint ID. Issues can only be moved to open or active sprints. The maximum number of issues that can be moved in one operation is 50. + */ + post: operations["moveIssuesToSprintAndRank"]; + }; + "/rest/agile/1.0/sprint/{sprintId}/properties": { + /** + * Get properties keys + * @description Returns the keys of all properties for the sprint identified by the id. The user who retrieves the property keys is required to have permissions to view the sprint. + */ + get: operations["getPropertiesKeys"]; + }; + "/rest/agile/1.0/sprint/{sprintId}/properties/{propertyKey}": { + /** + * Get property + * @description Returns the value of the property with a given key from the sprint identified by the provided id. The user who retrieves the property is required to have permissions to view the sprint. + */ + get: operations["getProperty"]; + /** + * Set property + * @description Sets the value of the specified sprint's property. + * + * You can use this resource to store a custom data against the sprint identified by the id. The user who stores the data is required to have permissions to modify the sprint. + */ + put: operations["setProperty"]; + /** + * Delete property + * @description Removes the property from the sprint identified by the id. Ths user removing the property is required to have permissions to modify the sprint. + */ + delete: operations["deleteProperty"]; + }; + "/rest/agile/1.0/sprint/{sprintId}/swap": { + /** + * Swap sprint + * @description Swap the position of the sprint with the second sprint. + */ + post: operations["swapSprint"]; + }; + "/rest/devinfo/0.10/bulk": { + /** + * Store development information + * @description Stores development information provided in the request to make it available when viewing issues in Jira. Existing repository and entity data for the same ID will be replaced if the updateSequenceId of existing data is less than the incoming data. Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are available within a short period of time, but may take some time during peak load and/or maintenance times. + */ + post: operations["storeDevelopmentInformation"]; + }; + "/rest/devinfo/0.10/repository/{repositoryId}": { + /** + * Get repository + * @description For the specified repository ID, retrieves the repository and the most recent 400 development information entities. The result will be what is currently stored, ignoring any pending updates or deletes. + */ + get: operations["getRepository"]; + /** + * Delete repository + * @description Deletes the repository data stored by the given ID and all related development information entities. Deletion is performed asynchronously. + */ + delete: operations["deleteRepository"]; + }; + "/rest/devinfo/0.10/bulkByProperties": { + /** + * Delete development information by properties + * @description Deletes development information entities which have all the provided properties. Entities will be deleted that match ALL of the properties (i.e. treated as an AND). For example if request is `DELETE bulk?accountId=123&projectId=ABC` entities which have properties `accountId=123` and `projectId=ABC` will be deleted. Special property `_updateSequenceId` can be used to delete all entities with updateSequenceId less or equal than the value specified. In addition to the optional `_updateSequenceId`, one or more query params must be supplied to specify properties to delete by. Deletion is performed asynchronously: specified entities will eventually be removed from Jira. + */ + delete: operations["deleteByProperties"]; + }; + "/rest/devinfo/0.10/existsByProperties": { + /** + * Check if data exists for the supplied properties + * @description Checks if development information which have all the provided properties exists. For example, if request is `GET existsByProperties?accountId=123&projectId=ABC` then result will be positive only if there is at least one entity or repository with both properties `accountId=123` and `projectId=ABC`. Special property `_updateSequenceId` can be used to filter all entities with updateSequenceId less or equal than the value specified. In addition to the optional `_updateSequenceId`, one or more query params must be supplied to specify properties to search by. + */ + get: operations["existsByProperties"]; + }; + "/rest/devinfo/0.10/repository/{repositoryId}/{entityType}/{entityId}": { + /** + * Delete development information entity + * @description Deletes particular development information entity. Deletion is performed asynchronously. + */ + delete: operations["deleteEntity"]; + }; + "/rest/featureflags/0.1/bulk": { + /** + * Submit Feature Flag data + * @description Update / insert Feature Flag data. + * + * Feature Flags are identified by their ID, and existing Feature Flag data for the same ID will be replaced if it exists and the updateSequenceId of existing data is less than the incoming data. + * + * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are available within a short period of time, but may take some time during peak load and/or maintenance times. The getFeatureFlagById operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple Feature Flags being submitted in one request, each is validated individually prior to submission. Details of which Feature Flags failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + post: operations["submitFeatureFlags"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + }; + }; + "/rest/featureflags/0.1/bulkByProperties": { + /** + * Delete Feature Flags by Property + * @description Bulk delete all Feature Flags that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. Optional param `_updateSequenceId` is no longer supported. + * If more than one Property is provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). + * See the documentation for the submitFeatureFlags operation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456 + * + * Deletion is performed asynchronously. The getFeatureFlagById operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteFeatureFlagsByProperty"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + }; + }; + "/rest/featureflags/0.1/flag/{featureFlagId}": { + /** + * Get a Feature Flag by ID + * @description Retrieve the currently stored Feature Flag data for the given ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getFeatureFlagById"]; + /** + * Delete a Feature Flag by ID + * @description Delete the Feature Flag data currently stored for the given ID. + * + * Deletion is performed asynchronously. The getFeatureFlagById operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteFeatureFlagById"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + }; + }; + "/rest/deployments/0.1/bulk": { + /** + * Submit deployment data + * @description Update / insert deployment data. + * + * Deployments are identified by the combination of `pipelineId`, `environmentId` and `deploymentSequenceNumber`, and existing deployment data for the same deployment will be replaced if it exists and the `updateSequenceNumber` of existing data is less than the incoming data. + * + * Submissions are processed asynchronously. Submitted data will eventually be available in Jira. Most updates are available within a short period of time, but may take some time during peak load and/or maintenance times. The `getDeploymentByKey` operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple deployments being submitted in one request, each is validated individually prior to submission. Details of which deployments failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + post: operations["submitDeployments"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/deployments/0.1/bulkByProperties": { + /** + * Delete deployments by Property + * @description Bulk delete all deployments that match the given request. + * + * One or more query params must be supplied to specify the Properties to delete by. Optional param `_updateSequenceNumber` is no longer supported. + * If more than one Property is provided, data will be deleted that matches ALL of the Properties (i.e. treated as AND). + * See the documentation for the `submitDeployments` operation for more details. + * + * Example operation: DELETE /bulkByProperties?accountId=account-123&createdBy=user-456 + * + * Deletion is performed asynchronously. The `getDeploymentByKey` operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteDeploymentsByProperty"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/deployments/0.1/pipelines/{pipelineId}/environments/{environmentId}/deployments/{deploymentSequenceNumber}": { + /** + * Get a deployment by key + * @description Retrieve the currently stored deployment data for the given `pipelineId`, `environmentId` and `deploymentSequenceNumber` combination. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getDeploymentByKey"]; + /** + * Delete a deployment by key + * @description Delete the currently stored deployment data for the given `pipelineId`, `environmentId` and `deploymentSequenceNumber` combination. + * + * Deletion is performed asynchronously. The `getDeploymentByKey` operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteDeploymentByKey"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/deployments/0.1/pipelines/{pipelineId}/environments/{environmentId}/deployments/{deploymentSequenceNumber}/gating-status": { + /** + * Get deployment gating status by key + * @description Retrieve the Deployment gating status for the given `pipelineId + environmentId + deploymentSequenceNumber` combination. + * Only apps that define the `jiraDeploymentInfoProvider` module can access this resource. This resource requires the 'READ' scope. + */ + get: operations["getDeploymentGatingStatusByKey"]; + }; + "/rest/builds/0.1/bulk": { + /** + * Submit build data + * @description Update / insert builds data. + * + * Builds are identified by the combination of `pipelineId` and `buildNumber`, and existing build data for the same + * build will be replaced if it exists and the `updateSequenceNumber` of the existing data is less than the + * incoming data. + * + * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are + * available within a short period of time, but may take some time during peak load and/or maintenance times. + * The `getBuildByKey` operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple builds being submitted in one request, each is validated individually prior to + * submission. Details of which build failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + post: operations["submitBuilds"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/builds/0.1/bulkByProperties": { + /** + * Delete builds by Property + * @description Bulk delete all builds data that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. + * Optional param `_updateSequenceNumber` is no longer supported. + * If more than one Property is provided, data will be deleted that matches ALL of the + * Properties (e.g. treated as an AND). + * + * See the documentation for the `submitBuilds` operation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&repoId=repo-345 + * + * Deletion is performed asynchronously. The `getBuildByKey` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteBuildsByProperty"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/builds/0.1/pipelines/{pipelineId}/builds/{buildNumber}": { + /** + * Get a build by key + * @description Retrieve the currently stored build data for the given `pipelineId` and `buildNumber` combination. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getBuildByKey"]; + /** + * Delete a build by key + * @description Delete the build data currently stored for the given `pipelineId` and `buildNumber` combination. + * + * Deletion is performed asynchronously. The `getBuildByKey` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteBuildByKey"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/remotelinks/1.0/bulk": { + /** + * Submit Remote Link data + * @description Update / insert Remote Link data. + * + * Remote Links are identified by their ID, existing Remote Link data for the same ID will be replaced if it + * exists and the updateSequenceId of existing data is less than the incoming data. + * + * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are + * available within a short period of time, but may take some time during peak load and/or maintenance times. + * The `getRemoteLinkById` operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple Remote Links being submitted in one request, each is validated individually prior to + * submission. Details of which Remote LInk failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module can access this resource. This resource + * requires the 'WRITE' scope for Connect apps. + */ + post: operations["submitRemoteLinks"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/remotelinks/1.0/bulkByProperties": { + /** + * Delete Remote Links by Property + * @description Bulk delete all Remote Links data that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. + * Optional param `_updateSequenceNumber` is no longer supported. If more than one Property is provided, + * data will be deleted that matches ALL of the Properties (e.g. treated as an AND). + * + * See the documentation for the `submitRemoteLinks` operation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&repoId=repo-345 + * + * Deletion is performed asynchronously. The `getRemoteLinkById` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteRemoteLinksByProperty"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that + * corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/remotelinks/1.0/remotelink/{remoteLinkId}": { + /** + * Get a Remote Link by ID + * @description Retrieve the currently stored Remote Link data for the given ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getRemoteLinkById"]; + /** + * Delete a Remote Link by ID + * @description Delete the Remote Link data currently stored for the given ID. + * + * Deletion is performed asynchronously. The `getRemoteLinkById` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteRemoteLinkById"]; + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that + * corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + }; + "/rest/security/1.0/linkedWorkspaces/bulk": { + /** + * Submit Security Workspaces to link + * @description Insert Security Workspace IDs to establish a relationship between them and the Jira site the app is installed on. If a relationship between the workspace ID and Jira already exists then the workspace ID will be ignored and Jira will process the rest of the entries. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + post: operations["submitWorkspaces"]; + /** + * Delete linked Security Workspaces + * @description Bulk delete all linked Security Workspaces that match the given request. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + * + * e.g. DELETE /bulk?workspaceIds=111-222-333,444-555-666 + */ + delete: operations["deleteLinkedWorkspaces"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read [understanding jwt](https://developer.atlassian.com/blog/2015/01/understanding-jwt/) for more details. + */ + Authorization: string; + }; + }; + }; + "/rest/security/1.0/linkedWorkspaces": { + /** + * Get linked Security Workspaces + * @description Retrieve all Security Workspaces linked with the Jira site. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getLinkedWorkspaces"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + }; + "/rest/security/1.0/linkedWorkspaces/{workspaceId}": { + /** + * Get a linked Security Workspace by ID + * @description Retrieve a specific Security Workspace linked to the Jira site for the given workspace ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getLinkedWorkspaceById"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + }; + "/rest/security/1.0/bulk": { + /** + * Submit Vulnerability data + * @description Update / Insert Vulnerability data. + * + * Vulnerabilities are identified by their ID, any existing Vulnerability data with the same ID will be replaced if it exists and the updateSequenceNumber of the existing data is less than the incoming data. + * + * Submissions are performed asynchronously. Most updates are available within a short period of time but may take some time during peak load and/or maintenance times. The GET vulnerability endpoint can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple Vulnerabilities being submitted in one request, each is validated individually prior to submission. Details of Vulnerabilities that failed submission (if any) are available in the response object. + * + * A maximum of 1000 vulnerabilities can be submitted in one request. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + post: operations["submitVulnerabilities"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + }; + "/rest/security/1.0/bulkByProperties": { + /** + * Delete Vulnerabilities by Property + * @description Bulk delete all Vulnerabilities that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. + * If more than one Property is provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). + * Read the POST bulk endpoint documentation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456 + * + * Deletion is performed asynchronously. The GET vulnerability endpoint can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteVulnerabilitiesByProperty"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + }; + "/rest/security/1.0/vulnerability/{vulnerabilityId}": { + /** + * Get a Vulnerability by ID + * @description Retrieve the currently stored Vulnerability data for the given ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + get: operations["getVulnerabilityById"]; + /** + * Delete a Vulnerability by ID + * @description Delete the Vulnerability data currently stored for the given ID. + * + * Deletion is performed asynchronously. The GET vulnerability endpoint can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + delete: operations["deleteVulnerabilityById"]; + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + }; +} + +export type webhooks = Record; + +export interface components { + schemas: { + StringList: Record; + IssueAssignRequestBean: { + issues?: string[]; + }; + EpicRankRequestBean: { + rankBeforeEpic?: string; + rankAfterEpic?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + ColorBean: { + /** @enum {string} */ + key?: + | "color_1" + | "color_2" + | "color_3" + | "color_4" + | "color_5" + | "color_6" + | "color_7" + | "color_8" + | "color_9" + | "color_10" + | "color_11" + | "color_12" + | "color_13" + | "color_14"; + }; + EpicUpdateBean: { + name?: string; + summary?: string; + color?: { + /** @enum {string} */ + key?: + | "color_1" + | "color_2" + | "color_3" + | "color_4" + | "color_5" + | "color_6" + | "color_7" + | "color_8" + | "color_9" + | "color_10" + | "color_11" + | "color_12" + | "color_13" + | "color_14"; + }; + done?: boolean; + }; + ReportBean: Record; + ReportsResponseBean: { + reports?: Record[]; + }; + SprintCreateBean: { + name?: string; + startDate?: string; + endDate?: string; + /** Format: int64 */ + originBoardId?: number; + goal?: string; + }; + SprintBean: { + /** Format: int64 */ + id?: number; + /** Format: uri */ + self?: string; + state?: string; + name?: string; + startDate?: string; + endDate?: string; + completeDate?: string; + createdDate?: string; + /** Format: int64 */ + originBoardId?: number; + goal?: string; + }; + IssueRankRequestBean: { + issues?: string[]; + rankBeforeIssue?: string; + rankAfterIssue?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + SprintSwapBean: { + /** Format: int64 */ + sprintToSwapWith?: number; + }; + PageBeanQuickFilterBean: { + /** Format: int32 */ + maxResults?: number; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + isLast?: boolean; + values?: { + /** Format: int64 */ + id?: number; + /** Format: int64 */ + boardId?: number; + name?: string; + jql?: string; + description?: string; + /** Format: int32 */ + position?: number; + }[]; + }; + QuickFilterBean: { + /** Format: int64 */ + id?: number; + /** Format: int64 */ + boardId?: number; + name?: string; + jql?: string; + description?: string; + /** Format: int32 */ + position?: number; + }; + /** @description Details about a board. */ + Board: { + /** + * Format: int64 + * @description The ID of the board. + */ + id?: number; + /** + * Format: uri + * @description The URL of the board. + */ + self?: string; + /** @description The name of the board. */ + name?: string; + /** @description The type the board. */ + type?: string; + admins?: { + users?: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }[]; + groups?: { + name?: string; + /** Format: uri */ + self?: string; + }[]; + }; + /** @description The container that the board is located in. */ + location?: { + /** Format: int64 */ + projectId?: number; + /** Format: int64 */ + userId?: number; + userAccountId?: string; + displayName?: string; + projectName?: string; + projectKey?: string; + projectTypeKey?: string; + /** Format: uri */ + avatarURI?: string; + name?: string; + }; + /** @description Whether the board can be edited. */ + canEdit?: boolean; + /** @description Whether the board is private. */ + isPrivate?: boolean; + /** @description Whether the board is selected as a favorite. */ + favourite?: boolean; + }; + /** @description The users and groups who own the board. */ + BoardAdminsBean: { + users?: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }[]; + groups?: { + name?: string; + /** Format: uri */ + self?: string; + }[]; + }; + /** @description The container that the board is located in. */ + BoardLocationBean: { + /** Format: int64 */ + projectId?: number; + /** Format: int64 */ + userId?: number; + userAccountId?: string; + displayName?: string; + projectName?: string; + projectKey?: string; + projectTypeKey?: string; + /** Format: uri */ + avatarURI?: string; + name?: string; + }; + GroupBean: { + name?: string; + /** Format: uri */ + self?: string; + }; + PageBeanBoard: { + /** Format: int32 */ + maxResults?: number; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + isLast?: boolean; + values?: { + /** + * Format: int64 + * @description The ID of the board. + */ + id?: number; + /** + * Format: uri + * @description The URL of the board. + */ + self?: string; + /** @description The name of the board. */ + name?: string; + /** @description The type the board. */ + type?: string; + admins?: { + users?: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }[]; + groups?: { + name?: string; + /** Format: uri */ + self?: string; + }[]; + }; + /** @description The container that the board is located in. */ + location?: { + /** Format: int64 */ + projectId?: number; + /** Format: int64 */ + userId?: number; + userAccountId?: string; + displayName?: string; + projectName?: string; + projectKey?: string; + projectTypeKey?: string; + /** Format: uri */ + avatarURI?: string; + name?: string; + }; + /** @description Whether the board can be edited. */ + canEdit?: boolean; + /** @description Whether the board is private. */ + isPrivate?: boolean; + /** @description Whether the board is selected as a favorite. */ + favourite?: boolean; + }[]; + }; + UserBean: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }; + UserBeanAvatarUrls: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + BoardFilterBean: { + /** Format: int64 */ + id?: number; + /** Format: uri */ + self?: string; + name?: string; + }; + PageBeanBoardFilterBean: { + /** Format: int32 */ + maxResults?: number; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + isLast?: boolean; + values?: { + /** Format: int64 */ + id?: number; + /** Format: uri */ + self?: string; + name?: string; + }[]; + }; + AvatarUrlsBean: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + /** @description A change item. */ + ChangeDetails: { + /** @description The name of the field changed. */ + field?: string; + /** @description The type of the field changed. */ + fieldtype?: string; + /** @description The ID of the field changed. */ + fieldId?: string; + /** @description The details of the original value. */ + from?: string; + /** @description The details of the original value as a string. */ + fromString?: string; + /** @description The details of the new value. */ + to?: string; + /** @description The details of the new value as a string. */ + toString?: string; + }; + /** @description A changelog. */ + Changelog: { + /** @description The ID of the changelog. */ + id?: string; + /** @description The user who made the change. */ + author?: { + /** @description The URL of the user. */ + self?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The email address of the user. Depending on the user’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + /** @description The display name of the user. Depending on the user’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null. */ + timeZone?: string; + /** @description The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user) */ + accountType?: string; + }; + /** + * Format: date-time + * @description The date on which the change took place. + */ + created?: string; + /** @description The list of items changed. */ + items?: readonly { + /** @description The name of the field changed. */ + field?: string; + /** @description The type of the field changed. */ + fieldtype?: string; + /** @description The ID of the field changed. */ + fieldId?: string; + /** @description The details of the original value. */ + from?: string; + /** @description The details of the original value as a string. */ + fromString?: string; + /** @description The details of the new value. */ + to?: string; + /** @description The details of the new value as a string. */ + toString?: string; + }[]; + /** @description The history metadata associated with the changed. */ + historyMetadata?: { + /** @description The type of the history record. */ + type?: string; + /** @description The description of the history record. */ + description?: string; + /** @description The description key of the history record. */ + descriptionKey?: string; + /** @description The activity described in the history record. */ + activityDescription?: string; + /** @description The key of the activity described in the history record. */ + activityDescriptionKey?: string; + /** @description The description of the email address associated the history record. */ + emailDescription?: string; + /** @description The description key of the email address associated the history record. */ + emailDescriptionKey?: string; + /** @description Details of the user whose action created the history record. */ + actor?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the system that generated the history record. */ + generator?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the cause that triggered the creation the history record. */ + cause?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Additional arbitrary information about the history record. */ + extraData?: { + [key: string]: string; + }; + [key: string]: unknown; + }; + }; + /** @description The metadata describing an issue field. */ + FieldMetadata: { + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description The name of the field. */ + name: string; + /** @description The key of the field. */ + key: string; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description Details of issue history metadata. */ + HistoryMetadata: { + /** @description The type of the history record. */ + type?: string; + /** @description The description of the history record. */ + description?: string; + /** @description The description key of the history record. */ + descriptionKey?: string; + /** @description The activity described in the history record. */ + activityDescription?: string; + /** @description The key of the activity described in the history record. */ + activityDescriptionKey?: string; + /** @description The description of the email address associated the history record. */ + emailDescription?: string; + /** @description The description key of the email address associated the history record. */ + emailDescriptionKey?: string; + /** @description Details of the user whose action created the history record. */ + actor?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the system that generated the history record. */ + generator?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the cause that triggered the creation the history record. */ + cause?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Additional arbitrary information about the history record. */ + extraData?: { + [key: string]: string; + }; + [key: string]: unknown; + }; + /** @description Details of user or system associated with a issue history metadata item. */ + HistoryMetadataParticipant: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + IncludedFields: { + included?: string[]; + actuallyIncluded?: string[]; + excluded?: string[]; + }; + /** @description Details about an issue. */ + IssueBean: { + /** @description Expand options that include additional issue details in the response. */ + expand?: string; + /** @description The ID of the issue. */ + id?: string; + /** + * Format: uri + * @description The URL of the issue details. + */ + self?: string; + /** @description The key of the issue. */ + key?: string; + /** @description The rendered value of each field present on the issue. */ + renderedFields?: { + [key: string]: unknown; + }; + /** @description Details of the issue properties identified in the request. */ + properties?: { + [key: string]: unknown; + }; + /** @description The ID and name of each field present on the issue. */ + names?: { + [key: string]: string; + }; + /** @description The schema describing each field present on the issue. */ + schema?: { + [key: string]: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + }; + /** @description The transitions that can be performed on the issue. */ + transitions?: readonly { + /** @description The ID of the issue transition. Required when specifying a transition to undertake. */ + id?: string; + /** @description The name of the issue transition. */ + name?: string; + /** @description Details of the issue status after the transition. */ + to?: { + /** @description The URL of the status. */ + self?: string; + /** @description The description of the status. */ + description?: string; + /** @description The URL of the icon used to represent the status. */ + iconUrl?: string; + /** @description The name of the status. */ + name?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The category assigned to the status. */ + statusCategory?: { + /** @description The URL of the status category. */ + self?: string; + /** + * Format: int64 + * @description The ID of the status category. + */ + id?: number; + /** @description The key of the status category. */ + key?: string; + /** @description The name of the color used to represent the status category. */ + colorName?: string; + /** @description The name of the status category. */ + name?: string; + [key: string]: unknown; + }; + [key: string]: unknown; + }; + /** @description Whether there is a screen associated with the issue transition. */ + hasScreen?: boolean; + /** @description Whether the issue transition is global, that is, the transition is applied to issues regardless of their status. */ + isGlobal?: boolean; + /** @description Whether this is the initial issue transition for the workflow. */ + isInitial?: boolean; + /** @description Whether the transition is available to be performed. */ + isAvailable?: boolean; + /** @description Whether the issue has to meet criteria before the issue transition is applied. */ + isConditional?: boolean; + /** @description Details of the fields associated with the issue transition screen. Use this information to populate `fields` and `update` in a transition request. */ + fields?: { + [key: string]: { + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description The name of the field. */ + name: string; + /** @description The key of the field. */ + key: string; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + }; + }; + /** @description Expand options that include additional transition details in the response. */ + expand?: string; + looped?: boolean; + [key: string]: unknown; + }[]; + /** @description The operations that can be performed on the issue. */ + operations?: components["schemas"]["Operations"]; + /** @description The metadata for the fields on the issue that can be amended. */ + editmeta?: { + fields?: { + [key: string]: { + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description The name of the field. */ + name: string; + /** @description The key of the field. */ + key: string; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + }; + }; + }; + /** @description Details of changelogs associated with the issue. */ + changelog?: { + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + /** @description The list of changelogs. */ + histories?: readonly { + /** @description The ID of the changelog. */ + id?: string; + /** @description The user who made the change. */ + author?: { + /** @description The URL of the user. */ + self?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The email address of the user. Depending on the user’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + /** @description The display name of the user. Depending on the user’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null. */ + timeZone?: string; + /** @description The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user) */ + accountType?: string; + }; + /** + * Format: date-time + * @description The date on which the change took place. + */ + created?: string; + /** @description The list of items changed. */ + items?: readonly { + /** @description The name of the field changed. */ + field?: string; + /** @description The type of the field changed. */ + fieldtype?: string; + /** @description The ID of the field changed. */ + fieldId?: string; + /** @description The details of the original value. */ + from?: string; + /** @description The details of the original value as a string. */ + fromString?: string; + /** @description The details of the new value. */ + to?: string; + /** @description The details of the new value as a string. */ + toString?: string; + }[]; + /** @description The history metadata associated with the changed. */ + historyMetadata?: { + /** @description The type of the history record. */ + type?: string; + /** @description The description of the history record. */ + description?: string; + /** @description The description key of the history record. */ + descriptionKey?: string; + /** @description The activity described in the history record. */ + activityDescription?: string; + /** @description The key of the activity described in the history record. */ + activityDescriptionKey?: string; + /** @description The description of the email address associated the history record. */ + emailDescription?: string; + /** @description The description key of the email address associated the history record. */ + emailDescriptionKey?: string; + /** @description Details of the user whose action created the history record. */ + actor?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the system that generated the history record. */ + generator?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the cause that triggered the creation the history record. */ + cause?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Additional arbitrary information about the history record. */ + extraData?: { + [key: string]: string; + }; + [key: string]: unknown; + }; + }[]; + }; + /** @description The versions of each field on the issue. */ + versionedRepresentations?: { + [key: string]: { + [key: string]: unknown; + }; + }; + fieldsToInclude?: { + included?: string[]; + actuallyIncluded?: string[]; + excluded?: string[]; + }; + fields?: { + [key: string]: unknown; + }; + }; + /** @description Details of an issue transition. */ + IssueTransition: { + /** @description The ID of the issue transition. Required when specifying a transition to undertake. */ + id?: string; + /** @description The name of the issue transition. */ + name?: string; + /** @description Details of the issue status after the transition. */ + to?: { + /** @description The URL of the status. */ + self?: string; + /** @description The description of the status. */ + description?: string; + /** @description The URL of the icon used to represent the status. */ + iconUrl?: string; + /** @description The name of the status. */ + name?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The category assigned to the status. */ + statusCategory?: { + /** @description The URL of the status category. */ + self?: string; + /** + * Format: int64 + * @description The ID of the status category. + */ + id?: number; + /** @description The key of the status category. */ + key?: string; + /** @description The name of the color used to represent the status category. */ + colorName?: string; + /** @description The name of the status category. */ + name?: string; + [key: string]: unknown; + }; + [key: string]: unknown; + }; + /** @description Whether there is a screen associated with the issue transition. */ + hasScreen?: boolean; + /** @description Whether the issue transition is global, that is, the transition is applied to issues regardless of their status. */ + isGlobal?: boolean; + /** @description Whether this is the initial issue transition for the workflow. */ + isInitial?: boolean; + /** @description Whether the transition is available to be performed. */ + isAvailable?: boolean; + /** @description Whether the issue has to meet criteria before the issue transition is applied. */ + isConditional?: boolean; + /** @description Details of the fields associated with the issue transition screen. Use this information to populate `fields` and `update` in a transition request. */ + fields?: { + [key: string]: { + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description The name of the field. */ + name: string; + /** @description The key of the field. */ + key: string; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + }; + }; + /** @description Expand options that include additional transition details in the response. */ + expand?: string; + looped?: boolean; + [key: string]: unknown; + }; + /** @description A list of editable field details. */ + IssueUpdateMetadata: { + fields?: { + [key: string]: { + /** @description Whether the field is required. */ + required: boolean; + /** @description The data type of the field. */ + schema: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description The name of the field. */ + name: string; + /** @description The key of the field. */ + key: string; + /** @description The URL that can be used to automatically complete the field. */ + autoCompleteUrl?: string; + /** @description Whether the field has a default value. */ + hasDefaultValue?: boolean; + /** @description The list of operations that can be performed on the field. */ + operations: readonly string[]; + /** @description The list of values allowed in the field. */ + allowedValues?: readonly unknown[]; + /** @description The default value of the field. */ + defaultValue?: unknown; + /** @description The configuration properties. */ + configuration?: { + [key: string]: unknown; + }; + }; + }; + }; + /** @description The schema of a field. */ + JsonTypeBean: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + /** @description Details a link group, which defines issue operations. */ + LinkGroup: { + id?: string; + styleClass?: string; + /** @description Details about the operations available in this version. */ + header?: { + id?: string; + styleClass?: string; + iconClass?: string; + label?: string; + title?: string; + href?: string; + /** Format: int32 */ + weight?: number; + }; + /** Format: int32 */ + weight?: number; + links?: { + id?: string; + styleClass?: string; + iconClass?: string; + label?: string; + title?: string; + href?: string; + /** Format: int32 */ + weight?: number; + }[]; + groups?: components["schemas"]["LinkGroup"][]; + }; + /** @description Details of the operations that can be performed on the issue. */ + Operations: { + /** @description Details of the link groups defining issue operations. */ + linkGroups?: readonly components["schemas"]["LinkGroup"][]; + [key: string]: unknown; + }; + /** @description A page of changelogs. */ + PageOfChangelogs: { + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + /** @description The list of changelogs. */ + histories?: readonly { + /** @description The ID of the changelog. */ + id?: string; + /** @description The user who made the change. */ + author?: { + /** @description The URL of the user. */ + self?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The email address of the user. Depending on the user’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + /** @description The display name of the user. Depending on the user’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null. */ + timeZone?: string; + /** @description The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user) */ + accountType?: string; + }; + /** + * Format: date-time + * @description The date on which the change took place. + */ + created?: string; + /** @description The list of items changed. */ + items?: readonly { + /** @description The name of the field changed. */ + field?: string; + /** @description The type of the field changed. */ + fieldtype?: string; + /** @description The ID of the field changed. */ + fieldId?: string; + /** @description The details of the original value. */ + from?: string; + /** @description The details of the original value as a string. */ + fromString?: string; + /** @description The details of the new value. */ + to?: string; + /** @description The details of the new value as a string. */ + toString?: string; + }[]; + /** @description The history metadata associated with the changed. */ + historyMetadata?: { + /** @description The type of the history record. */ + type?: string; + /** @description The description of the history record. */ + description?: string; + /** @description The description key of the history record. */ + descriptionKey?: string; + /** @description The activity described in the history record. */ + activityDescription?: string; + /** @description The key of the activity described in the history record. */ + activityDescriptionKey?: string; + /** @description The description of the email address associated the history record. */ + emailDescription?: string; + /** @description The description key of the email address associated the history record. */ + emailDescriptionKey?: string; + /** @description Details of the user whose action created the history record. */ + actor?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the system that generated the history record. */ + generator?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Details of the cause that triggered the creation the history record. */ + cause?: { + /** @description The ID of the user or system associated with a history record. */ + id?: string; + /** @description The display name of the user or system associated with a history record. */ + displayName?: string; + /** @description The key of the display name of the user or system associated with a history record. */ + displayNameKey?: string; + /** @description The type of the user or system associated with a history record. */ + type?: string; + /** @description The URL to an avatar for the user or system associated with a history record. */ + avatarUrl?: string; + /** @description The URL of the user or system associated with a history record. */ + url?: string; + [key: string]: unknown; + }; + /** @description Additional arbitrary information about the history record. */ + extraData?: { + [key: string]: string; + }; + [key: string]: unknown; + }; + }[]; + }; + /** @description The result of a JQL search. */ + SearchResults: { + /** @description Expand options that include additional search result details in the response. */ + expand?: string; + /** + * Format: int32 + * @description The index of the first item returned on the page. + */ + startAt?: number; + /** + * Format: int32 + * @description The maximum number of results that could be on the page. + */ + maxResults?: number; + /** + * Format: int32 + * @description The number of results on the page. + */ + total?: number; + /** @description The list of issues found by the search. */ + issues?: readonly components["schemas"]["IssueBean"][]; + /** @description Any warnings related to the JQL query. */ + warningMessages?: readonly string[]; + /** @description The ID and name of each field in the search results. */ + names?: { + [key: string]: string; + }; + /** @description The schema describing the field types in the search results. */ + schema?: { + [key: string]: { + /** @description The data type of the field. */ + type: string; + /** @description When the data type is an array, the name of the field items within the array. */ + items?: string; + /** @description If the field is a system field, the name of the field. */ + system?: string; + /** @description If the field is a custom field, the URI of the field. */ + custom?: string; + /** + * Format: int64 + * @description If the field is a custom field, the custom ID of the field. + */ + customId?: number; + /** @description If the field is a custom field, the configuration of the field. */ + configuration?: { + [key: string]: unknown; + }; + }; + }; + }; + /** @description Details about the operations available in this version. */ + SimpleLink: { + id?: string; + styleClass?: string; + iconClass?: string; + label?: string; + title?: string; + href?: string; + /** Format: int32 */ + weight?: number; + }; + /** @description A status category. */ + StatusCategory: { + /** @description The URL of the status category. */ + self?: string; + /** + * Format: int64 + * @description The ID of the status category. + */ + id?: number; + /** @description The key of the status category. */ + key?: string; + /** @description The name of the color used to represent the status category. */ + colorName?: string; + /** @description The name of the status category. */ + name?: string; + [key: string]: unknown; + }; + /** @description A status. */ + StatusDetails: { + /** @description The URL of the status. */ + self?: string; + /** @description The description of the status. */ + description?: string; + /** @description The URL of the icon used to represent the status. */ + iconUrl?: string; + /** @description The name of the status. */ + name?: string; + /** @description The ID of the status. */ + id?: string; + /** @description The category assigned to the status. */ + statusCategory?: { + /** @description The URL of the status category. */ + self?: string; + /** + * Format: int64 + * @description The ID of the status category. + */ + id?: number; + /** @description The key of the status category. */ + key?: string; + /** @description The name of the color used to represent the status category. */ + colorName?: string; + /** @description The name of the status category. */ + name?: string; + [key: string]: unknown; + }; + [key: string]: unknown; + }; + /** + * @description User details permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions: + * + * * User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank). + * * User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values. + * * User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values. + */ + UserDetails: { + /** @description The URL of the user. */ + self?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + name?: string; + /** @description This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. */ + key?: string; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The email address of the user. Depending on the user’s privacy settings, this may be returned as null. */ + emailAddress?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the item's 16x16 pixel avatar. + */ + "16x16"?: string; + /** + * Format: uri + * @description The URL of the item's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the item's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the item's 48x48 pixel avatar. + */ + "48x48"?: string; + }; + /** @description The display name of the user. Depending on the user’s privacy settings, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null. */ + timeZone?: string; + /** @description The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user) */ + accountType?: string; + }; + Entry: { + /** Format: int64 */ + issueId?: number; + issueKey?: string; + /** Format: int32 */ + status?: number; + errors?: string[]; + }; + PartialSuccessBean: { + entries?: { + /** Format: int64 */ + issueId?: number; + issueKey?: string; + /** Format: int32 */ + status?: number; + errors?: string[]; + }[]; + }; + BoardConfigBean: { + /** Format: int64 */ + id?: number; + name?: string; + type?: string; + /** Format: uri */ + self?: string; + location?: { + /** @enum {string} */ + type?: "project" | "user"; + projectKeyOrId?: string; + }; + filter?: { + id?: string; + /** Format: uri */ + self?: string; + }; + subQuery?: { + query?: string; + }; + columnConfig?: { + columns?: { + name?: string; + statuses?: { + id?: string; + /** Format: uri */ + self?: string; + }[]; + /** Format: int32 */ + min?: number; + /** Format: int32 */ + max?: number; + }[]; + constraintType?: string; + }; + estimation?: { + type?: string; + field?: { + fieldId?: string; + displayName?: string; + }; + }; + ranking?: { + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + ColumnBean: { + name?: string; + statuses?: { + id?: string; + /** Format: uri */ + self?: string; + }[]; + /** Format: int32 */ + min?: number; + /** Format: int32 */ + max?: number; + }; + ColumnConfigBean: { + columns?: { + name?: string; + statuses?: { + id?: string; + /** Format: uri */ + self?: string; + }[]; + /** Format: int32 */ + min?: number; + /** Format: int32 */ + max?: number; + }[]; + constraintType?: string; + }; + EstimationConfigBean: { + type?: string; + field?: { + fieldId?: string; + displayName?: string; + }; + }; + EstimationFieldBean: { + fieldId?: string; + displayName?: string; + }; + LocationBean: { + /** @enum {string} */ + type?: "project" | "user"; + projectKeyOrId?: string; + }; + RankingConfigBean: { + /** Format: int64 */ + rankCustomFieldId?: number; + }; + RelationBean: { + id?: string; + /** Format: uri */ + self?: string; + }; + SubqueryBean: { + query?: string; + }; + BoardCreateBean: { + name?: string; + /** @enum {string} */ + type?: "kanban" | "scrum" | "agility"; + /** Format: int64 */ + filterId?: number; + location?: { + /** @enum {string} */ + type?: "project" | "user"; + projectKeyOrId?: string; + }; + }; + EstimationConfigurationBean: { + /** @enum {string} */ + value?: "STORY_POINTS" | "ORIGINAL_ESTIMATE"; + localisedName?: string; + localisedDescription?: string; + }; + FeatureBean: { + /** @enum {string} */ + boardFeature?: + | "SIMPLE_ROADMAP" + | "BACKLOG" + | "SPRINTS" + | "DEVTOOLS" + | "REPORTS" + | "ESTIMATION" + | "PAGES" + | "CODE" + | "RELEASES" + | "DEPLOYMENTS" + | "ISSUE_NAVIGATOR" + | "ON_CALL_SCHEDULE" + | "BOARD"; + /** Format: int64 */ + boardId?: number; + /** @enum {string} */ + state?: "ENABLED" | "DISABLED" | "COMING_SOON"; + localisedName?: string; + localisedDescription?: string; + learnMoreLink?: string; + imageUri?: string; + /** @enum {string} */ + featureType?: "BASIC" | "ESTIMATION"; + localisedGroup?: string; + permissibleEstimationTypes?: { + /** @enum {string} */ + value?: "STORY_POINTS" | "ORIGINAL_ESTIMATE"; + localisedName?: string; + localisedDescription?: string; + }[]; + featureId?: string; + learnMoreArticleId?: string; + toggleLocked?: boolean; + }; + FeatureResponseBean: { + features?: { + /** @enum {string} */ + boardFeature?: + | "SIMPLE_ROADMAP" + | "BACKLOG" + | "SPRINTS" + | "DEVTOOLS" + | "REPORTS" + | "ESTIMATION" + | "PAGES" + | "CODE" + | "RELEASES" + | "DEPLOYMENTS" + | "ISSUE_NAVIGATOR" + | "ON_CALL_SCHEDULE" + | "BOARD"; + /** Format: int64 */ + boardId?: number; + /** @enum {string} */ + state?: "ENABLED" | "DISABLED" | "COMING_SOON"; + localisedName?: string; + localisedDescription?: string; + learnMoreLink?: string; + imageUri?: string; + /** @enum {string} */ + featureType?: "BASIC" | "ESTIMATION"; + localisedGroup?: string; + permissibleEstimationTypes?: { + /** @enum {string} */ + value?: "STORY_POINTS" | "ORIGINAL_ESTIMATE"; + localisedName?: string; + localisedDescription?: string; + }[]; + featureId?: string; + learnMoreArticleId?: string; + toggleLocked?: boolean; + }[]; + }; + FeatureToggleRequestBean: { + /** Format: int64 */ + boardId?: number; + feature?: string; + enabling?: boolean; + }; + FieldEditBean: { + value?: string; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} + +export type $defs = Record; + +export type external = Record; + +export interface operations { + /** + * Move issues to backlog + * @description Move issues to the backlog. + * This operation is equivalent to remove future and active sprints from a given set of issues. At most 50 issues may be moved at once. + */ + moveIssuesToBacklog: { + requestBody: { + content: { + /** + * @example { + * "issues": [ + * "PR-1",moveIssuesToBacklog + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to assign issues. */ + 403: { + content: never; + }; + /** @description Returned if sprint does not exist or the user cannot view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Move issues to backlog for board + * @description Move issues to the backlog of a particular board (if they are already on that board). + * This operation is equivalent to remove future and active sprints from a given set of issues if the board has sprints If the board does not have sprints this will put the issues back into the backlog from the board. At most 50 issues may be moved at once. + */ + moveIssuesToBacklogForBoard: { + parameters: { + path: { + boardId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "rankBeforeIssue": "PR-4", + * "rankCustomFieldId": 10521, + * "issues": [ + * "PR-1", + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + rankBeforeIssue?: string; + rankAfterIssue?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returns the list of issue with status of rank operation. */ + 207: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to assign issues. */ + 403: { + content: never; + }; + /** @description Returned if sprint does not exist or the user cannot view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all boards + * @description Returns all boards. This only includes boards that the user has permission to view. + * + * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024. + * + * * `read:board-scope:jira-software`, `read:project:jira` + */ + getAllBoards: { + parameters: { + query?: { + /** @description The starting index of the returned boards. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of boards to return per page. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + /** @description Filters results to boards of the specified types. Valid values: scrum, kanban, simple. */ + type?: Record; + /** @description Filters results to boards that match or partially match the specified name. */ + name?: string; + /** @description Filters results to boards that are relevant to a project. Relevance means that the jql filter defined in board contains a reference to a project. */ + projectKeyOrId?: string; + accountIdLocation?: string; + projectLocation?: string; + /** @description Appends private boards to the end of the list. The name and type fields are excluded for security reasons. */ + includePrivate?: boolean; + /** @description If set to true, negate filters used for querying by location. By default false. */ + negateLocationFiltering?: boolean; + /** @description Ordering of the results by a given field. If not provided, values will not be sorted. Valid values: name. */ + orderBy?: "name" | "-name" | "+name"; + /** @description List of fields to expand for each board. Valid values: admins, permissions. */ + expand?: string; + /** @description Filters results to boards that are relevant to a filter. Not supported for next-gen boards. */ + filterId?: number; + }; + }; + responses: { + /** @description Returns the requested boards, at the specified page of the results. */ + 200: { + content: { + "application/json": { + /** Format: int32 */ + maxResults?: number; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + isLast?: boolean; + values?: { + /** + * Format: int64 + * @description The ID of the board. + */ + id?: number; + /** + * Format: uri + * @description The URL of the board. + */ + self?: string; + /** @description The name of the board. */ + name?: string; + /** @description The type the board. */ + type?: string; + admins?: { + users?: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }[]; + groups?: { + name?: string; + /** Format: uri */ + self?: string; + }[]; + }; + /** @description The container that the board is located in. */ + location?: { + /** Format: int64 */ + projectId?: number; + /** Format: int64 */ + userId?: number; + userAccountId?: string; + displayName?: string; + projectName?: string; + projectKey?: string; + projectTypeKey?: string; + /** Format: uri */ + avatarURI?: string; + name?: string; + }; + /** @description Whether the board can be edited. */ + canEdit?: boolean; + /** @description Whether the board is private. */ + isPrivate?: boolean; + /** @description Whether the board is selected as a favorite. */ + favourite?: boolean; + }[]; + }; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have valid license. */ + 403: { + content: never; + }; + }; + }; + /** + * Create board + * @description Creates a new board. Board name, type and filter ID is required. + * + * * `name` \- Must be less than 255 characters. + * * `type` \- Valid values: scrum, kanban + * * `filterId` \- ID of a filter that the user has permissions to view. Note, if the user does not have the 'Create shared objects' permission and tries to create a shared board, a private board will be created instead (remember that board sharing depends on the filter sharing). + * * `location` \- The container that the board will be located in. `location` must include the `type` property (Valid values: project, user). If choosing 'project', then a project must be specified by a `projectKeyOrId` property in `location`. If choosing 'user', the current user is chosen by default. The `projectKeyOrId` property should not be provided. + * + * Note: + * + * * If you want to create a new project with an associated board, use the [Jira platform REST API](https://docs.atlassian.com/jira/REST/latest). For more information, see the [Create project](#api-rest-api-3-project-post) method. The `projectTypeKey` for software boards must be 'software' and the `projectTemplateKey` must be either `com.pyxis.greenhopper.jira:gh-kanban-template` or `com.pyxis.greenhopper.jira:gh-scrum-template`. + * * You can create a filter using the [Jira REST API](https://docs.atlassian.com/jira/REST/latest). For more information, see the [Create filter](#api-rest-api-3-filter-post) method. + * * If you do not ORDER BY the Rank field for the filter of your board, you will not be able to reorder issues on the board. + */ + createBoard: { + requestBody: { + content: { + /** + * @example { + * "filterId": 10040, + * "name": "scrum board", + * "location": { + * "projectKeyOrId": "10000", + * "type": "project" + * }, + * "type": "scrum" + * } + */ + "application/json": { + name?: string; + /** @enum {string} */ + type?: "kanban" | "scrum" | "agility"; + /** Format: int64 */ + filterId?: number; + location?: { + /** @enum {string} */ + type?: "project" | "user"; + projectKeyOrId?: string; + }; + }; + }; + }; + responses: { + /** @description Returns the created board. */ + 201: { + content: { + "application/json": { + /** + * Format: int64 + * @description The ID of the board. + */ + id?: number; + /** + * Format: uri + * @description The URL of the board. + */ + self?: string; + /** @description The name of the board. */ + name?: string; + /** @description The type the board. */ + type?: string; + admins?: { + users?: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }[]; + groups?: { + name?: string; + /** Format: uri */ + self?: string; + }[]; + }; + /** @description The container that the board is located in. */ + location?: { + /** Format: int64 */ + projectId?: number; + /** Format: int64 */ + userId?: number; + userAccountId?: string; + displayName?: string; + projectName?: string; + projectKey?: string; + projectTypeKey?: string; + /** Format: uri */ + avatarURI?: string; + name?: string; + }; + /** @description Whether the board can be edited. */ + canEdit?: boolean; + /** @description Whether the board is private. */ + isPrivate?: boolean; + /** @description Whether the board is selected as a favorite. */ + favourite?: boolean; + }; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + }; + }; + /** + * Get board by filter id + * @description Returns any boards which use the provided filter id. This method can be executed by users without a valid software license in order to find which boards are using a particular filter. + */ + getBoardByFilterId: { + parameters: { + query?: { + /** @description The starting index of the returned boards. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of boards to return per page. Default: 50. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + }; + path: { + /** @description Filters results to boards that are relevant to a filter. Not supported for next-gen boards. */ + filterId: number; + }; + }; + responses: { + /** @description Returns the requested boards, at the specified page of the results. */ + 200: { + content: { + "application/json": { + /** Format: int32 */ + maxResults?: number; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + isLast?: boolean; + values?: { + /** Format: int64 */ + id?: number; + /** Format: uri */ + self?: string; + name?: string; + }[]; + }; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + }; + }; + /** + * Get board + * @description Returns the board for the given board ID. This board will only be returned if the user has permission to view it. Admins without the view permission will see the board as a private one, so will see only a subset of the board's data (board location for instance). + */ + getBoard: { + parameters: { + path: { + /** @description The ID of the requested board. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested board. */ + 200: { + content: { + "application/json": { + /** + * Format: int64 + * @description The ID of the board. + */ + id?: number; + /** + * Format: uri + * @description The URL of the board. + */ + self?: string; + /** @description The name of the board. */ + name?: string; + /** @description The type the board. */ + type?: string; + admins?: { + users?: { + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The key of the user. + */ + key?: string; + /** + * Format: uri + * @description The URL of the user. + */ + self?: string; + /** + * @description This property is deprecated in favor of `accountId` because of privacy changes. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. + * The username of the user. + */ + name?: string; + /** @description The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. */ + displayName?: string; + /** @description Whether the user is active. */ + active?: boolean; + /** @description The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. */ + accountId?: string; + /** @description The avatars of the user. */ + avatarUrls?: { + /** + * Format: uri + * @description The URL of the user's 24x24 pixel avatar. + */ + "24x24"?: string; + /** + * Format: uri + * @description The URL of the user's 32x32 pixel avatar. + */ + "32x32"?: string; + /** + * Format: uri + * @description The URL of the user's 48x48 pixel avatar. + */ + "48x48"?: string; + /** + * Format: uri + * @description The URL of the user's 16x16 pixel avatar. + */ + "16x16"?: string; + }; + }[]; + groups?: { + name?: string; + /** Format: uri */ + self?: string; + }[]; + }; + /** @description The container that the board is located in. */ + location?: { + /** Format: int64 */ + projectId?: number; + /** Format: int64 */ + userId?: number; + userAccountId?: string; + displayName?: string; + projectName?: string; + projectKey?: string; + projectTypeKey?: string; + /** Format: uri */ + avatarURI?: string; + name?: string; + }; + /** @description Whether the board can be edited. */ + canEdit?: boolean; + /** @description Whether the board is private. */ + isPrivate?: boolean; + /** @description Whether the board is selected as a favorite. */ + favourite?: boolean; + }; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete board + * @description Deletes the board. Admin without the view permission can still remove the board. + */ + deleteBoard: { + parameters: { + path: { + /** @description ID of the board to be deleted */ + boardId: number; + }; + }; + responses: { + /** @description Returned if the board has been successfully removed. */ + 204: { + content: never; + }; + /** @description Returned if the user does not a have valid license, or when the user does not have the permission to delete the board, or when the user tried to delete a next-gen board. The user has to be a Jira Administrator or a board administrator to remove the board. Next-gen boards cannot be deleted, because next-gen software projects must have a board. */ + 403: { + content: never; + }; + /** @description Returned if a board with the given ID does not exist or the user does not have the permission to view the board. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issues for backlog + * @description Returns all issues from the board's backlog, for the given board ID. This only includes issues that the user has permission to view. The backlog contains incomplete issues that are not assigned to any future or active sprint. Note, if the user does not have permission to view the board, no issues will be returned at all. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + getIssuesForBacklog: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. Default: 50. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** + * @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. + * Note that `username` and `userkey` can't be used as search terms for this parameter due to privacy reasons. Use `accountId` instead. + */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description This parameter is currently not used. */ + expand?: string; + }; + path: { + /** @description The ID of the board that has the backlog containing the requested issues. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["SearchResults"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get configuration + * @description Get the board configuration. The response contains the following fields: + * + * * `id` \- ID of the board. + * * `name` \- Name of the board. + * * `filter` \- Reference to the filter used by the given board. + * * `location` \- Reference to the container that the board is located in. Includes the container type (Valid values: project, user). + * * `subQuery` (Kanban only) - JQL subquery used by the given board. + * * `columnConfig` \- The column configuration lists the columns for the board, in the order defined in the column configuration. For each column, it shows the issue status mapping as well as the constraint type (Valid values: none, issueCount, issueCountExclSubs) for the min/max number of issues. Note, the last column with statuses mapped to it is treated as the "Done" column, which means that issues in that column will be marked as already completed. + * * `estimation` (Scrum only) - Contains information about type of estimation used for the board. Valid values: none, issueCount, field. If the estimation type is "field", the ID and display name of the field used for estimation is also returned. Note, estimates for an issue can be updated by a PUT /rest/api/3/issue/\{issueIdOrKey\} request, however the fields must be on the screen. "timeoriginalestimate" field will never be on the screen, so in order to update it "originalEstimate" in "timetracking" field should be updated. + * * `ranking` \- Contains information about custom field used for ranking in the given board. + */ + getConfiguration: { + parameters: { + path: { + /** @description The ID of the board for which configuration is requested. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the configuration of the board for given boardId. */ + 200: { + content: { + "application/json": { + /** Format: int64 */ + id?: number; + name?: string; + type?: string; + /** Format: uri */ + self?: string; + location?: { + /** @enum {string} */ + type?: "project" | "user"; + projectKeyOrId?: string; + }; + filter?: { + id?: string; + /** Format: uri */ + self?: string; + }; + subQuery?: { + query?: string; + }; + columnConfig?: { + columns?: { + name?: string; + statuses?: { + id?: string; + /** Format: uri */ + self?: string; + }[]; + /** Format: int32 */ + min?: number; + /** Format: int32 */ + max?: number; + }[]; + constraintType?: string; + }; + estimation?: { + type?: string; + field?: { + fieldId?: string; + displayName?: string; + }; + }; + ranking?: { + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user cannot view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get epics + * @description Returns all epics from the board, for the given board ID. This only includes epics that the user has permission to view. Note, if the user does not have permission to view the board, no epics will be returned at all. + */ + getEpics: { + parameters: { + query?: { + /** @description The starting index of the returned epics. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of epics to return per page. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + /** @description Filters results to epics that are either done or not done. Valid values: true, false. */ + done?: string; + }; + path: { + /** @description The ID of the board that contains the requested epics. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested epics, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issues without epic for board + * @description Returns all issues that do not belong to any epic on a board, for a given board ID. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + getIssuesWithoutEpicForBoard: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** + * @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. + * Note that `username` and `userkey` can't be used as search terms for this parameter due to privacy reasons. Use `accountId` instead. + */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + path: { + /** @description The ID of the board that contains the requested issues. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get board issues for epic + * @description Returns all issues that belong to an epic on the board, for the given epic ID and the board ID. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + getBoardIssuesForEpic: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. Default: 50. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + path: { + /** @description The ID of the board that contains the requested issues. */ + boardId: number; + /** @description The ID of the epic that contains the requested issues. */ + epicId: number; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** Get features for board */ + getFeaturesForBoard: { + parameters: { + path: { + boardId: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": { + features?: { + /** @enum {string} */ + boardFeature?: + | "SIMPLE_ROADMAP" + | "BACKLOG" + | "SPRINTS" + | "DEVTOOLS" + | "REPORTS" + | "ESTIMATION" + | "PAGES" + | "CODE" + | "RELEASES" + | "DEPLOYMENTS" + | "ISSUE_NAVIGATOR" + | "ON_CALL_SCHEDULE" + | "BOARD"; + /** Format: int64 */ + boardId?: number; + /** @enum {string} */ + state?: "ENABLED" | "DISABLED" | "COMING_SOON"; + localisedName?: string; + localisedDescription?: string; + learnMoreLink?: string; + imageUri?: string; + /** @enum {string} */ + featureType?: "BASIC" | "ESTIMATION"; + localisedGroup?: string; + permissibleEstimationTypes?: { + /** @enum {string} */ + value?: "STORY_POINTS" | "ORIGINAL_ESTIMATE"; + localisedName?: string; + localisedDescription?: string; + }[]; + featureId?: string; + learnMoreArticleId?: string; + toggleLocked?: boolean; + }[]; + }; + }; + }; + }; + }; + /** Toggle features */ + toggleFeatures: { + parameters: { + path: { + boardId: number; + }; + }; + requestBody: { + content: { + "application/json": { + /** Format: int64 */ + boardId?: number; + feature?: string; + enabling?: boolean; + }; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": { + features?: { + /** @enum {string} */ + boardFeature?: + | "SIMPLE_ROADMAP" + | "BACKLOG" + | "SPRINTS" + | "DEVTOOLS" + | "REPORTS" + | "ESTIMATION" + | "PAGES" + | "CODE" + | "RELEASES" + | "DEPLOYMENTS" + | "ISSUE_NAVIGATOR" + | "ON_CALL_SCHEDULE" + | "BOARD"; + /** Format: int64 */ + boardId?: number; + /** @enum {string} */ + state?: "ENABLED" | "DISABLED" | "COMING_SOON"; + localisedName?: string; + localisedDescription?: string; + learnMoreLink?: string; + imageUri?: string; + /** @enum {string} */ + featureType?: "BASIC" | "ESTIMATION"; + localisedGroup?: string; + permissibleEstimationTypes?: { + /** @enum {string} */ + value?: "STORY_POINTS" | "ORIGINAL_ESTIMATE"; + localisedName?: string; + localisedDescription?: string; + }[]; + featureId?: string; + learnMoreArticleId?: string; + toggleLocked?: boolean; + }[]; + }; + }; + }; + }; + }; + /** + * Get issues for board + * @description Returns all issues from a board, for a given board ID. This only includes issues that the user has permission to view. An issue belongs to the board if its status is mapped to the board's column. Epic issues do not belongs to the scrum boards. Note, if the user does not have permission to view the board, no issues will be returned at all. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. + */ + getIssuesForBoard: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** + * @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. + * Note that `username` and `userkey` can't be used as search terms for this parameter due to privacy reasons. Use `accountId` instead. + */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description This parameter is currently not used. */ + expand?: string; + }; + path: { + /** @description The ID of the board that contains the requested issues. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": components["schemas"]["SearchResults"]; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Move issues to board + * @description Move issues from the backog to the board (if they are already in the backlog of that board). + * This operation either moves an issue(s) onto a board from the backlog (by adding it to the issueList for the board) Or transitions the issue(s) to the first column for a kanban board with backlog. At most 50 issues may be moved at once. + */ + moveIssuesToBoard: { + parameters: { + path: { + boardId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "rankBeforeIssue": "PR-4", + * "rankCustomFieldId": 10521, + * "issues": [ + * "PR-1", + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + rankBeforeIssue?: string; + rankAfterIssue?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returns the list of issue with status of rank operation. */ + 207: { + content: { + "application/json": { + entries?: { + /** Format: int64 */ + issueId?: number; + issueKey?: string; + /** Format: int32 */ + status?: number; + errors?: string[]; + }[]; + }; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to assign issues. */ + 403: { + content: never; + }; + }; + }; + /** + * Get projects + * @description Returns all projects that are associated with the board, for the given board ID. If the user does not have permission to view the board, no projects will be returned at all. Returned projects are ordered by the name. + * + * A project is associated with a board if the board filter contains reference the project or there is an issue from the project that belongs to the board. + * + * The board filter contains reference the project only if JQL query guarantees that returned issues will be returned from the project set defined in JQL. For instance the query `project in (ABC, BCD) AND reporter = admin` have reference to ABC and BCD projects but query `project in (ABC, BCD) OR reporter = admin` doesn't have reference to any project. + * + * An issue belongs to the board if its status is mapped to the board's column. Epic issues do not belongs to the scrum boards. + */ + getProjects: { + parameters: { + query?: { + /** @description The starting index of the returned projects. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of projects to return per page. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + }; + path: { + /** @description The ID of the board that contains returned projects. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the board's projects, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user does not have permission to access it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get projects full + * @description Returns all projects that are statically associated with the board, for the given board ID. Returned projects are ordered by the name. + * + * A project is associated with a board if the board filter contains reference the project. + * + * The board filter contains reference the project only if JQL query guarantees that returned issues will be returned from the project set defined in JQL. For instance the query `project in (ABC, BCD) AND reporter = admin` have reference to ABC and BCD projects but query `project in (ABC, BCD) OR reporter = admin` doesn't have reference to any project. + */ + getProjectsFull: { + parameters: { + path: { + /** @description The ID of the board that contains returned projects. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the board's projects, at the specified page of the results. */ + 200: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user does not have permission to access it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get board property keys + * @description Returns the keys of all properties for the board identified by the id. The user who retrieves the property keys is required to have permissions to view the board. + */ + getBoardPropertyKeys: { + parameters: { + path: { + /** @description the ID of the board from which property keys will be returned. */ + boardId: string; + }; + }; + responses: { + /** @description Returned if the board with given id exists. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the boardId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the board with given id does not exist, or if the property with given key is not found, or the user doesn't have permissions to see it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get board property + * @description Returns the value of the property with a given key from the board identified by the provided id. The user who retrieves the property is required to have permissions to view the board. + */ + getBoardProperty: { + parameters: { + path: { + /** @description the ID of the board from which the property will be returned. */ + boardId: string; + /** @description the key of the property to return. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the board exists and the property was found. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the boardId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the board with given id does not exist, or if the property with given key is not found, or the user doesn't have permissions to see it. */ + 404: { + content: never; + }; + }; + }; + /** + * Set board property + * @description Sets the value of the specified board's property. + * + * You can use this resource to store a custom data against the board identified by the id. The user who stores the data is required to have permissions to modify the board. + */ + setBoardProperty: { + parameters: { + path: { + /** @description the ID of the board on which the property will be set. */ + boardId: string; + /** @description the key of the board's property. The maximum length of the key is 255 bytes. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the board property is successfully updated. */ + 200: { + content: never; + }; + /** @description Returned if the board property is successfully created. */ + 201: { + content: never; + }; + /** @description Returned if the boardId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the board with given id does not exist or the user doesn't have permissions to see it. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete board property + * @description Removes the property from the board identified by the id. Ths user removing the property is required to have permissions to modify the board. + */ + deleteBoardProperty: { + parameters: { + path: { + /** @description the id of the board from which the property will be removed. */ + boardId: string; + /** @description the key of the property to remove. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the board property was removed successfully. */ + 204: { + content: never; + }; + /** @description Returned if the boardId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the board with given id does not exist, or if the property with given key is not found, or the user doesn't have permissions to see it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all quick filters + * @description Returns all quick filters from a board, for a given board ID. + */ + getAllQuickFilters: { + parameters: { + query?: { + /** @description The starting index of the returned quick filters. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of sprints to return per page. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + }; + path: { + /** @description The ID of the board that contains the requested quick filters. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested quick filters, at the specified page of the results. Quick filters will be ordered first by position. */ + 200: { + content: { + "application/json": { + /** Format: int32 */ + maxResults?: number; + /** Format: int64 */ + startAt?: number; + /** Format: int64 */ + total?: number; + isLast?: boolean; + values?: { + /** Format: int64 */ + id?: number; + /** Format: int64 */ + boardId?: number; + name?: string; + jql?: string; + description?: string; + /** Format: int32 */ + position?: number; + }[]; + }; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get quick filter + * @description Returns the quick filter for a given quick filter ID. The quick filter will only be returned if the user can view the board that the quick filter belongs to. + */ + getQuickFilter: { + parameters: { + path: { + boardId: number; + /** @description The ID of the requested quick filter. */ + quickFilterId: number; + }; + }; + responses: { + /** @description Returns the requested quick filter. */ + 200: { + content: { + "application/json": { + /** Format: int64 */ + id?: number; + /** Format: int64 */ + boardId?: number; + name?: string; + jql?: string; + description?: string; + /** Format: int32 */ + position?: number; + }; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board with given id does not exist or if the quick filter with given id is not found or the user doesn't have permissions to see it. */ + 404: { + content: never; + }; + }; + }; + /** Get reports for board */ + getReportsForBoard: { + parameters: { + path: { + boardId: number; + }; + }; + responses: { + /** @description 200 response */ + 200: { + content: { + "application/json": { + reports?: Record[]; + }; + }; + }; + }; + }; + /** + * Get all sprints + * @description Returns all sprints from a board, for a given board ID. This only includes sprints that the user has permission to view. + */ + getAllSprints: { + parameters: { + query?: { + /** @description The starting index of the returned sprints. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of sprints to return per page. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + /** @description Filters results to sprints in specified states. Valid values: future, active, closed. You can define multiple states separated by commas, e.g. state=active,closed */ + state?: Record; + }; + path: { + /** @description The ID of the board that contains the requested sprints. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested sprints, at the specified page of the results. Sprints will be ordered first by state (i.e. closed, active, future) then by their position in the backlog. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get board issues for sprint + * @description Get all issues you have access to that belong to the sprint from the board. Issue returned from this resource contains additional fields like: sprint, closedSprints, flagged and epic. Issues are returned ordered by rank. JQL order has higher priority than default rank. + */ + getBoardIssuesForSprint: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** + * @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. + * Note that `username` and `userkey` can't be used as search terms for this parameter due to privacy reasons. Use `accountId` instead. + */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + path: { + /** @description The ID of the board that contains requested issues. */ + boardId: number; + /** @description The ID of the sprint that contains requested issues. */ + sprintId: number; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get all versions + * @description Returns all versions from a board, for a given board ID. This only includes versions that the user has permission to view. Note, if the user does not have permission to view the board, no versions will be returned at all. Returned versions are ordered by the name of the project from which they belong and then by sequence defined by user. + */ + getAllVersions: { + parameters: { + query?: { + /** @description The starting index of the returned versions. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of versions to return per page. See the 'Pagination' section at the top of this page for more details. */ + maxResults?: number; + /** @description Filters results to versions that are either released or unreleased. Valid values: true, false. */ + released?: string; + }; + path: { + /** @description The ID of the board that contains the requested versions. */ + boardId: number; + }; + }; + responses: { + /** @description Returns the requested versions, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issues without epic + * @description Returns all issues that do not belong to any epic. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. **Note:** If you are querying a next-gen project, do not use this operation. Instead, search for issues that don't belong to an epic by using the [Search for issues using JQL](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-get) operation in the Jira platform REST API. Build your JQL query using the `parent is empty` clause. For more information on the `parent` JQL field, see [Advanced searching](https://confluence.atlassian.com/x/dAiiLQ#Advancedsearching-fieldsreference-Parent). + */ + getIssuesWithoutEpic: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + }; + }; + /** + * Remove issues from epic + * @description Removes issues from epics. The user needs to have the edit issue permission for all issue they want to remove from epics. The maximum number of issues that can be moved in one operation is 50. **Note:** This operation does not work for epics in next-gen projects. Instead, update the issue using `\{ fields: \{ parent: \{\} \} \}` + */ + removeIssuesFromEpic: { + requestBody: { + content: { + /** + * @example { + * "issues": [ + * "PR-1", + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license or does not have permission to assign issues. */ + 403: { + content: never; + }; + /** @description Returned if the epic does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get epic + * @description Returns the epic for a given epic ID. This epic will only be returned if the user has permission to view it. **Note:** This operation does not work for epics in next-gen projects. + */ + getEpic: { + parameters: { + path: { + /** @description The id or key of the requested epic. */ + epicIdOrKey: string; + }; + }; + responses: { + /** @description Returns the requested epic. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the epic does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Partially update epic + * @description Performs a partial update of the epic. A partial update means that fields not present in the request JSON will not be updated. Valid values for color are `color_1` to `color_9`. **Note:** This operation does not work for epics in next-gen projects. + */ + partiallyUpdateEpic: { + parameters: { + path: { + /** @description The id or key of the epic to update. */ + epicIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "summary": "epic 2 summary", + * "color": { + * "key": "color_6" + * }, + * "name": "epic 2", + * "done": true + * } + */ + "application/json": { + name?: string; + summary?: string; + color?: { + /** @enum {string} */ + key?: + | "color_1" + | "color_2" + | "color_3" + | "color_4" + | "color_5" + | "color_6" + | "color_7" + | "color_8" + | "color_9" + | "color_10" + | "color_11" + | "color_12" + | "color_13" + | "color_14"; + }; + done?: boolean; + }; + }; + }; + responses: { + /** @description Updated epic */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license or edit issue permission. */ + 403: { + content: never; + }; + /** @description Returned if the epic does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issues for epic + * @description Returns all issues that belong to the epic, for the given epic ID. This only includes issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned issues are ordered by rank. **Note:** If you are querying a next-gen project, do not use this operation. Instead, search for issues that belong to an epic by using the [Search for issues using JQL](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-get) operation in the Jira platform REST API. Build your JQL query using the `parent` clause. For more information on the `parent` JQL field, see [Advanced searching](https://confluence.atlassian.com/x/dAiiLQ#Advancedsearching-fieldsreference-Parent). + */ + getIssuesForEpic: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. Default: 50. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** + * @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. + * Note that `username` and `userkey` can't be used as search terms for this parameter due to privacy reasons. Use `accountId` instead. + */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + path: { + /** @description The id or key of the epic that contains the requested issues. */ + epicIdOrKey: string; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the epic does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Move issues to epic + * @description Moves issues to an epic, for a given epic id. Issues can be only in a single epic at the same time. That means that already assigned issues to an epic, will not be assigned to the previous epic anymore. The user needs to have the edit issue permission for all issue they want to move and to the epic. The maximum number of issues that can be moved in one operation is 50. **Note:** This operation does not work for epics in next-gen projects. + */ + moveIssuesToEpic: { + parameters: { + path: { + /** @description The id or key of the epic that you want to assign issues to. */ + epicIdOrKey: string; + }; + }; + requestBody: { + content: { + /** + * @example { + * "issues": [ + * "PR-1", + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license or does not have edit issue permission for all issues to assign or for the epic. */ + 403: { + content: never; + }; + /** @description Returned if the epic does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Rank epics + * @description Moves (ranks) an epic before or after a given epic. + * + * If rankCustomFieldId is not defined, the default rank field will be used. + * + * **Note:** This operation does not work for epics in next-gen projects. + */ + rankEpics: { + parameters: { + path: { + /** @description The id or key of the epic to rank. */ + epicIdOrKey: string; + }; + }; + /** @description bean which contains the information where the given epic should be ranked. */ + requestBody: { + content: { + /** + * @example { + * "rankBeforeEpic": "10000", + * "rankCustomFieldId": 10521 + * } + */ + "application/json": { + rankBeforeEpic?: string; + rankAfterEpic?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to rank. To rank issues user have to have schedule issue permission for epics that they want to rank. */ + 403: { + content: never; + }; + /** @description Returned when the given epics in the path parameter or the request body do not exist. */ + 404: { + content: never; + }; + }; + }; + /** + * Rank issues + * @description Moves (ranks) issues before or after a given issue. At most 50 issues may be ranked at once. + * + * This operation may fail for some issues, although this will be rare. In that case the 207 status code is returned for the whole response and detailed information regarding each issue is available in the response body. + * + * If rankCustomFieldId is not defined, the default rank field will be used. + */ + rankIssues: { + /** @description bean which contains list of issues to rank and information where it should be ranked. */ + requestBody: { + content: { + /** + * @example { + * "rankBeforeIssue": "PR-4", + * "rankCustomFieldId": 10521, + * "issues": [ + * "PR-1", + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + rankBeforeIssue?: string; + rankAfterIssue?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returns the list of issue with status of rank operation. */ + 207: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to rank. To rank issues user has to have schedule issue permission for issues that they want to rank. */ + 403: { + content: never; + }; + }; + }; + /** + * Get issue + * @description Returns a single issue, for a given issue ID or issue key. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. + */ + getIssue: { + parameters: { + query?: { + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + /** @description A boolean indicating whether the issue retrieved by this method should be added to the current user's issue history */ + updateHistory?: boolean; + }; + path: { + /** @description The ID or key of the requested issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the requested issue. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** + * @description Returned in these cases: + * + * * the issue does not exist + * * the user does not have permission to view issue + */ + 404: { + content: never; + }; + }; + }; + /** + * Get issue estimation for board + * @description Returns the estimation of the issue and a fieldId of the field that is used for it. `boardId` param is required. This param determines which field will be updated on a issue. + * + * Original time internally stores and returns the estimation as a number of seconds. + * + * The field used for estimation on the given board can be obtained from [board configuration resource](#agile/1.0/board-getConfiguration). More information about the field are returned by [edit meta resource](#api-rest-api-3-issue-getEditIssueMeta) or [field resource](#api-rest-api-3-field-get). + */ + getIssueEstimationForBoard: { + parameters: { + query?: { + /** @description The ID of the board required to determine which field is used for estimation. */ + boardId?: number; + }; + path: { + /** @description The ID or key of the requested issue. */ + issueIdOrKey: string; + }; + }; + responses: { + /** @description Returns the estimation of the issue and a fieldId of the field that is used for it. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the boardId was not provided, field does not exists or value was in wrong format. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to edit issue. */ + 403: { + content: never; + }; + /** + * @description Returned in these cases: + * + * * the issue does not exist + * * the user does not have permission to view issue + * * the board does not exist + * * the user does not have permission to view board + * * the issue does not belong to the board + */ + 404: { + content: never; + }; + }; + }; + /** + * Estimate issue for board + * @description Updates the estimation of the issue. boardId param is required. This param determines which field will be updated on a issue. + * + * Note that this resource changes the estimation field of the issue regardless of appearance the field on the screen. + * + * Original time tracking estimation field accepts estimation in formats like "1w", "2d", "3h", "20m" or number which represent number of minutes. However, internally the field stores and returns the estimation as a number of seconds. + * + * The field used for estimation on the given board can be obtained from [board configuration resource](#agile/1.0/board-getConfiguration). More information about the field are returned by [edit meta resource](#api-rest-api-3-issue-issueIdOrKey-editmeta-get) or [field resource](#api-rest-api-3-field-get). + */ + estimateIssueForBoard: { + parameters: { + query?: { + /** @description The ID of the board required to determine which field is used for estimation. */ + boardId?: number; + }; + path: { + /** @description The ID or key of the requested issue. */ + issueIdOrKey: string; + }; + }; + /** @description bean that contains value of a new estimation. */ + requestBody: { + content: { + /** + * @example { + * "value": "8.0" + * } + */ + "application/json": { + value?: string; + }; + }; + }; + responses: { + /** @description Returns the estimation of the issue and a fieldId of the field that is used for it. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the boardId was not provided, field does not exists or value was in wrong format. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if user does not a have valid license or does not have permission to edit issue. */ + 403: { + content: never; + }; + /** + * @description Returned in these cases: + * + * * the issue does not exist + * * the user does not have permission to view issue + * * the board does not exist + * * the user does not have permission to view board + * * the issue does not belong to the board + */ + 404: { + content: never; + }; + }; + }; + /** + * Create sprint + * @description Creates a future sprint. Sprint name and origin board id are required. Start date, end date, and goal are optional. + * + * Note that the sprint name is trimmed. Also, when starting sprints from the UI, the "endDate" set through this call is ignored and instead the last sprint's duration is used to fill the form. + */ + createSprint: { + requestBody: { + content: { + /** + * @example { + * "originBoardId": 5, + * "goal": "sprint 1 goal", + * "endDate": "2015-04-20T01:22:00.000+10:00", + * "name": "sprint 1", + * "startDate": "2015-04-11T15:22:00.000+10:00" + * } + */ + "application/json": { + name?: string; + startDate?: string; + endDate?: string; + /** Format: int64 */ + originBoardId?: number; + goal?: string; + }; + }; + }; + responses: { + /** @description Created sprint */ + 201: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the board does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get sprint + * @description Returns the sprint for a given sprint ID. The sprint will only be returned if the user can view the board that the sprint was created on, or view at least one of the issues in the sprint. + */ + getSprint: { + parameters: { + path: { + /** @description The ID of the requested sprint. */ + sprintId: number; + }; + }; + responses: { + /** @description Returns the requested sprint. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the sprint does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Update sprint + * @description Performs a full update of a sprint. A full update means that the result will be exactly the same as the request body. Any fields not present in the request JSON will be set to null. + * + * Notes: + * + * * Sprints that are in a closed state cannot be updated. + * * A sprint can be started by updating the state to 'active'. This requires the sprint to be in the 'future' state and have a startDate and endDate set. + * * A sprint can be completed by updating the state to 'closed'. This action requires the sprint to be in the 'active' state. This sets the completeDate to the time of the request. + * * Other changes to state are not allowed. + * * The completeDate field cannot be updated manually. + */ + updateSprint: { + parameters: { + path: { + /** @description the ID of the sprint to update. */ + sprintId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "goal": "sprint 1 goal", + * "endDate": "2015-04-16T14:01:00.000+10:00", + * "name": "sprint 1", + * "state": "closed", + * "startDate": "2015-04-11T15:36:00.000+10:00", + * "completeDate": "2015-04-20T11:11:28.008+10:00" + * } + */ + "application/json": { + /** Format: int64 */ + id?: number; + /** Format: uri */ + self?: string; + state?: string; + name?: string; + startDate?: string; + endDate?: string; + completeDate?: string; + createdDate?: string; + /** Format: int64 */ + originBoardId?: number; + goal?: string; + }; + }; + }; + responses: { + /** @description Updated sprint */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the sprint does not exist. */ + 404: { + content: never; + }; + }; + }; + /** + * Partially update sprint + * @description Performs a partial update of a sprint. A partial update means that fields not present in the request JSON will not be updated. + * + * Notes: + * + * * Sprints that are in a closed state cannot be updated. + * * A sprint can be started by updating the state to 'active'. This requires the sprint to be in the 'future' state and have a startDate and endDate set. + * * A sprint can be completed by updating the state to 'closed'. This action requires the sprint to be in the 'active' state. This sets the completeDate to the time of the request. + * * Other changes to state are not allowed. + * * The completeDate field cannot be updated manually. + */ + partiallyUpdateSprint: { + parameters: { + path: { + /** @description The ID of the sprint to update. */ + sprintId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "name": "new name" + * } + */ + "application/json": { + /** Format: int64 */ + id?: number; + /** Format: uri */ + self?: string; + state?: string; + name?: string; + startDate?: string; + endDate?: string; + completeDate?: string; + createdDate?: string; + /** Format: int64 */ + originBoardId?: number; + goal?: string; + }; + }; + }; + responses: { + /** @description Updated sprint */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if the sprint does not exist. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete sprint + * @description Deletes a sprint. Once a sprint is deleted, all open issues in the sprint will be moved to the backlog. + */ + deleteSprint: { + parameters: { + path: { + /** @description The ID of the sprint to delete. */ + sprintId: number; + }; + }; + responses: { + /** @description Returned if the sprint was deleted successfully */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license or does not have permission to delete sprints. */ + 403: { + content: never; + }; + /** @description Returned if the sprint does not exist. */ + 404: { + content: never; + }; + }; + }; + /** + * Get issues for sprint + * @description Returns all issues in a sprint, for a given sprint ID. This only includes issues that the user has permission to view. By default, the returned issues are ordered by rank. + */ + getIssuesForSprint: { + parameters: { + query?: { + /** @description The starting index of the returned issues. Base index: 0. See the 'Pagination' section at the top of this page for more details. */ + startAt?: number; + /** @description The maximum number of issues to return per page. See the 'Pagination' section at the top of this page for more details. Note, the total number of issues returned is limited by the property 'jira.search.views.default.max' in your Jira instance. If you exceed this limit, your results will be truncated. */ + maxResults?: number; + /** + * @description Filters results using a JQL query. If you define an order in your JQL query, it will override the default order of the returned issues. + * Note that `username` and `userkey` can't be used as search terms for this parameter due to privacy reasons. Use `accountId` instead. + */ + jql?: string; + /** @description Specifies whether to validate the JQL query or not. Default: true. */ + validateQuery?: boolean; + /** @description The list of fields to return for each issue. By default, all navigable and Agile fields are returned. */ + fields?: Record[]; + /** @description A comma-separated list of the parameters to expand. */ + expand?: string; + }; + path: { + /** @description The ID of the sprint that contains the requested issues. */ + sprintId: number; + }; + }; + responses: { + /** @description Returns the requested issues, at the specified page of the results. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license. */ + 403: { + content: never; + }; + /** @description Returned if sprint does not exist or the user cannot view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Move issues to sprint and rank + * @description Moves issues to a sprint, for a given sprint ID. Issues can only be moved to open or active sprints. The maximum number of issues that can be moved in one operation is 50. + */ + moveIssuesToSprintAndRank: { + parameters: { + path: { + /** @description The ID of the sprint that you want to assign issues to. */ + sprintId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "rankBeforeIssue": "PR-4", + * "rankCustomFieldId": 10521, + * "issues": [ + * "PR-1", + * "10001", + * "PR-3" + * ] + * } + */ + "application/json": { + issues?: string[]; + rankBeforeIssue?: string; + rankAfterIssue?: string; + /** Format: int64 */ + rankCustomFieldId?: number; + }; + }; + }; + responses: { + /** @description Empty response is returned if operation was successful. */ + 204: { + content: never; + }; + /** @description Returned if the request is invalid. */ + 400: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license or does not have permission to assign issues. */ + 403: { + content: never; + }; + /** @description Returned if the sprint does not exist or the user does not have permission to view it. */ + 404: { + content: never; + }; + }; + }; + /** + * Get properties keys + * @description Returns the keys of all properties for the sprint identified by the id. The user who retrieves the property keys is required to have permissions to view the sprint. + */ + getPropertiesKeys: { + parameters: { + path: { + /** @description the ID of the sprint from which property keys will be returned. */ + sprintId: string; + }; + }; + responses: { + /** @description Returned if the sprint with given id exists. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the sprintId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have permission to view the sprint. */ + 403: { + content: never; + }; + /** @description Returned if the sprint with given id does not exist. */ + 404: { + content: never; + }; + }; + }; + /** + * Get property + * @description Returns the value of the property with a given key from the sprint identified by the provided id. The user who retrieves the property is required to have permissions to view the sprint. + */ + getProperty: { + parameters: { + path: { + /** @description the ID of the sprint from which the property will be returned. */ + sprintId: string; + /** @description the key of the property to return. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the sprint exists and the property was found. */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Returned if the sprintId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have permission to view the sprint. */ + 403: { + content: never; + }; + /** @description Returned if the sprint with a given id does not exist or if the property with given key is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Set property + * @description Sets the value of the specified sprint's property. + * + * You can use this resource to store a custom data against the sprint identified by the id. The user who stores the data is required to have permissions to modify the sprint. + */ + setProperty: { + parameters: { + path: { + /** @description the ID of the sprint on which the property will be set. */ + sprintId: string; + /** @description the key of the sprint's property. The maximum length of the key is 255 bytes. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the sprint property is successfully updated. */ + 200: { + content: never; + }; + /** @description Returned if the sprint property is successfully created. */ + 201: { + content: never; + }; + /** @description Returned if the sprintId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have permission to edit the sprint */ + 403: { + content: never; + }; + /** @description Returned if the sprint with given id does not exist. */ + 404: { + content: never; + }; + }; + }; + /** + * Delete property + * @description Removes the property from the sprint identified by the id. Ths user removing the property is required to have permissions to modify the sprint. + */ + deleteProperty: { + parameters: { + path: { + /** @description the ID of the sprint from which the property will be removed. */ + sprintId: string; + /** @description the key of the property to remove. */ + propertyKey: string; + }; + }; + responses: { + /** @description Returned if the sprint property was removed successfully. */ + 204: { + content: never; + }; + /** @description Returned if the sprintId is invalid (negative or not a number). */ + 400: { + content: never; + }; + /** @description Returned if the calling user is not authenticated. */ + 401: { + content: never; + }; + /** @description Returned if the calling user does not have permission to modify the sprint. */ + 403: { + content: never; + }; + /** @description Returned if the sprint with given id does not exist or if the property with given key is not found. */ + 404: { + content: never; + }; + }; + }; + /** + * Swap sprint + * @description Swap the position of the sprint with the second sprint. + */ + swapSprint: { + parameters: { + path: { + /** @description The ID of the sprint to swap. */ + sprintId: number; + }; + }; + requestBody: { + content: { + /** + * @example { + * "sprintToSwapWith": 3 + * } + */ + "application/json": { + /** Format: int64 */ + sprintToSwapWith?: number; + }; + }; + }; + responses: { + /** @description Returned if the sprint swap was performed successfully */ + 204: { + content: never; + }; + /** @description Returned if the user is not logged in. */ + 401: { + content: never; + }; + /** @description Returned if the user does not a have valid license or does not have permission to at least one sprint. */ + 403: { + content: never; + }; + /** @description Returned if at least one sprint does not exist or user does not have permission to view to at least one sprint. */ + 404: { + content: never; + }; + }; + }; + /** + * Store development information + * @description Stores development information provided in the request to make it available when viewing issues in Jira. Existing repository and entity data for the same ID will be replaced if the updateSequenceId of existing data is less than the incoming data. Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are available within a short period of time, but may take some time during peak load and/or maintenance times. + */ + storeDevelopmentInformation: { + parameters: { + header: { + /** @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. If the JWT token corresponds to a Connect app that does not define the jiraDevelopmentTool module it will be rejected with a 403. See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. */ + Authorization: string; + }; + }; + /** @description Request object, which contains development information */ + requestBody: { + content: { + "application/json": { + /** @description List of repositories containing development information. Must not contain duplicates. Maximum number of entities across all repositories is 1000. */ + repositories: { + /** + * @description The name of this repository. Max length is 255 characters. + * @example atlassian-connect-jira-example + */ + name: string; + /** + * @description Description of this repository. Max length is 1024 characters. + * @example The repository which stores code of the Atlassian Connect Add-on Devinfo application. + */ + description?: string; + /** + * @description The ID of the repository this repository was forked from, if it's a fork. Max length is 1024 characters. + * @example 56c7c750-cee2-48e2-b920-d7706dfd11f7 + */ + forkOf?: string; + /** + * Format: url + * @description The URL of this repository. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example + */ + url: string; + /** @description List of commits to update in this repository. Must not contain duplicate entity IDs. Maximum number of commits is 400 */ + commits?: { + /** + * @description The identifier or hash of the commit. Will be used for cross entity linking. Must be unique for all commits within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters + * @example a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** @description Deprecated. Use the id field instead. */ + hash?: string; + /** + * @description The set of flags for this commit + * @example [MERGE_COMMIT] + */ + flags?: "MERGE_COMMIT"[]; + /** + * @description The commit message. Max length is 1024 characters. If anything longer is supplied, it will be truncated down to 1024 characters. + * @example README.md edited online with Bitbucket + */ + message: string; + /** + * Author + * @description Describes the author of a particular entity + */ + author: { + /** + * @description Deprecated. The name of this user in a format suitable for display. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + /** + * @description Deprecated. The username of the user. Used to associate the user with a Jira user if there are multiple users for a given email. Max length is 255 characters. + * @example jdoe + */ + username?: string; + /** + * @description Deprecated. The URL of the profile for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * @description Deprecated. The URL of the avatar for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + }; + /** + * Format: int32 + * @description The total number of files added, removed, or modified by this commit + * @example 1 + */ + fileCount: number; + /** + * Format: url + * @description The URL of this commit. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/commits/a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + url: string; + /** @description List of file changes. Max number of files is 10. Currently, only the first 5 files are shown (sorted by path) in the UI. This UI behavior may change without notice. */ + files?: { + /** + * @description The path of the file. Max length is 1024 characters. + * @example /home/user/src/atlassian-connect-jira-example/README.md + */ + path: string; + /** + * Format: url + * @description The URL of this file. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/src/a7727ee6350c33cdf90826dc21abaa26a5704370/README.md + */ + url: string; + /** + * @description The operation performed on this file + * @example MODIFIED + * @enum {string} + */ + changeType: "ADDED" | "COPIED" | "DELETED" | "MODIFIED" | "MOVED" | "UNKNOWN"; + /** + * Format: int32 + * @description Number of lines added to the file + * @example 0 + */ + linesAdded: number; + /** + * Format: int32 + * @description Number of lines removed from the file + * @example 1 + */ + linesRemoved: number; + }[]; + /** + * @description The author timestamp of this commit. Formatted as a UTC ISO 8601 date time format. + * @example 2016-10-31T23:27:25+00:00 + */ + authorTimestamp: string; + /** + * @description Shortened identifier for this commit, used for display. Max length is 255 characters. + * @example a7727ee + */ + displayId: string; + }[]; + /** @description List of branches to update in this repository. Must not contain duplicate entity IDs. Maximum number of branches is 400. */ + branches?: { + /** + * @description The ID of this entity. Will be used for cross entity linking. Must be unique by entity type within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters. + * @example c6c7c750-cee2-48e2-b920-d7706dfd11f9 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** + * @description The name of the branch. Max length is 512 characters. + * @example master + */ + name: string; + /** + * Commit + * @description Represents a commit in the version control system. + */ + lastCommit: { + /** + * @description The identifier or hash of the commit. Will be used for cross entity linking. Must be unique for all commits within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters + * @example a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** @description Deprecated. Use the id field instead. */ + hash?: string; + /** + * @description The set of flags for this commit + * @example [MERGE_COMMIT] + */ + flags?: "MERGE_COMMIT"[]; + /** + * @description The commit message. Max length is 1024 characters. If anything longer is supplied, it will be truncated down to 1024 characters. + * @example README.md edited online with Bitbucket + */ + message: string; + /** + * Author + * @description Describes the author of a particular entity + */ + author: { + /** + * @description Deprecated. The name of this user in a format suitable for display. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + /** + * @description Deprecated. The username of the user. Used to associate the user with a Jira user if there are multiple users for a given email. Max length is 255 characters. + * @example jdoe + */ + username?: string; + /** + * @description Deprecated. The URL of the profile for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * @description Deprecated. The URL of the avatar for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + }; + /** + * Format: int32 + * @description The total number of files added, removed, or modified by this commit + * @example 1 + */ + fileCount: number; + /** + * Format: url + * @description The URL of this commit. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/commits/a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + url: string; + /** @description List of file changes. Max number of files is 10. Currently, only the first 5 files are shown (sorted by path) in the UI. This UI behavior may change without notice. */ + files?: { + /** + * @description The path of the file. Max length is 1024 characters. + * @example /home/user/src/atlassian-connect-jira-example/README.md + */ + path: string; + /** + * Format: url + * @description The URL of this file. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/src/a7727ee6350c33cdf90826dc21abaa26a5704370/README.md + */ + url: string; + /** + * @description The operation performed on this file + * @example MODIFIED + * @enum {string} + */ + changeType: "ADDED" | "COPIED" | "DELETED" | "MODIFIED" | "MOVED" | "UNKNOWN"; + /** + * Format: int32 + * @description Number of lines added to the file + * @example 0 + */ + linesAdded: number; + /** + * Format: int32 + * @description Number of lines removed from the file + * @example 1 + */ + linesRemoved: number; + }[]; + /** + * @description The author timestamp of this commit. Formatted as a UTC ISO 8601 date time format. + * @example 2016-10-31T23:27:25+00:00 + */ + authorTimestamp: string; + /** + * @description Shortened identifier for this commit, used for display. Max length is 255 characters. + * @example a7727ee + */ + displayId: string; + }; + /** + * @description The URL of the page for creating a pull request from this branch. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/pull-requests/new + */ + createPullRequestUrl?: string; + /** + * @description The URL of the branch. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/branch/master + */ + url: string; + }[]; + /** @description List of pull requests to update in this repository. Must not contain duplicate entity IDs. Maximum number of pull requests is 400 */ + pullRequests?: { + /** + * @description The ID of this entity. Will be used for cross entity linking. Must be unique by entity type within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters + * @example c6c7c750-cee2-48e2-b920-d7706dfd11f9 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** + * @description The status of the pull request. In the case of concurrent updates, priority is given in the order OPEN, MERGED, DECLINED, DRAFT, UNKNOWN + * @example OPEN + * @enum {string} + */ + status: "OPEN" | "MERGED" | "DECLINED" | "DRAFT" | "UNKNOWN"; + /** + * @description Title of the pull request. Max length is 1024 characters. + * @example Pull request 2, fixing all the issues caused by pull request #1 + */ + title: string; + /** + * Author + * @description Describes the author of a particular entity + */ + author: { + /** + * @description Deprecated. The name of this user in a format suitable for display. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + /** + * @description Deprecated. The username of the user. Used to associate the user with a Jira user if there are multiple users for a given email. Max length is 255 characters. + * @example jdoe + */ + username?: string; + /** + * @description Deprecated. The URL of the profile for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * @description Deprecated. The URL of the avatar for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + }; + /** + * Format: int32 + * @description The number of comments on the pull request + * @example 42 + */ + commentCount: number; + /** + * @description The name of the source branch of this PR. Max length is 255 characters. + * @example ISSUE-1-feature-branch + */ + sourceBranch: string; + /** + * Format: url + * @description The url of the source branch of this PR. This is used to match this PR against the branch. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/branch/ISSUE-1-feature-branch + */ + sourceBranchUrl?: string; + /** + * @description The most recent update to this PR. Formatted as a UTC ISO 8601 date time format. + * @example 2016-10-31T23:27:25+00:00 + */ + lastUpdate: string; + /** + * @description The name of destination branch of this PR. Max length is 255 characters. + * @example master + */ + destinationBranch?: string; + /** + * Format: url + * @description The url of the destination branch of this PR. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/src/master + */ + destinationBranchUrl?: string; + /** @description The list of reviewers of this pull request */ + reviewers?: { + /** + * @description Deprecated. The name of this reviewer. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The approval status of this reviewer, default is UNAPPROVED. + * @example APPROVED + * @enum {string} + */ + approvalStatus?: "APPROVED" | "NEEDSWORK" | "UNAPPROVED"; + /** + * Format: url + * @description Deprecated. The URL of the profile for this reviewer. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * Format: url + * @description Deprecated. The URL of the avatar for this reviewer. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + /** + * @description The email address of this reviewer. Max length is 254 characters. + * @example jane_doe@example.com + */ + email?: string; + /** + * @description The Atlassian Account ID (AAID) of this reviewer. Max length is 128 characters. + * @example 655363:e4ca5e2d-a901-40e3-877e-bf5d22c0f130 + */ + accountId?: string; + }[]; + /** + * Format: url + * @description The URL of this pull request. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/pull-requests/2 + */ + url: string; + /** + * @description Shortened identifier for this pull request, used for display. Max length is 255 characters. + * @example Pull request 2 + */ + displayId: string; + /** + * Format: int32 + * @description The number of tasks on the pull request + * @example 42 + */ + taskCount?: number; + }[]; + /** + * Format: url + * @description The URL of the avatar for this repository. Max length is 2000 characters. + * @example http://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/avatar/32 + */ + avatar?: string; + /** + * @description Description of the avatar for this repository. Max length is 1024 characters. + * @example Avatar description + */ + avatarDescription?: string; + /** + * @description The ID of this entity. Will be used for cross entity linking. Must be unique by entity type within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters. + * @example c6c7c750-cee2-48e2-b920-d7706dfd11f9 + */ + id: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + }[]; + /** @description Flag to prevent automatic issue transitions and smart commits being fired, default is false. */ + preventTransitions?: boolean; + /** + * @description Indicates the operation being performed by the provider system when sending this data. "NORMAL" - Data received during normal operation (e.g. a user pushing a branch). "BACKFILL" - Data received while backfilling existing data (e.g. indexing a newly connected account). Default is "NORMAL". Please note that "BACKFILL" operations have a much higher rate-limiting threshold but are also processed slower in comparison to "NORMAL" operations. + * @example NORMAL + * @enum {string} + */ + operationType?: "NORMAL" | "BACKFILL"; + /** @description Arbitrary properties to tag the submitted repositories with. These properties can be used for delete operations to e.g. clean up all development information associated with an account in the event that the account is removed from the provider system. Note that these properties will never be returned with repository or entity data. They are not intended for use as metadata to associate with a repository. Maximum length of each key or value is 255 characters. Maximum allowed number of properties key/value pairs is 5. Properties keys cannot start with '_' character. Properties keys cannot contain ':' character. */ + properties?: { + [key: string]: string; + }; + /** + * ProviderMetadata + * @description Information about the provider. This is useful for auditing, logging, debugging, and other internal uses. It is not considered private information. Hence, it may not contain personally identifiable information. + */ + providerMetadata?: { + /** + * @description An optional name of the source of the development information data. + * @example Bitbucket Server 6.7.2 + */ + product?: string; + }; + }; + }; + }; + responses: { + /** @description Submission accepted. Each submitted repository and entity that is of a valid format will be eventually available in Jira. */ + 202: { + content: { + "application/json": { + /** @description The IDs of devinfo entities that have been accepted for submission grouped by their repository IDs. Note that a devinfo entity that isn't updated due to it's updateSequenceId being out of order is not considered a failed submission. */ + acceptedDevinfoEntities?: { + [key: string]: { + /** @description Commits IDs */ + commits?: string[]; + /** @description Branch IDs */ + branches?: string[]; + /** @description Pull request IDs */ + pullRequests?: string[]; + }; + }; + /** @description IDs of devinfo entities that have not been accepted for submission and caused error descriptions, usually due to a problem with the request data. The entities (if present) will be grouped by their repository id and type. Entity IDs are listed with errors associated with that devinfo entity that have prevented it being submitted. */ + failedDevinfoEntities?: { + [key: string]: { + /** @description Repository errors */ + errorMessages?: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + /** @description Commits errors */ + commits?: { + /** @description Entity id */ + id: string; + /** @description Error message */ + errorMessages?: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }[]; + /** @description Branches errors */ + branches?: { + /** @description Entity id */ + id: string; + /** @description Error message */ + errorMessages?: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }[]; + /** @description Pull requests errors */ + pullRequests?: { + /** @description Entity id */ + id: string; + /** @description Error message */ + errorMessages?: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }[]; + }; + }; + /** @description Issue keys that are not known on this Jira instance (if any). These may be invalid keys (e.g. `UTF-8` is sometimes incorrectly identified as a Jira issue key), or they may be for projects that no longer exist. If a devinfo entity has been associated with issue keys other than those in this array it will still be stored against those valid keys. */ + unknownIssueKeys?: string[]; + }; + }; + }; + /** @description Request has incorrect format. It will fail in the following cases: If no repositories or development information entities were provided, or more than 5 properties were submitted, or there are one or more properties with leading underscore '_' symbol in their keys. */ + 400: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the jiraDevelopmentTool module, or the app does not define the 'WRITE' scope */ + 403: { + content: never; + }; + /** @description Data is too large. Submit fewer devinfo entities in each payload. */ + 413: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + headers: { + /** @description The number of remaining possible requests in current rate limit window. */ + "X-RateLimit-Remaining"?: number; + /** @description The date in ISO 8601 format when the rate limit values will be next reset. */ + "X-RateLimit-Reset"?: string; + /** @description The maximum possible requests in a window of one minute. */ + "X-RateLimit-Limit"?: number; + /** @description The number of seconds to wait before making a follow-up request. */ + "Retry-After"?: number; + }; + content: never; + }; + /** @description An unknown error has occurred. */ + 500: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + }; + }; + /** + * Get repository + * @description For the specified repository ID, retrieves the repository and the most recent 400 development information entities. The result will be what is currently stored, ignoring any pending updates or deletes. + */ + getRepository: { + parameters: { + header: { + /** @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. If the JWT token corresponds to a Connect app that does not define the jiraDevelopmentTool module it will be rejected with a 403. See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. */ + Authorization: string; + }; + path: { + /** @description The ID of repository to fetch */ + repositoryId: string; + }; + }; + responses: { + /** @description The repository data currently stored for the given ID. */ + 200: { + content: { + "application/json": { + /** + * @description The name of this repository. Max length is 255 characters. + * @example atlassian-connect-jira-example + */ + name: string; + /** + * @description Description of this repository. Max length is 1024 characters. + * @example The repository which stores code of the Atlassian Connect Add-on Devinfo application. + */ + description?: string; + /** + * @description The ID of the repository this repository was forked from, if it's a fork. Max length is 1024 characters. + * @example 56c7c750-cee2-48e2-b920-d7706dfd11f7 + */ + forkOf?: string; + /** + * Format: url + * @description The URL of this repository. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example + */ + url: string; + /** @description List of commits to update in this repository. Must not contain duplicate entity IDs. Maximum number of commits is 400 */ + commits?: { + /** + * @description The identifier or hash of the commit. Will be used for cross entity linking. Must be unique for all commits within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters + * @example a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** @description Deprecated. Use the id field instead. */ + hash?: string; + /** + * @description The set of flags for this commit + * @example [MERGE_COMMIT] + */ + flags?: "MERGE_COMMIT"[]; + /** + * @description The commit message. Max length is 1024 characters. If anything longer is supplied, it will be truncated down to 1024 characters. + * @example README.md edited online with Bitbucket + */ + message: string; + /** + * Author + * @description Describes the author of a particular entity + */ + author: { + /** + * @description Deprecated. The name of this user in a format suitable for display. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + /** + * @description Deprecated. The username of the user. Used to associate the user with a Jira user if there are multiple users for a given email. Max length is 255 characters. + * @example jdoe + */ + username?: string; + /** + * @description Deprecated. The URL of the profile for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * @description Deprecated. The URL of the avatar for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + }; + /** + * Format: int32 + * @description The total number of files added, removed, or modified by this commit + * @example 1 + */ + fileCount: number; + /** + * Format: url + * @description The URL of this commit. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/commits/a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + url: string; + /** @description List of file changes. Max number of files is 10. Currently, only the first 5 files are shown (sorted by path) in the UI. This UI behavior may change without notice. */ + files?: { + /** + * @description The path of the file. Max length is 1024 characters. + * @example /home/user/src/atlassian-connect-jira-example/README.md + */ + path: string; + /** + * Format: url + * @description The URL of this file. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/src/a7727ee6350c33cdf90826dc21abaa26a5704370/README.md + */ + url: string; + /** + * @description The operation performed on this file + * @example MODIFIED + * @enum {string} + */ + changeType: "ADDED" | "COPIED" | "DELETED" | "MODIFIED" | "MOVED" | "UNKNOWN"; + /** + * Format: int32 + * @description Number of lines added to the file + * @example 0 + */ + linesAdded: number; + /** + * Format: int32 + * @description Number of lines removed from the file + * @example 1 + */ + linesRemoved: number; + }[]; + /** + * @description The author timestamp of this commit. Formatted as a UTC ISO 8601 date time format. + * @example 2016-10-31T23:27:25+00:00 + */ + authorTimestamp: string; + /** + * @description Shortened identifier for this commit, used for display. Max length is 255 characters. + * @example a7727ee + */ + displayId: string; + }[]; + /** @description List of branches to update in this repository. Must not contain duplicate entity IDs. Maximum number of branches is 400. */ + branches?: { + /** + * @description The ID of this entity. Will be used for cross entity linking. Must be unique by entity type within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters. + * @example c6c7c750-cee2-48e2-b920-d7706dfd11f9 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** + * @description The name of the branch. Max length is 512 characters. + * @example master + */ + name: string; + /** + * Commit + * @description Represents a commit in the version control system. + */ + lastCommit: { + /** + * @description The identifier or hash of the commit. Will be used for cross entity linking. Must be unique for all commits within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters + * @example a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** @description Deprecated. Use the id field instead. */ + hash?: string; + /** + * @description The set of flags for this commit + * @example [MERGE_COMMIT] + */ + flags?: "MERGE_COMMIT"[]; + /** + * @description The commit message. Max length is 1024 characters. If anything longer is supplied, it will be truncated down to 1024 characters. + * @example README.md edited online with Bitbucket + */ + message: string; + /** + * Author + * @description Describes the author of a particular entity + */ + author: { + /** + * @description Deprecated. The name of this user in a format suitable for display. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + /** + * @description Deprecated. The username of the user. Used to associate the user with a Jira user if there are multiple users for a given email. Max length is 255 characters. + * @example jdoe + */ + username?: string; + /** + * @description Deprecated. The URL of the profile for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * @description Deprecated. The URL of the avatar for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + }; + /** + * Format: int32 + * @description The total number of files added, removed, or modified by this commit + * @example 1 + */ + fileCount: number; + /** + * Format: url + * @description The URL of this commit. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/commits/a7727ee6350c33cdf90826dc21abaa26a5704370 + */ + url: string; + /** @description List of file changes. Max number of files is 10. Currently, only the first 5 files are shown (sorted by path) in the UI. This UI behavior may change without notice. */ + files?: { + /** + * @description The path of the file. Max length is 1024 characters. + * @example /home/user/src/atlassian-connect-jira-example/README.md + */ + path: string; + /** + * Format: url + * @description The URL of this file. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/src/a7727ee6350c33cdf90826dc21abaa26a5704370/README.md + */ + url: string; + /** + * @description The operation performed on this file + * @example MODIFIED + * @enum {string} + */ + changeType: "ADDED" | "COPIED" | "DELETED" | "MODIFIED" | "MOVED" | "UNKNOWN"; + /** + * Format: int32 + * @description Number of lines added to the file + * @example 0 + */ + linesAdded: number; + /** + * Format: int32 + * @description Number of lines removed from the file + * @example 1 + */ + linesRemoved: number; + }[]; + /** + * @description The author timestamp of this commit. Formatted as a UTC ISO 8601 date time format. + * @example 2016-10-31T23:27:25+00:00 + */ + authorTimestamp: string; + /** + * @description Shortened identifier for this commit, used for display. Max length is 255 characters. + * @example a7727ee + */ + displayId: string; + }; + /** + * @description The URL of the page for creating a pull request from this branch. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/pull-requests/new + */ + createPullRequestUrl?: string; + /** + * @description The URL of the branch. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/branch/master + */ + url: string; + }[]; + /** @description List of pull requests to update in this repository. Must not contain duplicate entity IDs. Maximum number of pull requests is 400 */ + pullRequests?: { + /** + * @description The ID of this entity. Will be used for cross entity linking. Must be unique by entity type within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters + * @example c6c7c750-cee2-48e2-b920-d7706dfd11f9 + */ + id: string; + /** + * @description List of issues keys that this entity is associated with. They must be valid Jira issue keys. + * @example ["ISSUE-1","TEST-2"] + */ + issueKeys: string[]; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + /** + * @description The status of the pull request. In the case of concurrent updates, priority is given in the order OPEN, MERGED, DECLINED, DRAFT, UNKNOWN + * @example OPEN + * @enum {string} + */ + status: "OPEN" | "MERGED" | "DECLINED" | "DRAFT" | "UNKNOWN"; + /** + * @description Title of the pull request. Max length is 1024 characters. + * @example Pull request 2, fixing all the issues caused by pull request #1 + */ + title: string; + /** + * Author + * @description Describes the author of a particular entity + */ + author: { + /** + * @description Deprecated. The name of this user in a format suitable for display. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + /** + * @description Deprecated. The username of the user. Used to associate the user with a Jira user if there are multiple users for a given email. Max length is 255 characters. + * @example jdoe + */ + username?: string; + /** + * @description Deprecated. The URL of the profile for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * @description Deprecated. The URL of the avatar for this user. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + }; + /** + * Format: int32 + * @description The number of comments on the pull request + * @example 42 + */ + commentCount: number; + /** + * @description The name of the source branch of this PR. Max length is 255 characters. + * @example ISSUE-1-feature-branch + */ + sourceBranch: string; + /** + * Format: url + * @description The url of the source branch of this PR. This is used to match this PR against the branch. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/branch/ISSUE-1-feature-branch + */ + sourceBranchUrl?: string; + /** + * @description The most recent update to this PR. Formatted as a UTC ISO 8601 date time format. + * @example 2016-10-31T23:27:25+00:00 + */ + lastUpdate: string; + /** + * @description The name of destination branch of this PR. Max length is 255 characters. + * @example master + */ + destinationBranch?: string; + /** + * Format: url + * @description The url of the destination branch of this PR. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/src/master + */ + destinationBranchUrl?: string; + /** @description The list of reviewers of this pull request */ + reviewers?: { + /** + * @description Deprecated. The name of this reviewer. Max length is 255 characters. + * @example Jane Doe + */ + name?: string; + /** + * @description The approval status of this reviewer, default is UNAPPROVED. + * @example APPROVED + * @enum {string} + */ + approvalStatus?: "APPROVED" | "NEEDSWORK" | "UNAPPROVED"; + /** + * Format: url + * @description Deprecated. The URL of the profile for this reviewer. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe + */ + url?: string; + /** + * Format: url + * @description Deprecated. The URL of the avatar for this reviewer. Max length is 2000 characters. + * @example https://atlassian.com/account/jane_doe/avatar/32 + */ + avatar?: string; + /** + * @description The email address of this reviewer. Max length is 254 characters. + * @example jane_doe@example.com + */ + email?: string; + /** + * @description The Atlassian Account ID (AAID) of this reviewer. Max length is 128 characters. + * @example 655363:e4ca5e2d-a901-40e3-877e-bf5d22c0f130 + */ + accountId?: string; + }[]; + /** + * Format: url + * @description The URL of this pull request. Max length is 2000 characters. + * @example https://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/pull-requests/2 + */ + url: string; + /** + * @description Shortened identifier for this pull request, used for display. Max length is 255 characters. + * @example Pull request 2 + */ + displayId: string; + /** + * Format: int32 + * @description The number of tasks on the pull request + * @example 42 + */ + taskCount?: number; + }[]; + /** + * Format: url + * @description The URL of the avatar for this repository. Max length is 2000 characters. + * @example http://bitbucket.org/atlassianlabs/atlassian-connect-jira-example/avatar/32 + */ + avatar?: string; + /** + * @description Description of the avatar for this repository. Max length is 1024 characters. + * @example Avatar description + */ + avatarDescription?: string; + /** + * @description The ID of this entity. Will be used for cross entity linking. Must be unique by entity type within a repository, i.e., only one commit can have ID 'X' in repository 'Y'. But adding, e.g., a branch with ID 'X' to repository 'Y' is acceptable. Only alphanumeric characters, and '~.-_', are allowed. Max length is 1024 characters. + * @example c6c7c750-cee2-48e2-b920-d7706dfd11f9 + */ + id: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this entity in the case of out-of-order receipt of update requests. This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the provider system, but other alternatives are valid (e.g. a provider could store a counter against each entity and increment that on each update to Jira). Updates for an entity that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * @example 1523494301248 + */ + updateSequenceId: number; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the jiraDevelopmentTool module, or the app does not define the 'READ' scope */ + 403: { + content: never; + }; + /** @description No data found for the given repository ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description An unknown error has occurred. */ + 500: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + }; + }; + /** + * Delete repository + * @description Deletes the repository data stored by the given ID and all related development information entities. Deletion is performed asynchronously. + */ + deleteRepository: { + parameters: { + query?: { + /** @description An optional property to use to control deletion. Only stored data with an updateSequenceId less than or equal to that provided will be deleted. This can be used to help ensure submit/delete requests are applied correctly if they are issued close together. */ + _updateSequenceId?: number; + }; + header: { + /** @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. If the JWT token corresponds to a Connect app that does not define the jiraDevelopmentTool module it will be rejected with a 403. See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. */ + Authorization: string; + }; + path: { + /** @description The ID of repository to delete */ + repositoryId: string; + }; + }; + responses: { + /** @description Delete request has been accepted. Data will eventually be removed from Jira if it exists. */ + 202: { + content: never; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the jiraDevelopmentTool module, or the app does not define the 'DELETE' scope */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description An unknown error has occurred. */ + 500: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + }; + }; + /** + * Delete development information by properties + * @description Deletes development information entities which have all the provided properties. Entities will be deleted that match ALL of the properties (i.e. treated as an AND). For example if request is `DELETE bulk?accountId=123&projectId=ABC` entities which have properties `accountId=123` and `projectId=ABC` will be deleted. Special property `_updateSequenceId` can be used to delete all entities with updateSequenceId less or equal than the value specified. In addition to the optional `_updateSequenceId`, one or more query params must be supplied to specify properties to delete by. Deletion is performed asynchronously: specified entities will eventually be removed from Jira. + */ + deleteByProperties: { + parameters: { + query?: { + /** @description An optional property to use to control deletion. Only stored data with an updateSequenceId less than or equal to that provided will be deleted. This can be used to help ensure submit/delete requests are applied correctly if they are issued close together. */ + _updateSequenceId?: number; + }; + header: { + /** @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. If the JWT token corresponds to a Connect app that does not define the jiraDevelopmentTool module it will be rejected with a 403. See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format. It will fail in the following cases: If no query properties are specified. If `_updateSequenceId` is not a numeric value. If multiple values of the same property key are specified. Deleting data for many property values, for the same property key, requires multiple requests to this resource. */ + 400: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the jiraDevelopmentTool module, or the app does not define the 'DELETE' scope */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description An unknown error has occurred. */ + 500: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + }; + }; + /** + * Check if data exists for the supplied properties + * @description Checks if development information which have all the provided properties exists. For example, if request is `GET existsByProperties?accountId=123&projectId=ABC` then result will be positive only if there is at least one entity or repository with both properties `accountId=123` and `projectId=ABC`. Special property `_updateSequenceId` can be used to filter all entities with updateSequenceId less or equal than the value specified. In addition to the optional `_updateSequenceId`, one or more query params must be supplied to specify properties to search by. + */ + existsByProperties: { + parameters: { + query?: { + /** @description An optional property. Filters out entities and repositories which have updateSequenceId greater than specified. */ + _updateSequenceId?: number; + }; + header: { + /** @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. If the JWT token corresponds to a Connect app that does not define the jiraDevelopmentTool module it will be rejected with a 403. See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. */ + Authorization: string; + }; + }; + responses: { + /** @description Returns whether data exists for the specified properties. */ + 200: { + content: { + "application/json": { + /** @description Whether there is data matching the query */ + hasDataMatchingProperties?: boolean; + }; + }; + }; + /** @description Request has incorrect format. It will fail in the following cases: If no query properties are specified. If `_updateSequenceId` is not a numeric value. If multiple values of the same property key are specified. */ + 400: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the jiraDevelopmentTool module, or the app does not define the 'READ' scope */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description An unknown error has occurred. */ + 500: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + }; + }; + /** + * Delete development information entity + * @description Deletes particular development information entity. Deletion is performed asynchronously. + */ + deleteEntity: { + parameters: { + query?: { + /** @description An optional property to use to control deletion. Only stored data with an updateSequenceId less than or equal to that provided will be deleted. This can be used to help ensure submit/delete requests are applied correctly if they are issued close together. */ + _updateSequenceId?: number; + }; + header: { + /** @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. If the JWT token corresponds to a Connect app that does not define the jiraDevelopmentTool module it will be rejected with a 403. See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. */ + Authorization: string; + }; + path: { + repositoryId: string; + entityType: "commit" | "branch" | "pull_request"; + entityId: string; + }; + }; + responses: { + /** @description Delete request has been accepted. Data will eventually be removed from Jira if it exists. */ + 202: { + content: never; + }; + /** @description Wrong entity type specified */ + 400: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the jiraDevelopmentTool module, or the app does not define the 'DELETE' scope */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description An unknown error has occurred. */ + 500: { + content: { + "application/json": { + /** @description List of errors occurred. */ + errorMessages: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + }; + }; + /** + * Submit Feature Flag data + * @description Update / insert Feature Flag data. + * + * Feature Flags are identified by their ID, and existing Feature Flag data for the same ID will be replaced if it exists and the updateSequenceId of existing data is less than the incoming data. + * + * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are available within a short period of time, but may take some time during peak load and/or maintenance times. The getFeatureFlagById operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple Feature Flags being submitted in one request, each is validated individually prior to submission. Details of which Feature Flags failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + submitFeatureFlags: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + }; + /** @description Feature Flag data to submit. */ + requestBody: { + content: { + "application/json": { + /** + * Properties + * @description Properties assigned to Feature Flag data that can then be used for delete / query operations. + * + * Examples might be an account or user ID that can then be used to clean up data if an account is removed from the Provider system. + * + * Note that these properties will never be returned with Feature Flag data. They are not intended for use as metadata to associate with a Feature Flag. Internally they are stored as a hash so that personal information etc. is never stored within Jira. + * + * Properties are supplied as key/value pairs, a maximum of 5 properties can be supplied, and keys must not contain ':' or start with '_'. + * + * @example { + * "accountId": "account-234", + * "projectId": "project-123" + * } + */ + properties?: { + [key: string]: string; + }; + /** + * @description A list of Feature Flags to submit to Jira. + * + * Each Feature Flag may be associated with 1 or more Jira issue keys, and will be associated with any properties included in this request. + */ + flags: { + /** + * @description The FeatureFlagData schema version used for this flag data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * @description The identifier for the Feature Flag. Must be unique for a given Provider. + * + * @example 111-222-333 + */ + id: string; + /** + * @description The identifier that users would use to reference the Feature Flag in their source code etc. + * + * Will be made available via the UI for users to copy into their source code etc. + * + * @example my-awesome-feature + */ + key: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this Feature Flag in the case of out-of-order receipt of update requests. + * + * This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the Provider system, but other alternatives are valid (e.g. a Provider could store a counter against each Feature Flag and increment that on each update to Jira). + * + * Updates for a Feature Flag that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceId: number; + /** + * @description The human-readable name for the Feature Flag. Will be shown in the UI. + * + * If not provided, will use the ID for display. + * + * @example Enable awesome feature + */ + displayName?: string; + /** @description The Jira issue keys to associate the Feature Flag information with. */ + issueKeys: string[]; + /** + * FeatureFlagSummary + * @description Summary information for a single Feature Flag. + * + * Providers may elect to provide information from a specific environment, or they may choose to 'roll up' information from across multiple environments - whatever makes most sense in the Provider system. + * + * This is the summary information that will be presented to the user on e.g. the Jira issue screen. + */ + summary: { + /** + * Format: uri + * @description A URL users can use to link to a summary view of this flag, if appropriate. + * + * This could be any location that makes sense in the Provider system (e.g. if the summary information comes from a specific environment, it might make sense to link the user to the flag in that environment). + * + * @example https://example.com/project/feature-123/summary + */ + url?: string; + /** + * FeatureFlagStatus + * @description Status information about a single Feature Flag. + */ + status: { + /** + * @description Whether the Feature Flag is enabled in the given environment (or in summary). + * + * Enabled may imply a partial rollout, which can be described using the 'rollout' field. + */ + enabled: boolean; + /** + * @description The value served by this Feature Flag when it is disabled. This could be the actual value or an alias, as appropriate. + * + * This value may be presented to the user in the UI. + * + * @example Disabled + */ + defaultValue?: string; + /** + * FeatureFlagRollout + * @description Information about the rollout of a Feature Flag in an environment (or in summary). + * + * Only one of 'percentage', 'text', or 'rules' should be provided. They will be used in that order if multiple are present. + * + * This information may be presented to the user in the UI. + * + * @example { + * "percentage": 80 + * } + */ + rollout?: { + /** @description If the Feature Flag rollout is a simple percentage rollout */ + percentage?: number; + /** @description A text status to display that represents the rollout. This could be e.g. a named cohort. */ + text?: string; + /** @description A count of the number of rules active for this Feature Flag in an environment. */ + rules?: number; + }; + }; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of the state of the Feature Flag. + * + * Providers may choose to supply the last-updated timestamp from a specific environment, or the 'most recent' last-updated timestamp across all environments - whatever makes sense in the Provider system. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + }; + /** + * @description Detail information for this Feature Flag. + * + * This may be information for each environment the Feature Flag is defined in or a selection of environments made by the user, as appropriate. + */ + details: { + /** + * Format: uri + * @description A URL users can use to link to this Feature Flag, in this environment. + * + * @example https://example.com/project/feature-123/production + */ + url: string; + /** + * Format: date-time + * @description The last-updated timestamp for this Feature Flag, in this environment. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * EnvironmentDetails + * @description Details of a single environment. + * + * At the simplest this must be the name of the environment. + * + * Ideally there is also type information which may be used to group data from multiple Feature Flags and other entities for visualisation in the UI. + * + * @example { + * "name": "prod-us-west", + * "type": "production" + * } + */ + environment: { + /** @description The name of the environment. */ + name: string; + /** + * @description The 'type' or 'category' of environment this environment belongs to. + * @enum {string} + */ + type?: "development" | "testing" | "staging" | "production"; + }; + /** + * FeatureFlagStatus + * @description Status information about a single Feature Flag. + */ + status: { + /** + * @description Whether the Feature Flag is enabled in the given environment (or in summary). + * + * Enabled may imply a partial rollout, which can be described using the 'rollout' field. + */ + enabled: boolean; + /** + * @description The value served by this Feature Flag when it is disabled. This could be the actual value or an alias, as appropriate. + * + * This value may be presented to the user in the UI. + * + * @example Disabled + */ + defaultValue?: string; + /** + * FeatureFlagRollout + * @description Information about the rollout of a Feature Flag in an environment (or in summary). + * + * Only one of 'percentage', 'text', or 'rules' should be provided. They will be used in that order if multiple are present. + * + * This information may be presented to the user in the UI. + * + * @example { + * "percentage": 80 + * } + */ + rollout?: { + /** @description If the Feature Flag rollout is a simple percentage rollout */ + percentage?: number; + /** @description A text status to display that represents the rollout. This could be e.g. a named cohort. */ + text?: string; + /** @description A count of the number of rules active for this Feature Flag in an environment. */ + rules?: number; + }; + }; + }[]; + }[]; + /** + * ProviderMetadata + * @description Information about the provider. This is useful for auditing, logging, debugging, + * and other internal uses. It is not considered private information. Hence, it may not contain personally + * identifiable information. + */ + providerMetadata?: { + /** + * @description An optional name of the source of the feature flags. + * @example Atlassian Release Platform 2.1.0 + */ + product?: string; + }; + }; + }; + }; + responses: { + /** + * @description Submission accepted. Each submitted Feature Flag that is of a valid format will be eventually available in Jira. + * + * Details of which Feature Flags were submitted and which failed submission (due to data format problems etc.) are available in the response object. + */ + 202: { + content: { + "application/json": { + /** + * @description The IDs of Feature Flags that have been accepted for submission. + * + * A Feature Flag may be rejected if it was only associated with unknown issue keys. + * + * Note that a Feature Flag that isn't updated due to it's updateSequenceId being out of order is not considered a failed submission. + * + * @example [ + * "111-222-333", + * "444-555-666" + * ] + */ + acceptedFeatureFlags?: string[]; + /** + * @description Details of Feature Flags that have not been accepted for submission, usually due to a problem with the request data. + * + * The object (if present) will be keyed by Feature Flag ID and include any errors associated with that Feature Flag that have prevented it being submitted. + */ + failedFeatureFlags?: { + [key: string]: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + /** + * @description Issue keys that are not known on this Jira instance (if any). + * + * These may be invalid keys (e.g. `UTF-8` is sometimes incorrectly identified as a Jira issue key), or they may be for projects that no longer exist. + * + * If a Feature Flag has been associated with issue keys other than those in this array it will still be stored against those valid keys. + * If a Feature Flag was only associated with issue keys deemed to be invalid it won't be persisted. + */ + unknownIssueKeys?: string[]; + }; + }; + }; + /** + * @description Request has incorrect format. + * + * Note that in the case of an individual Feature Flag having an invalid format (rather than the request as a whole) the response for the request will be a 202 and details of the invalid Feature Flag will be contained in the response object. + */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the Feature Flags module, + * or the app does not define the 'WRITE' scope. + */ + 403: { + content: never; + }; + /** @description Data is too large. Submit fewer Feature Flags in each payload. */ + 413: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete Feature Flags by Property + * @description Bulk delete all Feature Flags that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. Optional param `_updateSequenceId` is no longer supported. + * If more than one Property is provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). + * See the documentation for the submitFeatureFlags operation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456 + * + * Deletion is performed asynchronously. The getFeatureFlagById operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteFeatureFlagsByProperty: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceId` to use to control deletion. + * + * Only stored data with an `updateSequenceId` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + * + * If not provided, all stored data that matches the request will be deleted. + */ + _updateSequenceId?: number; + }; + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format (e.g. missing at least one Property param). */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the Feature Flags module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get a Feature Flag by ID + * @description Retrieve the currently stored Feature Flag data for the given ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getFeatureFlagById: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + path: { + /** @description The ID of the Feature Flag to fetch. */ + featureFlagId: string; + }; + }; + responses: { + /** @description The Feature Flag data currently stored for the given ID. */ + 200: { + content: { + "application/json": { + /** + * @description The FeatureFlagData schema version used for this flag data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * @description The identifier for the Feature Flag. Must be unique for a given Provider. + * + * @example 111-222-333 + */ + id: string; + /** + * @description The identifier that users would use to reference the Feature Flag in their source code etc. + * + * Will be made available via the UI for users to copy into their source code etc. + * + * @example my-awesome-feature + */ + key: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this Feature Flag in the case of out-of-order receipt of update requests. + * + * This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the Provider system, but other alternatives are valid (e.g. a Provider could store a counter against each Feature Flag and increment that on each update to Jira). + * + * Updates for a Feature Flag that are received with an updateSqeuenceId lower than what is currently stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceId: number; + /** + * @description The human-readable name for the Feature Flag. Will be shown in the UI. + * + * If not provided, will use the ID for display. + * + * @example Enable awesome feature + */ + displayName?: string; + /** @description The Jira issue keys to associate the Feature Flag information with. */ + issueKeys: string[]; + /** + * FeatureFlagSummary + * @description Summary information for a single Feature Flag. + * + * Providers may elect to provide information from a specific environment, or they may choose to 'roll up' information from across multiple environments - whatever makes most sense in the Provider system. + * + * This is the summary information that will be presented to the user on e.g. the Jira issue screen. + */ + summary: { + /** + * Format: uri + * @description A URL users can use to link to a summary view of this flag, if appropriate. + * + * This could be any location that makes sense in the Provider system (e.g. if the summary information comes from a specific environment, it might make sense to link the user to the flag in that environment). + * + * @example https://example.com/project/feature-123/summary + */ + url?: string; + /** + * FeatureFlagStatus + * @description Status information about a single Feature Flag. + */ + status: { + /** + * @description Whether the Feature Flag is enabled in the given environment (or in summary). + * + * Enabled may imply a partial rollout, which can be described using the 'rollout' field. + */ + enabled: boolean; + /** + * @description The value served by this Feature Flag when it is disabled. This could be the actual value or an alias, as appropriate. + * + * This value may be presented to the user in the UI. + * + * @example Disabled + */ + defaultValue?: string; + /** + * FeatureFlagRollout + * @description Information about the rollout of a Feature Flag in an environment (or in summary). + * + * Only one of 'percentage', 'text', or 'rules' should be provided. They will be used in that order if multiple are present. + * + * This information may be presented to the user in the UI. + * + * @example { + * "percentage": 80 + * } + */ + rollout?: { + /** @description If the Feature Flag rollout is a simple percentage rollout */ + percentage?: number; + /** @description A text status to display that represents the rollout. This could be e.g. a named cohort. */ + text?: string; + /** @description A count of the number of rules active for this Feature Flag in an environment. */ + rules?: number; + }; + }; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of the state of the Feature Flag. + * + * Providers may choose to supply the last-updated timestamp from a specific environment, or the 'most recent' last-updated timestamp across all environments - whatever makes sense in the Provider system. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + }; + /** + * @description Detail information for this Feature Flag. + * + * This may be information for each environment the Feature Flag is defined in or a selection of environments made by the user, as appropriate. + */ + details: { + /** + * Format: uri + * @description A URL users can use to link to this Feature Flag, in this environment. + * + * @example https://example.com/project/feature-123/production + */ + url: string; + /** + * Format: date-time + * @description The last-updated timestamp for this Feature Flag, in this environment. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * EnvironmentDetails + * @description Details of a single environment. + * + * At the simplest this must be the name of the environment. + * + * Ideally there is also type information which may be used to group data from multiple Feature Flags and other entities for visualisation in the UI. + * + * @example { + * "name": "prod-us-west", + * "type": "production" + * } + */ + environment: { + /** @description The name of the environment. */ + name: string; + /** + * @description The 'type' or 'category' of environment this environment belongs to. + * @enum {string} + */ + type?: "development" | "testing" | "staging" | "production"; + }; + /** + * FeatureFlagStatus + * @description Status information about a single Feature Flag. + */ + status: { + /** + * @description Whether the Feature Flag is enabled in the given environment (or in summary). + * + * Enabled may imply a partial rollout, which can be described using the 'rollout' field. + */ + enabled: boolean; + /** + * @description The value served by this Feature Flag when it is disabled. This could be the actual value or an alias, as appropriate. + * + * This value may be presented to the user in the UI. + * + * @example Disabled + */ + defaultValue?: string; + /** + * FeatureFlagRollout + * @description Information about the rollout of a Feature Flag in an environment (or in summary). + * + * Only one of 'percentage', 'text', or 'rules' should be provided. They will be used in that order if multiple are present. + * + * This information may be presented to the user in the UI. + * + * @example { + * "percentage": 80 + * } + */ + rollout?: { + /** @description If the Feature Flag rollout is a simple percentage rollout */ + percentage?: number; + /** @description A text status to display that represents the rollout. This could be e.g. a named cohort. */ + text?: string; + /** @description A count of the number of rules active for this Feature Flag in an environment. */ + rules?: number; + }; + }; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the Feature Flags module, + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No data found for the given Feature Flag ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete a Feature Flag by ID + * @description Delete the Feature Flag data currently stored for the given ID. + * + * Deletion is performed asynchronously. The getFeatureFlagById operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteFeatureFlagById: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceId` to use to control deletion. + * + * Only stored data with an `updateSequenceId` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + */ + _updateSequenceId?: number; + }; + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Feature Flags module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details. + */ + Authorization: string; + }; + path: { + /** @description The ID of the Feature Flag to delete. */ + featureFlagId: string; + }; + }; + responses: { + /** @description Delete has been accepted. Data will eventually be removed from Jira if it exists. */ + 202: { + content: never; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the Feature Flags module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Submit deployment data + * @description Update / insert deployment data. + * + * Deployments are identified by the combination of `pipelineId`, `environmentId` and `deploymentSequenceNumber`, and existing deployment data for the same deployment will be replaced if it exists and the `updateSequenceNumber` of existing data is less than the incoming data. + * + * Submissions are processed asynchronously. Submitted data will eventually be available in Jira. Most updates are available within a short period of time, but may take some time during peak load and/or maintenance times. The `getDeploymentByKey` operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple deployments being submitted in one request, each is validated individually prior to submission. Details of which deployments failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + submitDeployments: { + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + /** @description Deployment data to submit. */ + requestBody: { + content: { + "application/json": { + /** + * Properties + * @description Properties assigned to deployment data that can then be used for delete / query operations. + * + * Examples might be an account or user ID that can then be used to clean up data if an account is removed from the Provider system. + * + * Properties are supplied as key/value pairs, and a maximum of 5 properties can be supplied, keys cannot contain ':' or start with '_'. + * + * @example { + * "accountId": "account-234", + * "projectId": "project-123" + * } + */ + properties?: { + [key: string]: string; + }; + /** + * @description A list of deployments to submit to Jira. + * + * Each deployment may be associated with one or more Jira issue keys, and will be associated with any properties included in this request. + */ + deployments: { + /** + * Format: int64 + * @description This is the identifier for the deployment. It must be unique for the specified pipeline and environment. It must be a monotonically increasing number, as this is used to sequence the deployments. + * + * @example 100 + */ + deploymentSequenceNumber: number; + /** + * Format: int64 + * @description A number used to apply an order to the updates to the deployment, as identified by the deploymentSequenceNumber, in the case of out-of-order receipt of update requests. It must be a monotonically increasing number. For example, epoch time could be one way to generate the updateSequenceNumber. + * + * @example 1 + */ + updateSequenceNumber: number; + /** + * @deprecated + * @description Deprecated. The Jira issue keys to associate the Deployment information with. + * Should replace this field with the "associations" field to associate Deployment information with issueKeys or other types of associations. + */ + issueKeys?: string[]; + /** + * @description The entities to associate the Deployment information with. + * It must contain at least one of IssueIdOrKeysAssociation or ServiceIdOrKeysAssociation. + */ + associations?: OneOf< + [ + { + /** + * @description Defines the asssociation type. + * + * @example issueIdOrKeys + * @enum {string} + */ + associationType: "issueKeys" | "issueIdOrKeys"; + /** + * @description The Jira issue keys to associate the Deployment information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }, + { + /** + * @description Defines the asssociation type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Deployment information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }, + ] + >[]; + /** + * @description The human-readable name for the deployment. Will be shown in the UI. + * + * @example Deployment number 16 of Data Depot + */ + displayName: string; + /** + * Format: uri + * @description A URL users can use to link to this deployment, in this environment. + * + * @example http://mydeployer.com/project1/1111-222-333/prod-east + */ + url: string; + /** + * @description A short description of the deployment + * + * @example The bits are being transferred + */ + description: string; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of the state of the deployment. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * @description An (optional) additional label that may be displayed with deployment information. Can be used to display version information etc. for the deployment. + * + * @example Release 2018-01-20_08-47-bc2421a + */ + label?: string; + /** + * @description The state of the deployment + * + * @example in_progress + * @enum {string} + */ + state: "unknown" | "pending" | "in_progress" | "cancelled" | "failed" | "rolled_back" | "successful"; + /** + * Pipeline + * @description This object models the Continuous Delivery (CD) Pipeline concept, an automated process (usually comprised of multiple stages) + * + * for getting software from version control right through to the production environment. + */ + pipeline: { + /** + * @description The identifier of this pipeline, must be unique for the provider. + * + * @example e9c906a7-451f-4fa6-ae1a-c389e2e2d87c + */ + id: string; + /** + * @description The name of the pipeline to present to the user. + * + * @example Data Depot Deployment + */ + displayName: string; + /** + * Format: uri + * @description A URL users can use to link to this deployment pipeline. + * + * @example http://mydeployer.com/project1 + */ + url: string; + }; + /** + * Environment + * @description The environment that the deployment is present in. + */ + environment: { + /** + * @description The identifier of this environment, must be unique for the provider so that it can be shared across pipelines. + * + * @example 8ec94d72-a4fc-4ac0-b31d-c5a595f373ba + */ + id: string; + /** + * @description The name of the environment to present to the user. + * + * @example US East + */ + displayName: string; + /** + * @description The type of the environment. + * + * @example production + * @enum {string} + */ + type: "unmapped" | "development" | "testing" | "staging" | "production"; + }; + /** + * Commands + * @description A list of commands to be actioned for this Deployment + */ + commands?: { + /** + * @description The command name. + * + * @example initiate_deployment_gating + */ + command?: string; + }[]; + /** + * @description The DeploymentData schema version used for this deployment data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * triggeredBy + * @description Describes the user who triggered the deployment + */ + triggeredBy?: { + /** + * @description The email address of the user. Used to associate the user with a Jira user. Max length is 255 characters. + * @example jane_doe@atlassian.com + */ + email?: string; + }; + }[]; + /** + * ProviderMetadata + * @description Information about the provider. This is useful for auditing, logging, debugging, + * and other internal uses. It is not considered private information. Hence, it may not contain personally + * identifiable information. + */ + providerMetadata?: { + /** + * @description An optional name of the source of the deployments data. + * @example Bamboo 6.10.2 + */ + product?: string; + }; + }; + }; + }; + responses: { + /** + * @description Submission accepted. Each submitted deployment that is of a valid format will eventually be available in Jira. + * + * Details of which deployments were submitted and which failed submission (due to data format problems etc.) are available in the response object. + */ + 202: { + content: { + "application/json": { + /** + * @description The keys of deployments that have been accepted for submission. A deployment key is a composite key that consists of `pipelineId`, `environmentId` and `deploymentSequenceNumber`. + * + * A deployment may be rejected if it was only associated with unknown issue keys. + * + * Note that a deployment that isn't updated due to it's updateSequenceNumber being out of order is not considered a failed submission. + */ + acceptedDeployments?: { + /** + * @description The identifier of a pipeline, must be unique for the provider. + * + * @example e9c906a7-451f-4fa6-ae1a-c389e2e2d87c + */ + pipelineId: string; + /** + * @description The identifier of an environment, must be unique for the provider so that it can be shared across pipelines. + * + * @example 8ec94d72-a4fc-4ac0-b31d-c5a595f373ba + */ + environmentId: string; + /** + * Format: int64 + * @description This is the identifier for the deployment. It must be unique for the specified pipeline and environment. It must be a monotonically increasing number, as this is used to sequence the deployments. + * + * @example 100 + */ + deploymentSequenceNumber: number; + }[]; + /** + * @description Details of deployments that have not been accepted for submission, usually due to a problem with the request data. + * + * The object will contain the deployment key and any errors associated with that deployment that have prevented it being submitted. + */ + rejectedDeployments?: { + /** + * DeploymentKey + * @description Fields that uniquely reference a deployment. + */ + key: { + /** + * @description The identifier of a pipeline, must be unique for the provider. + * + * @example e9c906a7-451f-4fa6-ae1a-c389e2e2d87c + */ + pipelineId: string; + /** + * @description The identifier of an environment, must be unique for the provider so that it can be shared across pipelines. + * + * @example 8ec94d72-a4fc-4ac0-b31d-c5a595f373ba + */ + environmentId: string; + /** + * Format: int64 + * @description This is the identifier for the deployment. It must be unique for the specified pipeline and environment. It must be a monotonically increasing number, as this is used to sequence the deployments. + * + * @example 100 + */ + deploymentSequenceNumber: number; + }; + /** @description The error messages for the rejected deployment */ + errors: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }[]; + /** + * @description Issue keys that are not known on this Jira instance (if any). + * + * These may be invalid keys (e.g. `UTF-8` is sometimes incorrectly identified as a Jira issue key), or they may be for projects that no longer exist. + * + * If a deployment has been associated with issue keys other than those in this array it will still be stored against those valid keys. + * If a deployment was only associated with issue keys deemed to be invalid it won't be persisted. + */ + unknownIssueKeys?: string[]; + /** + * @description Associations (e.g. Issue Keys or Service IDs) that are not known on this Jira instance (if any). + * + * These may be invalid keys (e.g. `UTF-8` is sometimes incorrectly identified as a Jira issue key), or they may be for projects that no longer exist. + * + * If a deployment has been associated with any other association other than those in this array it will still be stored against those valid associations. + * If a deployment was only associated with the associations in this array, it is deemed to be invalid and it won't be persisted. + */ + unknownAssociations?: ( + | { + /** + * @description Defines the asssociation type. + * + * @example issueIdOrKeys + * @enum {string} + */ + associationType: "issueKeys" | "issueIdOrKeys"; + /** + * @description The Jira issue keys to associate the Deployment information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } + | { + /** + * @description Defines the asssociation type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Deployment information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } + | { + /** + * @description Defines the association type. Currently supported entities can be found in this field's value enums list. + * + * @enum {string} + */ + associationType: "commit"; + /** + * @description The entity keys that represent the entities to be associated. + * The number of values counted across all associationTypes (issueKeys, issueIdOrKeys, serviceIdOrKeys, supported ATIs and entity associations) must not exceed a limit of 500. + */ + values: { + /** + * @description The hash for the Commit. + * + * @example b00152456cf4 + */ + commitHash: string; + /** + * @description The ID of the Repository that the Commit belongs to. + * + * @example de7fbebffabe + */ + repositoryId: string; + }[]; + } + )[]; + }; + }; + }; + /** + * @description Request has incorrect format. + * + * Note that in the case of an individual deployment having an invalid format (rather than the request as a whole) the response for the request will be a 202 and details of the invalid deployment will be contained in the response object. + */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraDeploymentInfoProvider` module, + * or the app does not define the 'WRITE' scope. + */ + 403: { + content: never; + }; + /** @description Data is too large. Submit fewer deployments in each payload. */ + 413: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete deployments by Property + * @description Bulk delete all deployments that match the given request. + * + * One or more query params must be supplied to specify the Properties to delete by. Optional param `_updateSequenceNumber` is no longer supported. + * If more than one Property is provided, data will be deleted that matches ALL of the Properties (i.e. treated as AND). + * See the documentation for the `submitDeployments` operation for more details. + * + * Example operation: DELETE /bulkByProperties?accountId=account-123&createdBy=user-456 + * + * Deletion is performed asynchronously. The `getDeploymentByKey` operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteDeploymentsByProperty: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `updateSequenceNumber` to use to control deletion. + * + * Only stored data with an `updateSequenceNumber` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + * + * If not provided, all stored data that matches the request will be deleted. + */ + _updateSequenceNumber?: number; + }; + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format (e.g. missing at least one Property param). */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraDeploymentInfoProvider` module, + * or the app does not define the 'DELETE' scope for Connect apps. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get a deployment by key + * @description Retrieve the currently stored deployment data for the given `pipelineId`, `environmentId` and `deploymentSequenceNumber` combination. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getDeploymentByKey: { + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + path: { + /** @description The ID of the deployment's pipeline. */ + pipelineId: string; + /** @description The ID of the deployment's environment. */ + environmentId: string; + /** @description The deployment's deploymentSequenceNumber. */ + deploymentSequenceNumber: number; + }; + }; + responses: { + /** @description The deployment data currently stored for the given ID. */ + 200: { + content: { + "application/json": { + /** + * Format: int64 + * @description This is the identifier for the deployment. It must be unique for the specified pipeline and environment. It must be a monotonically increasing number, as this is used to sequence the deployments. + * + * @example 100 + */ + deploymentSequenceNumber: number; + /** + * Format: int64 + * @description A number used to apply an order to the updates to the deployment, as identified by the deploymentSequenceNumber, in the case of out-of-order receipt of update requests. It must be a monotonically increasing number. For example, epoch time could be one way to generate the updateSequenceNumber. + * + * @example 1 + */ + updateSequenceNumber: number; + /** + * @deprecated + * @description Deprecated. The Jira issue keys to associate the Deployment information with. + * Should replace this field with the "associations" field to associate Deployment information with issueKeys or other types of associations. + */ + issueKeys?: string[]; + /** + * @description The entities to associate the Deployment information with. + * It must contain at least one of IssueIdOrKeysAssociation or ServiceIdOrKeysAssociation. + */ + associations?: OneOf< + [ + { + /** + * @description Defines the asssociation type. + * + * @example issueIdOrKeys + * @enum {string} + */ + associationType: "issueKeys" | "issueIdOrKeys"; + /** + * @description The Jira issue keys to associate the Deployment information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }, + { + /** + * @description Defines the asssociation type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Deployment information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }, + ] + >[]; + /** + * @description The human-readable name for the deployment. Will be shown in the UI. + * + * @example Deployment number 16 of Data Depot + */ + displayName: string; + /** + * Format: uri + * @description A URL users can use to link to this deployment, in this environment. + * + * @example http://mydeployer.com/project1/1111-222-333/prod-east + */ + url: string; + /** + * @description A short description of the deployment + * + * @example The bits are being transferred + */ + description: string; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of the state of the deployment. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * @description An (optional) additional label that may be displayed with deployment information. Can be used to display version information etc. for the deployment. + * + * @example Release 2018-01-20_08-47-bc2421a + */ + label?: string; + /** + * @description The state of the deployment + * + * @example in_progress + * @enum {string} + */ + state: "unknown" | "pending" | "in_progress" | "cancelled" | "failed" | "rolled_back" | "successful"; + /** + * Pipeline + * @description This object models the Continuous Delivery (CD) Pipeline concept, an automated process (usually comprised of multiple stages) + * + * for getting software from version control right through to the production environment. + */ + pipeline: { + /** + * @description The identifier of this pipeline, must be unique for the provider. + * + * @example e9c906a7-451f-4fa6-ae1a-c389e2e2d87c + */ + id: string; + /** + * @description The name of the pipeline to present to the user. + * + * @example Data Depot Deployment + */ + displayName: string; + /** + * Format: uri + * @description A URL users can use to link to this deployment pipeline. + * + * @example http://mydeployer.com/project1 + */ + url: string; + }; + /** + * Environment + * @description The environment that the deployment is present in. + */ + environment: { + /** + * @description The identifier of this environment, must be unique for the provider so that it can be shared across pipelines. + * + * @example 8ec94d72-a4fc-4ac0-b31d-c5a595f373ba + */ + id: string; + /** + * @description The name of the environment to present to the user. + * + * @example US East + */ + displayName: string; + /** + * @description The type of the environment. + * + * @example production + * @enum {string} + */ + type: "unmapped" | "development" | "testing" | "staging" | "production"; + }; + /** + * Commands + * @description A list of commands to be actioned for this Deployment + */ + commands?: { + /** + * @description The command name. + * + * @example initiate_deployment_gating + */ + command?: string; + }[]; + /** + * @description The DeploymentData schema version used for this deployment data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraDeploymentInfoProvider` module, + * + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No data found for the given deployment ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete a deployment by key + * @description Delete the currently stored deployment data for the given `pipelineId`, `environmentId` and `deploymentSequenceNumber` combination. + * + * Deletion is performed asynchronously. The `getDeploymentByKey` operation can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteDeploymentByKey: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceNumber` to use to control deletion. + * + * Only stored data with an `updateSequenceNumber` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + */ + _updateSequenceNumber?: number; + }; + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraDeploymentInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + path: { + /** @description The ID of the deployment's pipeline. */ + pipelineId: string; + /** @description The ID of the deployment's environment. */ + environmentId: string; + /** @description The deployment's deploymentSequenceNumber. */ + deploymentSequenceNumber: number; + }; + }; + responses: { + /** @description Delete has been accepted. Data will eventually be removed from Jira if it exists. */ + 202: { + content: never; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraDeploymentInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get deployment gating status by key + * @description Retrieve the Deployment gating status for the given `pipelineId + environmentId + deploymentSequenceNumber` combination. + * Only apps that define the `jiraDeploymentInfoProvider` module can access this resource. This resource requires the 'READ' scope. + */ + getDeploymentGatingStatusByKey: { + parameters: { + path: { + /** @description The ID of the Deployment's pipeline. */ + pipelineId: string; + /** @description The ID of the Deployment's environment. */ + environmentId: string; + /** @description The Deployment's deploymentSequenceNumber. */ + deploymentSequenceNumber: number; + }; + }; + responses: { + /** @description The current gating status for the given Deployment */ + 200: { + content: { + "application/json": { + /** + * Format: int64 + * @description This is the identifier for the Deployment. + * + * @example 100 + */ + deploymentSequenceNumber?: number; + /** + * @description The ID of the Deployment's pipeline. + * + * @example e9c906a7-451f-4fa6-ae1a-c389e2e2d87c + */ + pipelineId?: string; + /** + * @description The ID of the Deployment's environment. + * + * @example 8ec94d72-a4fc-4ac0-b31d-c5a595f373ba + */ + environmentId?: string; + /** + * Format: date-time + * @description Time the deployment gating status was updated. + * + * @example 2020-08-25T06:04:50.239Z + */ + updatedTimestamp?: string; + /** + * @description The gating status + * + * @example allowed + * @enum {string} + */ + gatingStatus?: "allowed" | "prevented" | "awaiting" | "invalid"; + details?: { + /** + * @description The type of the gating status details. + * + * @example issue + * @enum {string} + */ + type: "issue"; + /** + * IssueKey + * @description An issue key that references an issue in Jira. + * + * @example ABC-123 + */ + issueKey: string; + /** + * Format: uri + * @description A full HTTPS link to the Jira issue for the change request gating this Deployment. This field is provided if the details type is issue. + * + * @example https://your-domain.atlassian.net/servicedesk/customer/portal/1/ZAINA-123 + */ + issueLink: string; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** @description The JWT token used does not correspond to an app that defines the `jiraDeploymentInfoProvider` module, */ + 403: { + content: never; + }; + /** @description No data found for the given deployment ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Submit build data + * @description Update / insert builds data. + * + * Builds are identified by the combination of `pipelineId` and `buildNumber`, and existing build data for the same + * build will be replaced if it exists and the `updateSequenceNumber` of the existing data is less than the + * incoming data. + * + * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are + * available within a short period of time, but may take some time during peak load and/or maintenance times. + * The `getBuildByKey` operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple builds being submitted in one request, each is validated individually prior to + * submission. Details of which build failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + submitBuilds: { + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + /** @description Builds data to submit. */ + requestBody: { + content: { + "application/json": { + /** + * Properties + * @description Properties assigned to build data that can then be used for delete / query operations. + * + * Examples might be an account or user ID that can then be used to clean up data if an account is removed from + * the Provider system. + * + * Note that these properties will never be returned with build data. They are not intended for use as + * metadata to associate with a build. Internally they are stored as a hash so that personal information etc. + * is never stored within Jira. + * + * Properties are supplied as key/value pairs, a maximum of 5 properties can be supplied, and keys must not + * contain ':' or start with '_'. + * + * @example { + * "accountId": "account-234", + * "projectId": "project-123" + * } + */ + properties?: { + [key: string]: string; + }; + /** + * @description A list of builds to submit to Jira. + * + * Each build may be associated with one or more Jira issue keys, and will be associated with any properties + * included in this request. + */ + builds: { + /** + * @description The schema version used for this data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * @description An ID that relates a sequence of builds. Depending on your use case this might be a project ID, pipeline ID, + * plan key etc. - whatever logical unit you use to group a sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify a build you have provided. + * + * @example my-build-plan + */ + pipelineId: string; + /** + * Format: int64 + * @description Identifies a build within the sequence of builds identified by the build `pipelineId`. + * + * Used to identify the 'most recent' build in that sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify a build you have provided. + * + * @example 16 + */ + buildNumber: number; + /** + * Format: int64 + * @description A number used to apply an order to the updates to the build, as identified by `pipelineId` and `buildNumber`, + * in the case of out-of-order receipt of update requests. + * + * It must be a monotonically increasing number. For example, epoch time could be one way to generate the + * `updateSequenceNumber`. + * + * Updates for a build that is received with an `updateSqeuenceNumber` less than or equal to what is currently + * stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceNumber: number; + /** + * @description The human-readable name for the build. + * + * Will be shown in the UI. + * + * @example My Project build #16 + */ + displayName: string; + /** + * @description An optional description to attach to this build. + * + * This may be anything that makes sense in your system. + * + * @example My Project build #16: Failed + */ + description?: string; + /** @description A human-readable string that to provide information about the build. */ + label?: string; + /** + * Format: URL + * @description The URL to this build in your system. + */ + url: string; + /** + * BuildState + * @description The state of a build. + * + * * `pending` - The build is queued, or some manual action is required. + * * `in_progress` - The build is currently running. + * * `successful` - The build completed successfully. + * * `failed` - The build failed. + * * `cancelled` - The build has been cancelled or stopped. + * * `unknown` - The build is in an unknown state. + * + * @example failed + * @enum {string} + */ + state: "pending" | "in_progress" | "successful" | "failed" | "cancelled" | "unknown"; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of the state of the build. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * @description The Jira issue keys to associate the build information with. + * + * You are free to associate issue keys in any way you like. However, we recommend that you use the name + * of the branch the build was executed on, and extract issue keys from that name using a simple regex. This has + * the advantage that it provides an intuitive association of builds to issue keys. + */ + issueKeys: string[]; + /** + * TestInfo + * @description Information about tests that were executed during a build. + */ + testInfo?: { + /** + * Format: int64 + * @description The total number of tests considered during a build. + * + * @example 150 + */ + totalNumber: number; + /** + * Format: int64 + * @description The number of tests that passed during a build. + * + * @example 145 + */ + numberPassed: number; + /** + * Format: int64 + * @description The number of tests that failed during a build. + * + * @example 5 + */ + numberFailed: number; + /** + * Format: int64 + * @description The number of tests that were skipped during a build. + * + * @default 0 + * @example 0 + */ + numberSkipped?: number; + }; + /** @description Optional information that links a build to a commit, branch etc. */ + references?: { + /** + * BuildCommitReference + * @description Details about the commit the build was run against. + */ + commit?: { + /** + * @description The ID of the commit. E.g. for a Git repository this would be the SHA1 hash. + * + * @example 08cd9c26b2b8d7cf6e6af6b49da8895d065c259f + */ + id: string; + /** + * @description An identifier for the repository containing the commit. + * + * In most cases this should be the URL of the repository in the SCM provider. + * + * For cases where the build was executed against a local repository etc. this should be some identifier that is + * unique to that repository. + * + * @example https://bitbucket.org/atlassian/biij-vendor-api + */ + repositoryUri: string; + }; + /** + * BuildRefReference + * @description Details about the ref the build was run on. + */ + ref?: { + /** + * @description The name of the ref the build ran on + * + * @example feature/ISSUE-123-some-work + */ + name: string; + /** + * @description An identifer for the ref. + * + * In most cases this should be the URL of the tag/branch etc. in the SCM provider. + * + * For cases where the build was executed against a local repository etc. this should be something that uniquely + * identifies the ref. + * + * @example https://bitbucket.org/atlassian/biij-vendor-api/refs/feature/ISSUE-123-some-work + */ + uri: string; + }; + }[]; + }[]; + /** + * ProviderMetadata + * @description Information about the provider. This is useful for auditing, logging, debugging, + * and other internal uses. It is not considered private information. Hence, it may not contain personally + * identifiable information. + */ + providerMetadata?: { + /** + * @description An optional name of the source of the builds data. + * @example Bamboo 6.10.2 + */ + product?: string; + }; + }; + }; + }; + responses: { + /** + * @description Submission accepted. Each submitted build that is of a valid format will be eventually available in Jira. + * + * Details of which builds were submitted and which failed submission (due to data format problems etc.) + * are available in the response object. + */ + 202: { + content: { + "application/json": { + /** + * @description The keys of builds that have been accepted for submission. A build key is a composite key that consists of + * `pipelineId` and `buildNumber`. + * + * A build may be rejected if it was only associated with unknown issue keys, or if the submitted data for that + * build does not match the required schema. + * + * Note that a build that isn't updated due to it's `updateSequenceNumber` being out of order is not + * considered a failed submission. + */ + acceptedBuilds?: { + /** + * @description An ID that relates a sequence of builds. Depending on your system this might be a project ID, pipeline ID, + * plan key etc. - whatever logical unit you use to group a sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify the build. + * + * @example my-build-plan + */ + pipelineId: string; + /** + * Format: int64 + * @description Identifies a build within the sequence of builds identified by the build `pipelineId`. + * + * Used to identify the 'most recent' build in that sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify the build. + * + * @example 16 + */ + buildNumber: number; + }[]; + /** + * @description Details of builds that have not been accepted for submission. + * + * A build may be rejected if it was only associated with unknown issue keys, or if the submitted data for the + * build does not match the required schema. + */ + rejectedBuilds?: { + /** + * BuildKey + * @description Fields that uniquely reference a build. + */ + key: { + /** + * @description An ID that relates a sequence of builds. Depending on your system this might be a project ID, pipeline ID, + * plan key etc. - whatever logical unit you use to group a sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify the build. + * + * @example my-build-plan + */ + pipelineId: string; + /** + * Format: int64 + * @description Identifies a build within the sequence of builds identified by the build `pipelineId`. + * + * Used to identify the 'most recent' build in that sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify the build. + * + * @example 16 + */ + buildNumber: number; + }; + /** @description The error messages for the rejected build */ + errors: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }[]; + /** + * @description Issue keys that are not known on this Jira instance (if any). + * + * These may be invalid keys (e.g. `UTF-8` is sometimes incorrectly identified as a Jira issue key), or they + * may be for projects that no longer exist. + * + * If a build has been associated with issue keys other than those in this array it will still be stored against + * those valid keys. If a build was only associated with issue keys deemed to be invalid it won't be persisted. + */ + unknownIssueKeys?: string[]; + }; + }; + }; + /** + * @description Request has incorrect format. + * + * Note that in the case of an individual build having an invalid format (rather than the request as a whole) + * the response for the request will be a 202 and details of the invalid build will be contained in the + * response object. + */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraBuildInfoProvider` module, + * or the app does not define the 'WRITE' scope. + */ + 403: { + content: never; + }; + /** @description Data is too large. Submit fewer builds in each payload. */ + 413: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete builds by Property + * @description Bulk delete all builds data that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. + * Optional param `_updateSequenceNumber` is no longer supported. + * If more than one Property is provided, data will be deleted that matches ALL of the + * Properties (e.g. treated as an AND). + * + * See the documentation for the `submitBuilds` operation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&repoId=repo-345 + * + * Deletion is performed asynchronously. The `getBuildByKey` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteBuildsByProperty: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceNumber` to use to control deletion. + * + * Only stored data with an `updateSequenceNumber` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + * + * If not provided, all stored data that matches the request will be deleted. + */ + _updateSequenceNumber?: number; + }; + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format (e.g. missing at least one Property param). */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraBuildInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get a build by key + * @description Retrieve the currently stored build data for the given `pipelineId` and `buildNumber` combination. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getBuildByKey: { + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + path: { + /** @description The `pipelineId` of the build. */ + pipelineId: string; + /** @description The `buildNumber` of the build. */ + buildNumber: number; + }; + }; + responses: { + /** @description The build data currently stored for the given key. */ + 200: { + content: { + "application/json": { + /** + * @description The schema version used for this data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * @description An ID that relates a sequence of builds. Depending on your use case this might be a project ID, pipeline ID, + * plan key etc. - whatever logical unit you use to group a sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify a build you have provided. + * + * @example my-build-plan + */ + pipelineId: string; + /** + * Format: int64 + * @description Identifies a build within the sequence of builds identified by the build `pipelineId`. + * + * Used to identify the 'most recent' build in that sequence of builds. + * + * The combination of `pipelineId` and `buildNumber` must uniquely identify a build you have provided. + * + * @example 16 + */ + buildNumber: number; + /** + * Format: int64 + * @description A number used to apply an order to the updates to the build, as identified by `pipelineId` and `buildNumber`, + * in the case of out-of-order receipt of update requests. + * + * It must be a monotonically increasing number. For example, epoch time could be one way to generate the + * `updateSequenceNumber`. + * + * Updates for a build that is received with an `updateSqeuenceNumber` less than or equal to what is currently + * stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceNumber: number; + /** + * @description The human-readable name for the build. + * + * Will be shown in the UI. + * + * @example My Project build #16 + */ + displayName: string; + /** + * @description An optional description to attach to this build. + * + * This may be anything that makes sense in your system. + * + * @example My Project build #16: Failed + */ + description?: string; + /** @description A human-readable string that to provide information about the build. */ + label?: string; + /** + * Format: URL + * @description The URL to this build in your system. + */ + url: string; + /** + * BuildState + * @description The state of a build. + * + * * `pending` - The build is queued, or some manual action is required. + * * `in_progress` - The build is currently running. + * * `successful` - The build completed successfully. + * * `failed` - The build failed. + * * `cancelled` - The build has been cancelled or stopped. + * * `unknown` - The build is in an unknown state. + * + * @example failed + * @enum {string} + */ + state: "pending" | "in_progress" | "successful" | "failed" | "cancelled" | "unknown"; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of the state of the build. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * @description The Jira issue keys to associate the build information with. + * + * You are free to associate issue keys in any way you like. However, we recommend that you use the name + * of the branch the build was executed on, and extract issue keys from that name using a simple regex. This has + * the advantage that it provides an intuitive association of builds to issue keys. + */ + issueKeys: string[]; + /** + * TestInfo + * @description Information about tests that were executed during a build. + */ + testInfo?: { + /** + * Format: int64 + * @description The total number of tests considered during a build. + * + * @example 150 + */ + totalNumber: number; + /** + * Format: int64 + * @description The number of tests that passed during a build. + * + * @example 145 + */ + numberPassed: number; + /** + * Format: int64 + * @description The number of tests that failed during a build. + * + * @example 5 + */ + numberFailed: number; + /** + * Format: int64 + * @description The number of tests that were skipped during a build. + * + * @default 0 + * @example 0 + */ + numberSkipped?: number; + }; + /** @description Optional information that links a build to a commit, branch etc. */ + references?: { + /** + * BuildCommitReference + * @description Details about the commit the build was run against. + */ + commit?: { + /** + * @description The ID of the commit. E.g. for a Git repository this would be the SHA1 hash. + * + * @example 08cd9c26b2b8d7cf6e6af6b49da8895d065c259f + */ + id: string; + /** + * @description An identifier for the repository containing the commit. + * + * In most cases this should be the URL of the repository in the SCM provider. + * + * For cases where the build was executed against a local repository etc. this should be some identifier that is + * unique to that repository. + * + * @example https://bitbucket.org/atlassian/biij-vendor-api + */ + repositoryUri: string; + }; + /** + * BuildRefReference + * @description Details about the ref the build was run on. + */ + ref?: { + /** + * @description The name of the ref the build ran on + * + * @example feature/ISSUE-123-some-work + */ + name: string; + /** + * @description An identifer for the ref. + * + * In most cases this should be the URL of the tag/branch etc. in the SCM provider. + * + * For cases where the build was executed against a local repository etc. this should be something that uniquely + * identifies the ref. + * + * @example https://bitbucket.org/atlassian/biij-vendor-api/refs/feature/ISSUE-123-some-work + */ + uri: string; + }; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraBuildInfoProvider` module, + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No build data found for the given key. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete a build by key + * @description Delete the build data currently stored for the given `pipelineId` and `buildNumber` combination. + * + * Deletion is performed asynchronously. The `getBuildByKey` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteBuildByKey: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceNumber` to use to control deletion. + * + * Only stored data with an `updateSequenceNumber` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + */ + _updateSequenceNumber?: number; + }; + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraBuildInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + path: { + /** @description The `pipelineId` of the build to delete. */ + pipelineId: string; + /** @description The `buildNumber` of the build to delete. */ + buildNumber: number; + }; + }; + responses: { + /** @description Delete has been accepted. Data will eventually be removed from Jira if it exists. */ + 202: { + content: never; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraBuildInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Submit Remote Link data + * @description Update / insert Remote Link data. + * + * Remote Links are identified by their ID, existing Remote Link data for the same ID will be replaced if it + * exists and the updateSequenceId of existing data is less than the incoming data. + * + * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are + * available within a short period of time, but may take some time during peak load and/or maintenance times. + * The `getRemoteLinkById` operation can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple Remote Links being submitted in one request, each is validated individually prior to + * submission. Details of which Remote LInk failed submission (if any) are available in the response object. + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module can access this resource. This resource + * requires the 'WRITE' scope for Connect apps. + */ + submitRemoteLinks: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + /** @description Remote Links data to submit. */ + requestBody: { + content: { + "application/json": { + /** + * Properties + * @description Properties assigned to Remote Link data that can then be used for delete / query operations. + * + * Examples might be an account or user ID that can then be used to clean up data if an account is removed from + * the Provider system. + * + * Properties are supplied as key/value pairs, a maximum of 5 properties can be supplied, and keys must not + * contain ':' or start with '_'. + * + * @example { + * "accountId": "account-234", + * "projectId": "project-123" + * } + */ + properties?: { + [key: string]: string; + }; + /** + * @description A list of Remote Links to submit to Jira. + * + * Each Remote Link may be associated with one or more Jira issue keys, and will be associated with any properties + * included in this request. + */ + remoteLinks: { + /** + * @description The schema version used for this data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * @description The identifier for the Remote Link. Must be unique for a given Provider. + * + * @example 111-222-333 + */ + id: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this Remote Link in the case of out-of-order receipt of + * update requests. + * + * It must be a monotonically increasing number. For example, epoch time could be one way to generate the + * `updateSequenceNumber`. + * + * Updates for a Remote Link that is received with an `updateSqeuenceNumber` less than or equal to what is currently + * stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceNumber: number; + /** + * @description The human-readable name for the Remote Link. + * + * Will be shown in the UI. + * + * @example Remote Link #42 + */ + displayName: string; + /** + * Format: uri + * @description The URL to this Remote Link in your system. + */ + url: string; + /** + * @description The type of the Remote Link. The current supported types are 'document', 'alert', 'test', + * 'security', 'logFile', 'prototype', 'coverage', 'bugReport' and 'other' + * + * @example security + * @enum {string} + */ + type: + | "document" + | "alert" + | "test" + | "security" + | "logFile" + | "prototype" + | "coverage" + | "bugReport" + | "other"; + /** + * @description An optional description to attach to this Remote Link. + * + * This may be anything that makes sense in your system. + * + * @example Remote Link #42 with more information in this description + */ + description?: string; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of when Remote Link was last updated. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** @description The entities to associate the Remote Link information with. */ + associations?: ( + | { + /** + * @description Defines the asssociation type. + * + * @example issueKeys + * @enum {string} + */ + associationType: "issueKeys"; + /** + * @description The Jira issue keys to associate the Remote Link information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } + | { + /** + * @description Defines the asssociation type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Remote Link information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } + )[]; + /** + * RemoteLinkStatus + * @description The status of a Remote Link. + */ + status?: { + /** + * @description Appearance is a fixed set of appearance types affecting the colour + * of the status lozenge in the UI. The colours they correspond to are + * equivalent to atlaskit's [Lozenge](https://atlaskit.atlassian.com/packages/core/lozenge) component. + * + * @example inprogress + * @enum {string} + */ + appearance: "default" | "inprogress" | "moved" | "new" | "removed" | "prototype" | "success"; + /** + * @description The human-readable description for the Remote Link status. + * + * Will be shown in the UI. + * + * @example ANOMALOUS + */ + label: string; + }; + /** + * @description Optional list of actionIds. They are associated with the actions the provider is able to provide when they + * registered. Indicates which actions this Remote Link has. + * + * If any actions have a templateUrl that requires string substitution, then `attributeMap` must be passed in. + * + * @example [ + * "action-111-222-333", + * "action-444-555-666" + * ] + */ + actionIds?: string[]; + /** + * @description Map of key/values (string to string mapping). This is used to build the urls for actions from the + * templateUrl the provider registered their available actions with. + */ + attributeMap?: { + [key: string]: string; + }; + }[]; + /** + * ProviderMetadata + * @description Information about the provider. This is useful for auditing, logging, debugging, and other internal uses. It is + * not considered private information. Hence, it may not contain personally identifiable information. + */ + providerMetadata?: { + /** + * @description An optional name of the source of the Remote Links data. + * @example Opsgenie 6.10.2 + */ + product?: string; + }; + }; + }; + }; + responses: { + /** + * @description Submission accepted. Each submitted Remote Link that is of a valid format will be eventually available in + * Jira. + * + * Details of which Remote Links were submitted and which failed submission (due to data format problems etc.) + * are available in the response object. + */ + 202: { + content: { + "application/json": { + /** + * @description The IDs of Remote Links that have been accepted for submission. + * + * A Remote Link may be rejected if it was only associated with unknown issue keys, unknown service IDs, or if + * the submitted data for that Remote Link does not match the required schema. + * + * Note that a Remote Link that isn't updated due to it's `updateSequenceNumber` being out of order is not + * considered a failed submission. + * + * @example [ + * "111-222-333", + * "444-555-666" + * ] + */ + acceptedRemoteLinks?: string[]; + /** + * @description Details of Remote Links that have not been accepted for submission, usually due to a problem with the request data. + * + * A Remote Link may be rejected if it was only associated with unknown issue keys, unknown service IDs, or + * if the submitted data for the Remote Link does not match the required schema. + * + * The object (if present) will be keyed by Remote Link ID and include any errors associated with that + * Remote Link that have prevented it being submitted. + */ + rejectedRemoteLinks?: { + [key: string]: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + /** @description Issue keys or services IDs or keys that are not known on this Jira instance (if any). */ + unknownAssociations?: ( + | { + /** + * @description Defines the asssociation type. + * + * @example issueKeys + * @enum {string} + */ + associationType: "issueKeys"; + /** + * @description The Jira issue keys to associate the Remote Link information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } + | { + /** + * @description Defines the asssociation type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Remote Link information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } + )[]; + }; + }; + }; + /** + * @description Request has incorrect format. + * + * Note that in the case of an individual Remote Link having an invalid format (rather than the request as a + * whole) the response for the request will be a 202 and details of the invalid Remote Link will be contained + * in the response object. + */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraRemoteLinkInfoProvider` module, + * or the app does not define the 'WRITE' scope. + */ + 403: { + content: never; + }; + /** @description Data is too large. Submit fewer Remote Links in each payload. */ + 413: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete Remote Links by Property + * @description Bulk delete all Remote Links data that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. + * Optional param `_updateSequenceNumber` is no longer supported. If more than one Property is provided, + * data will be deleted that matches ALL of the Properties (e.g. treated as an AND). + * + * See the documentation for the `submitRemoteLinks` operation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&repoId=repo-345 + * + * Deletion is performed asynchronously. The `getRemoteLinkById` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteRemoteLinksByProperty: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceNumber` to use to control deletion. + * + * Only stored data with an `updateSequenceNumber` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + * + * If not provided, all stored data that matches the request will be deleted. + */ + _updateSequenceNumber?: number; + /** + * @description Free-form query parameters to specify which properties to delete by. Properties refer to the arbitrary + * information the provider tagged Remote Links with previously. + * + * For example, if the provider previously tagged a remote link with accountId: + * "properties": { + * "accountId": "account-123" + * } + * + * And now they want to delete Remote Links in bulk by that specific accountId as follows: + * e.g. DELETE /bulkByProperties?accountId=account-123 + */ + params?: Record; + }; + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that + * corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format (e.g. missing at least one Property param). */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraRemoteLinkInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get a Remote Link by ID + * @description Retrieve the currently stored Remote Link data for the given ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getRemoteLinkById: { + parameters: { + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that + * corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + path: { + /** @description The ID of the Remote Link to fetch. */ + remoteLinkId: string; + }; + }; + responses: { + /** @description The Remote Link data currently stored for the given ID. */ + 200: { + content: { + "application/json": { + /** + * @description The schema version used for this data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion?: "1.0"; + /** + * @description The identifier for the Remote Link. Must be unique for a given Provider. + * + * @example 111-222-333 + */ + id: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this Remote Link in the case of out-of-order receipt of + * update requests. + * + * It must be a monotonically increasing number. For example, epoch time could be one way to generate the + * `updateSequenceNumber`. + * + * Updates for a Remote Link that is received with an `updateSqeuenceNumber` less than or equal to what is currently + * stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceNumber: number; + /** + * @description The human-readable name for the Remote Link. + * + * Will be shown in the UI. + * + * @example Remote Link #42 + */ + displayName: string; + /** + * Format: uri + * @description The URL to this Remote Link in your system. + */ + url: string; + /** + * @description The type of the Remote Link. The current supported types are 'document', 'alert', 'test', + * 'security', 'logFile', 'prototype', 'coverage', 'bugReport' and 'other' + * + * @example security + * @enum {string} + */ + type: + | "document" + | "alert" + | "test" + | "security" + | "logFile" + | "prototype" + | "coverage" + | "bugReport" + | "other"; + /** + * @description An optional description to attach to this Remote Link. + * + * This may be anything that makes sense in your system. + * + * @example Remote Link #42 with more information in this description + */ + description?: string; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user as a summary of when Remote Link was last updated. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** @description The entities to associate the Remote Link information with. */ + associations?: ( + | { + /** + * @description Defines the asssociation type. + * + * @example issueKeys + * @enum {string} + */ + associationType: "issueKeys"; + /** + * @description The Jira issue keys to associate the Remote Link information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } + | { + /** + * @description Defines the asssociation type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Remote Link information with. + * + * The number of values counted across all associationTypes (issueKeys, + * issueIdOrKeys and serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + } + )[]; + /** + * RemoteLinkStatus + * @description The status of a Remote Link. + */ + status?: { + /** + * @description Appearance is a fixed set of appearance types affecting the colour + * of the status lozenge in the UI. The colours they correspond to are + * equivalent to atlaskit's [Lozenge](https://atlaskit.atlassian.com/packages/core/lozenge) component. + * + * @example inprogress + * @enum {string} + */ + appearance: "default" | "inprogress" | "moved" | "new" | "removed" | "prototype" | "success"; + /** + * @description The human-readable description for the Remote Link status. + * + * Will be shown in the UI. + * + * @example ANOMALOUS + */ + label: string; + }; + /** + * @description Optional list of actionIds. They are associated with the actions the provider is able to provide when they + * registered. Indicates which actions this Remote Link has. + * + * If any actions have a templateUrl that requires string substitution, then `attributeMap` must be passed in. + * + * @example [ + * "action-111-222-333", + * "action-444-555-666" + * ] + */ + actionIds?: string[]; + /** + * @description Map of key/values (string to string mapping). This is used to build the urls for actions from the + * templateUrl the provider registered their available actions with. + */ + attributeMap?: { + [key: string]: string; + }; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraRemoteLinkInfoProvider` module, + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No Remote Link data found for the given ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete a Remote Link by ID + * @description Delete the Remote Link data currently stored for the given ID. + * + * Deletion is performed asynchronously. The `getRemoteLinkById` operation can be used to confirm that data has been + * deleted successfully (if needed). + * + * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteRemoteLinkById: { + parameters: { + query?: { + /** + * @deprecated + * @description This parameter usage is no longer supported. + * + * An optional `_updateSequenceNumber` to use to control deletion. + * + * Only stored data with an `updateSequenceNumber` less than or equal to that provided will be deleted. + * This can be used help ensure submit/delete requests are applied correctly if issued close together. + */ + _updateSequenceNumber?: number; + }; + header: { + /** + * @description All requests must be signed with either a Connect JWT token or OAuth token for an on-premise integration that + * corresponds to an app installed in Jira. + * + * If the Connect JWT token corresponds to an app that does not define `jiraRemoteLinkInfoProvider` module it will be rejected with a 403. + * + * See https://developer.atlassian.com/blog/2015/01/understanding-jwt/ for more details about Connect JWT tokens. + * See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/ for details about on-premise integrations. + */ + Authorization: string; + }; + path: { + /** @description The ID of the Remote Link to fetch. */ + remoteLinkId: string; + }; + }; + responses: { + /** @description Delete has been accepted. Data will eventually be removed from Jira if it exists. */ + 202: { + content: never; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraRemoteLinkInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Submit Security Workspaces to link + * @description Insert Security Workspace IDs to establish a relationship between them and the Jira site the app is installed on. If a relationship between the workspace ID and Jira already exists then the workspace ID will be ignored and Jira will process the rest of the entries. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + submitWorkspaces: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read [understanding jwt](https://developer.atlassian.com/blog/2015/01/understanding-jwt/) for more details. + */ + Authorization: string; + }; + }; + /** @description Security Workspace IDs to submit. */ + requestBody: { + content: { + "application/json": { + /** + * Security Workspace IDs + * @description The IDs of Security Workspaces to link to this Jira site. These must follow this regex pattern: `[a-zA-Z0-9\\-_.~@:{}=]+(\/[a-zA-Z0-9\\-_.~@:{}=]+)*` + * + * @example [ + * "111-222-333", + * "444-555-666" + * ] + */ + workspaceIds: string[]; + }; + }; + }; + responses: { + /** @description Submission accepted. Each submitted Security Workspace ID will be linked to Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format. */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'WRITE' scope. + */ + 403: { + content: never; + }; + /** @description Set of Ids is too large. Submit fewer Ids in each payload. */ + 413: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete linked Security Workspaces + * @description Bulk delete all linked Security Workspaces that match the given request. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + * + * e.g. DELETE /bulk?workspaceIds=111-222-333,444-555-666 + */ + deleteLinkedWorkspaces: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read [understanding jwt](https://developer.atlassian.com/blog/2015/01/understanding-jwt/) for more details. + */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Workspaces and related data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format. */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get linked Security Workspaces + * @description Retrieve all Security Workspaces linked with the Jira site. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getLinkedWorkspaces: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + responses: { + /** @description A list of all stored workspace IDs. */ + 200: { + content: { + "application/json": { + /** + * Security Workspace IDs + * @description The IDs of Security Workspaces that are linked to this Jira site. + * + * @example [ + * "111-222-333", + * "444-555-666" + * ] + */ + workspaceIds: string[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No data found for the given workspace ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get a linked Security Workspace by ID + * @description Retrieve a specific Security Workspace linked to the Jira site for the given workspace ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getLinkedWorkspaceById: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + path: { + /** @description The ID of the workspace to fetch. */ + workspaceId: string; + }; + }; + responses: { + /** @description The Security Workspace information stored for the given ID. */ + 200: { + content: { + "application/json": { + /** + * @description The Security Workspace ID + * + * @example 111-222-333 + */ + workspaceId: string; + /** + * Format: date-time + * @description Latest date and time that the Security Workspace was updated in Jira. + * + * @example 2020-01-17T09:30:00Z + */ + updatedAt: string; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No data found for the given workspace ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Submit Vulnerability data + * @description Update / Insert Vulnerability data. + * + * Vulnerabilities are identified by their ID, any existing Vulnerability data with the same ID will be replaced if it exists and the updateSequenceNumber of the existing data is less than the incoming data. + * + * Submissions are performed asynchronously. Most updates are available within a short period of time but may take some time during peak load and/or maintenance times. The GET vulnerability endpoint can be used to confirm that data has been stored successfully (if needed). + * + * In the case of multiple Vulnerabilities being submitted in one request, each is validated individually prior to submission. Details of Vulnerabilities that failed submission (if any) are available in the response object. + * + * A maximum of 1000 vulnerabilities can be submitted in one request. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'WRITE' scope for Connect apps. + */ + submitVulnerabilities: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define the Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + /** @description Vulnerability data to submit. */ + requestBody: { + content: { + "application/json": { + /** + * @description Indicates the operation being performed by the provider system when sending this data. "NORMAL" - Data received during real-time, user-triggered actions (e.g. user closed or updated a vulnerability). "SCAN" - Data sent through some automated process (e.g. some periodically scheduled repository scan). "BACKFILL" - Data received while backfilling existing data (e.g. pushing historical vulnerabilities when re-connect a workspace). Default is "NORMAL". "NORMAL" traffic has higher priority but tighter rate limits, "SCAN" traffic has medium priority and looser limits, "BACKFILL" has lower priority and much looser limits + * + * @example SCAN + * @enum {string} + */ + operationType?: "NORMAL" | "SCAN" | "BACKFILL"; + /** + * Properties + * @description Properties assigned to vulnerability data that can then be used for delete / query operations. + * + * Examples might be an account or user ID that can then be used to clean up data if an account is removed from the Provider system. + * + * Properties are supplied as key/value pairs, and a maximum of 5 properties can be supplied, keys cannot contain ':' or start with '_'. + * + * @example { + * "accountId": "account-234", + * "projectId": "project-123" + * } + */ + properties?: { + [key: string]: string; + }; + vulnerabilities: { + /** + * @description The VulnerabilityData schema version used for this vulnerability data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion: "1.0"; + /** + * @description The identifier for the Vulnerability. Must be unique for a given Provider. + * + * @example 111-222-333 + */ + id: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this Vulnerability in the case of out-of-order receipt of update requests. + * + * This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the Provider system, but other alternatives are valid (e.g. a Provider could store a counter against each Vulnerability and increment that on each update to Jira). + * + * Updates for a Vulnerability that are received with an updateSequenceId lower than what is currently stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceNumber: number; + /** + * @description The identifier of the Container where this Vulnerability was found. Must be unique for a given Provider. This must follow this regex pattern: `[a-zA-Z0-9\\-_.~@:{}=]+(/[a-zA-Z0-9\\-_.~@:{}=]+)*` + * + * @example 111-222-333 + */ + containerId: string; + /** + * @description The human-readable name for the Vulnerability. Will be shown in the UI. + * + * If not provided, will use the ID for display. + * + * @example curl/libcurl3 - Buffer Override + */ + displayName: string; + /** + * @description A description of the issue in markdown format that will be shown in the UI and used when creating Jira Issues. HTML tags are not supported in the markdown format. For creating a new line `\n` can be used. Read more about the accepted markdown transformations [here](https://atlaskit.atlassian.com/packages/editor/editor-markdown-transformer). + * + * @example ## Overview + * + * + * Affected versions of this package are vulnerable to MeltLeak + */ + description: string; + /** + * Format: uri + * @description A URL users can use to link to a summary view of this vulnerability, if appropriate. + * + * This could be any location that makes sense in the Provider system (e.g. if the summary information comes from a specific project, it might make sense to link the user to the vulnerability in that project). + * + * @example https://example.com/project/CWE-123/summary + */ + url: string; + /** + * @description The type of Vulnerability detected. + * @example sca + * @enum {string} + */ + type: "sca" | "sast" | "dast" | "unknown"; + /** + * Format: date-time + * @description The timestamp to present to the user that shows when the Vulnerability was introduced. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + introducedDate: string; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user the last time the Vulnerability was updated. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * VulnerabilitySeverity + * @description Severity information for a single Vulnerability. + * + * This is the severity information that will be presented to the user on e.g. the Jira Security screen. + */ + severity: { + /** + * @description The severity level of the Vulnerability. + * @example critical + * @enum {string} + */ + level: "critical" | "high" | "medium" | "low" | "unknown"; + }; + /** @description The identifying information for the Vulnerability. */ + identifiers?: { + /** + * @description The display name of the Vulnerability identified. + * + * @example CWE-123 + */ + displayName: string; + /** + * Format: uri + * @description A URL users can use to link to the definition of the Vulnerability identified. + * + * @example https://cwe.mitre.org/data/definitions/123.html + */ + url: string; + }[]; + /** + * VulnerabilityStatus + * @description The current status of the Vulnerability. + * + * @example open + * @enum {string} + */ + status: "open" | "closed" | "ignored" | "unknown"; + /** + * VulnerabilityAdditionalInfo + * @description Extra information (optional). This data will be shown in the security feature under the vulnerability displayName. + */ + additionalInfo?: { + /** + * @description The content of the additionalInfo. + * + * @example More information on the vulnerability, as a string + */ + content: string; + /** + * Format: uri + * @description Optional URL linking to the information + * + * @example https://example.com/project/CWE-123/additionalInfo + */ + url?: string; + }; + /** @description The associations (e.g. Jira issue) to add in addition to the currently stored associations of the Security Vulnerability. */ + addAssociations?: { + /** + * @description Defines the association type. + * + * @example issueIdOrKeys + * @enum {string} + */ + associationType: "issueIdOrKeys"; + /** + * @description The Jira issue id or keys to associate the Security information with. + * + * The number of values counted across all associationTypes (issueIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }[]; + /** @description The associations (e.g. Jira issue) to remove from currently stored associations of the Security Vulnerability. */ + removeAssociations?: { + /** + * @description Defines the association type. + * + * @example issueIdOrKeys + * @enum {string} + */ + associationType: "issueIdOrKeys"; + /** + * @description The Jira issue id or keys to associate the Security information with. + * + * The number of values counted across all associationTypes (issueIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }[]; + /** + * Format: date-time + * @description An ISO-8601 Date-time string representing the last time the provider updated associations on this entity. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2023-11-02T23:27:25.000Z + */ + associationsLastUpdated?: string; + /** + * Format: int64 + * @description A sequence number to compare when writing entity associations to the database. + * + * This can be any monotonically increasing number. A highly recommended implementation is to use epoch millis. + * + * If it is not provided it will default to being equal to the corresponding entity's `updateSequenceNumber`. + * + * Associations are written following a LastWriteWins strategy, association that are received with an associationsUpdateSequenceNumber lower than what is currently stored will be ignored. + * + * @example 1523494301448 + */ + associationsUpdateSequenceNumber?: number; + }[]; + /** + * ProviderMetadata + * @description Information about the provider. This is useful for auditing, logging, debugging, + * and other internal uses. Information in this property is not considered private, so it should not contain personally identifiable information + */ + providerMetadata?: { + /** + * @description An optional name of the source of the vulnerabilities. + * @example Atlassian Security Platform 2.1.0 + */ + product?: string; + }; + }; + }; + }; + responses: { + /** + * @description Submission accepted. Each Vulnerability submitted in a valid format will eventually be available in Jira. + * + * Details of any Vulnerabilities that were submitted but failed submission (due to data format problems, etc.) are available in the response object. + */ + 202: { + content: { + "application/json": { + /** + * @description The IDs of Vulnerabilities that have been accepted for submission. + * + * A Vulnerability may be rejected if it was only associated with unknown project keys. + * + * Note that a Vulnerability that isn't updated due to it's updateSequenceNumber being out of order is not considered a failed submission. + * + * @example [ + * "111-222-333", + * "444-555-666" + * ] + */ + acceptedVulnerabilities?: string[]; + /** + * @description Details of Vulnerabilities that have not been accepted for submission, usually due to a problem with the request data. + * + * The object (if present) will be keyed by Vulnerability ID and include any errors associated with that Vulnerability that have prevented it being submitted. + */ + failedVulnerabilities?: { + [key: string]: { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + /** + * @description Associations (e.g. Service IDs) that are not known on this Jira instance (if any). + * + * If a Vulnerability has been associated with any other association other than those in this array it will still be stored against those valid associations. + * If a Vulnerability was only associated with the associations in this array, it is deemed to be invalid and it won't be persisted. + */ + unknownAssociations?: { + /** + * @description Defines the association type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Security information with. + * + * The number of values counted across all associationTypes (serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }[]; + }; + }; + }; + /** + * @description Request has incorrect format. + * + * Note that in the case of an individual Vulnerability having an invalid format (rather than the request as a whole) the response for the request will be a 202 and details of the invalid Vulnerability will be contained in the response object. + */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'WRITE' scope. + */ + 403: { + content: never; + }; + /** @description Data is too large. Submit fewer Vulnerabilities in each payload. */ + 413: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description API rate limit has been exceeded. */ + 429: { + headers: { + /** @description The number of remaining possible requests in current rate limit window. */ + "X-RateLimit-Remaining"?: number; + /** @description The date in ISO 8601 format when the rate limit values will be next reset. */ + "X-RateLimit-Reset"?: string; + /** @description The maximum possible requests in a window of one minute. */ + "X-RateLimit-Limit"?: number; + /** @description The number of seconds to wait before making a follow-up request. */ + "Retry-After"?: number; + }; + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete Vulnerabilities by Property + * @description Bulk delete all Vulnerabilities that match the given request. + * + * One or more query params must be supplied to specify Properties to delete by. + * If more than one Property is provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). + * Read the POST bulk endpoint documentation for more details. + * + * e.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456 + * + * Deletion is performed asynchronously. The GET vulnerability endpoint can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteVulnerabilitiesByProperty: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + }; + responses: { + /** @description Delete accepted. Data will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Request has incorrect format (e.g. missing at least one Property param). */ + 400: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Get a Vulnerability by ID + * @description Retrieve the currently stored Vulnerability data for the given ID. + * + * The result will be what is currently stored, ignoring any pending updates or deletes. + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'READ' scope for Connect apps. + */ + getVulnerabilityById: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + path: { + /** @description The ID of the Vulnerability to fetch. */ + vulnerabilityId: string; + }; + }; + responses: { + /** @description The Vulnerability data currently stored for the given ID. */ + 200: { + content: { + "application/json": { + /** + * @description The VulnerabilityData schema version used for this vulnerability data. + * + * Placeholder to support potential schema changes in the future. + * + * @default 1.0 + * @example 1.0 + * @enum {string} + */ + schemaVersion: "1.0"; + /** + * @description The identifier for the Vulnerability. Must be unique for a given Provider. + * + * @example 111-222-333 + */ + id: string; + /** + * Format: int64 + * @description An ID used to apply an ordering to updates for this Vulnerability in the case of out-of-order receipt of update requests. + * + * This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the Provider system, but other alternatives are valid (e.g. a Provider could store a counter against each Vulnerability and increment that on each update to Jira). + * + * Updates for a Vulnerability that are received with an updateSequenceId lower than what is currently stored will be ignored. + * + * @example 1523494301448 + */ + updateSequenceNumber: number; + /** + * @description The identifier of the Container where this Vulnerability was found. Must be unique for a given Provider. This must follow this regex pattern: `[a-zA-Z0-9\\-_.~@:{}=]+(/[a-zA-Z0-9\\-_.~@:{}=]+)*` + * + * @example 111-222-333 + */ + containerId: string; + /** + * @description The human-readable name for the Vulnerability. Will be shown in the UI. + * + * If not provided, will use the ID for display. + * + * @example curl/libcurl3 - Buffer Override + */ + displayName: string; + /** + * @description A description of the issue in markdown format that will be shown in the UI and used when creating Jira Issues. HTML tags are not supported in the markdown format. For creating a new line `\n` can be used. Read more about the accepted markdown transformations [here](https://atlaskit.atlassian.com/packages/editor/editor-markdown-transformer). + * + * @example ## Overview + * + * + * Affected versions of this package are vulnerable to MeltLeak + */ + description: string; + /** + * Format: uri + * @description A URL users can use to link to a summary view of this vulnerability, if appropriate. + * + * This could be any location that makes sense in the Provider system (e.g. if the summary information comes from a specific project, it might make sense to link the user to the vulnerability in that project). + * + * @example https://example.com/project/CWE-123/summary + */ + url: string; + /** + * @description The type of Vulnerability detected. + * @example sca + * @enum {string} + */ + type: "sca" | "sast" | "dast" | "unknown"; + /** + * Format: date-time + * @description The timestamp to present to the user that shows when the Vulnerability was introduced. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + introducedDate: string; + /** + * Format: date-time + * @description The last-updated timestamp to present to the user the last time the Vulnerability was updated. + * + * Expected format is an RFC3339 formatted string. + * + * @example 2018-01-20T23:27:25.000Z + */ + lastUpdated: string; + /** + * VulnerabilitySeverity + * @description Severity information for a single Vulnerability. + * + * This is the severity information that will be presented to the user on e.g. the Jira Security screen. + */ + severity: { + /** + * @description The severity level of the Vulnerability. + * @example critical + * @enum {string} + */ + level: "critical" | "high" | "medium" | "low" | "unknown"; + }; + /** @description The identifying information for the Vulnerability. */ + identifiers?: { + /** + * @description The display name of the Vulnerability identified. + * + * @example CWE-123 + */ + displayName: string; + /** + * Format: uri + * @description A URL users can use to link to the definition of the Vulnerability identified. + * + * @example https://cwe.mitre.org/data/definitions/123.html + */ + url: string; + }[]; + /** + * VulnerabilityStatus + * @description The current status of the Vulnerability. + * + * @example open + * @enum {string} + */ + status: "open" | "closed" | "ignored" | "unknown"; + /** + * VulnerabilityAdditionalInfo + * @description Extra information (optional). This data will be shown in the security feature under the vulnerability displayName. + */ + additionalInfo?: { + /** + * @description The content of the additionalInfo. + * + * @example More information on the vulnerability, as a string + */ + content: string; + /** + * Format: uri + * @description Optional URL linking to the information + * + * @example https://example.com/project/CWE-123/additionalInfo + */ + url?: string; + }; + /** @description The entities to associate the Security Vulnerability information with. */ + associations?: { + /** + * @description Defines the association type. + * + * @example serviceIdOrKeys + * @enum {string} + */ + associationType: "serviceIdOrKeys"; + /** + * @description The service id or keys to associate the Security information with. + * + * The number of values counted across all associationTypes (serviceIdOrKeys) must not exceed a limit of 500. + */ + values: string[]; + }[]; + }; + }; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'READ' scope. + */ + 403: { + content: never; + }; + /** @description No data found for the given Vulnerability ID. */ + 404: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; + /** + * Delete a Vulnerability by ID + * @description Delete the Vulnerability data currently stored for the given ID. + * + * Deletion is performed asynchronously. The GET vulnerability endpoint can be used to confirm that data has been deleted successfully (if needed). + * + * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. + * This resource requires the 'DELETE' scope for Connect apps. + */ + deleteVulnerabilityById: { + parameters: { + header: { + /** + * @description All requests must be signed with a Connect JWT token that corresponds to the Provider app installed in Jira. + * + * If the JWT token corresponds to an app that does not define Security Information module it will be rejected with a 403. + * + * Read more about JWT [here](https://developer.atlassian.com/blog/2015/01/understanding-jwt/). + */ + Authorization: string; + }; + path: { + /** @description The ID of the Vulnerability to delete. */ + vulnerabilityId: string; + }; + }; + responses: { + /** @description Delete has been accepted. If the data exists, it will eventually be removed from Jira. */ + 202: { + content: never; + }; + /** @description Missing a JWT token, or token is invalid. */ + 401: { + content: never; + }; + /** + * @description The JWT token used does not correspond to an app that defines the `jiraSecurityInfoProvider` module, + * or the app does not define the 'DELETE' scope. + */ + 403: { + content: never; + }; + /** @description API rate limit has been exceeded. */ + 429: { + content: never; + }; + /** @description Service is unavailable due to maintenance or other reasons. */ + 503: { + content: never; + }; + /** @description An unknown error has occurred. */ + default: { + content: { + "application/json": { + /** @description A human-readable message describing the error. */ + message: string; + /** @description An optional trace ID that can be used by Jira developers to locate the source of the error. */ + errorTraceId?: string; + }[]; + }; + }; + }; + }; +} diff --git a/src/jira.test.ts b/src/jira.test.ts new file mode 100644 index 0000000..e9954e8 --- /dev/null +++ b/src/jira.test.ts @@ -0,0 +1,289 @@ +import { expect, describe, it } from "vitest"; +import { JiraApi, JiraApiOptions } from "./jira"; +import axios, { Axios, AxiosError } from "axios"; +import MockAdapter from "axios-mock-adapter"; + +function createTestInstance(actualOptions: Partial = {}) { + const finalOptions: JiraApiOptions = { + protocol: actualOptions.protocol || "http", + host: actualOptions.host || "jira.somehost.com", + port: "port" in actualOptions ? actualOptions.port : 8080, + username: actualOptions.username ?? "someusername", + password: actualOptions.password ?? "somepassword", + apiVersion: actualOptions.apiVersion || 2, + timeout: actualOptions.timeout || undefined, + base: actualOptions.base || "", + intermediatePath: actualOptions.intermediatePath, + bearer: actualOptions.bearer || null, + }; + if ("axios" in actualOptions) { + finalOptions.axios = actualOptions.axios; + } else { + finalOptions.strictSSL = finalOptions.strictSSL ?? true; + finalOptions.ca = finalOptions.ca ?? undefined; + } + + const jira = new JiraApi(finalOptions); + const mockAdapter = new MockAdapter(jira.axios); + + return { + jira, + mockAdapter, + }; +} + +describe("Jira API Tests", () => { + describe("Constructor Tests", () => { + it("Constructor functions properly", () => { + const { jira } = createTestInstance(); + + expect(jira.protocol).to.eql("http"); + expect(jira.host).to.eql("jira.somehost.com"); + expect(jira.port).to.eql(8080); + expect(jira.baseOptions.auth.username).to.eql("someusername"); + expect(jira.baseOptions.auth.password).to.eql("somepassword"); + expect(jira.apiVersion).to.eql(2); + }); + + it("Constructor with no auth credentials", () => { + const { jira } = createTestInstance({ + username: "", + password: "", + }); + + expect(jira.baseOptions.auth).to.be.undefined; + }); + + it("Constructor with bearer credentials", () => { + const { jira } = createTestInstance({ + bearer: "testBearer", + }); + + expect(jira.baseOptions.headers.Authorization).to.eql("Bearer testBearer"); + }); + + it("Constructor with timeout", () => { + const { jira } = createTestInstance({ + timeout: 2, + }); + + expect(jira.baseOptions.timeout).to.equal(2); + }); + + it("Constructor with with ssl checking disabled", () => { + const { jira } = createTestInstance({ + strictSSL: false, + }); + + expect(jira.httpsAgent).toBeDefined(); + }); + + it("should allow the user to pass in a certificate authority", () => { + const { jira } = createTestInstance({ + ca: "fakestring", + }); + + expect(jira.httpsAgent).toBeDefined(); + }); + + it("should allow the user to pass in an axios instance", () => { + const { jira } = createTestInstance({ + axios: axios.create(), + }); + + expect(jira.httpsAgent).toBeUndefined(); + }); + }); + + describe("makeRequestHeader Tests", () => { + it("makeRequestHeader functions properly in the average case", () => { + const { jira } = createTestInstance(); + + expect( + jira.makeRequestHeader( + jira.makeUri({ + pathname: "/somePathName", + }), + ), + ).to.eql({ + method: "GET", + url: "http://jira.somehost.com:8080/rest/api/2/somePathName", + }); + }); + + it("makeRequestHeader functions properly with a different method", () => { + const { jira } = createTestInstance(); + + expect( + jira.makeRequestHeader( + jira.makeUri({ + pathname: "/somePathName", + }), + { method: "POST" }, + ), + ).toEqual({ + method: "POST", + url: "http://jira.somehost.com:8080/rest/api/2/somePathName", + }); + }); + }); + + describe("makeUri", () => { + it("builds url with pathname and default host, protocol, port, and base api", () => { + const { jira } = createTestInstance(); + + expect(jira.makeUri({ pathname: "/somePathName" })).to.eql( + "http://jira.somehost.com:8080/rest/api/2/somePathName", + ); + }); + + it("builds url with intermediatePath", () => { + const { jira } = createTestInstance(); + + expect(jira.makeUri({ pathname: "/somePathName", intermediatePath: "intermediatePath" })).to.eql( + "http://jira.somehost.com:8080/intermediatePath/somePathName", + ); + }); + + it("builds url with globally specified intermediatePath", () => { + const { jira } = createTestInstance({ + intermediatePath: "intermediatePath", + }); + + expect(jira.makeUri({ pathname: "/somePathName" })).to.eql( + "http://jira.somehost.com:8080/intermediatePath/somePathName", + ); + }); + + it("builds url with query string parameters", () => { + const { jira } = createTestInstance(); + + const url = jira.makeUri({ + pathname: "/path", + query: { + fields: "field1,field2", + expand: "three", + }, + }); + + expect(url).toBe("http://jira.somehost.com:8080/rest/api/2/path?fields=field1%2Cfield2&expand=three"); + }); + + it("makeWebhookUri functions properly in the average case", () => { + const { jira } = createTestInstance(); + + expect( + jira.makeWebhookUri({ + pathname: "/somePathName", + }), + ).to.eql("http://jira.somehost.com:8080/rest/webhooks/1.0/somePathName"); + }); + + it("makeUri functions properly no port http", () => { + const { jira } = createTestInstance({ + port: undefined, + }); + + expect( + jira.makeUri({ + pathname: "/somePathName", + }), + ).to.eql("http://jira.somehost.com/rest/api/2/somePathName"); + }); + + it("makeUri functions properly no port https", () => { + const { jira } = createTestInstance({ + protocol: "https", + port: undefined, + }); + + expect( + jira.makeUri({ + pathname: "/somePathName", + }), + ).to.eql("https://jira.somehost.com/rest/api/2/somePathName"); + }); + }); + + describe("doRequest Tests", () => { + it("doRequest functions properly in the default case", async () => { + const { jira, mockAdapter } = createTestInstance(); + mockAdapter.onGet("http://jira.somehost.com:8080/rest/api/2/somePathName").reply(200, "Successful response!"); + mockAdapter.onGet().reply(200, "Nope"); + + const response = await jira.doRequest({ + url: jira.makeUri({ pathname: "/somePathName" }), + }); + + expect(response).toEqual("Successful response!"); + }); + + it("doRequest authenticates properly when specified", async () => { + const username = "someusername"; + const password = "somepassword"; + + const { jira, mockAdapter } = createTestInstance({ + username, + password, + }); + mockAdapter + .onGet("http://jira.somehost.com:8080/rest/api/2/somePathName", { + headers: { + Authorization: "Basic c29tZXVzZXJuYW1lOnNvbWVwYXNzd29yZA==", + }, + }) + .reply(200, "Successful response!"); + + const result = await jira.doRequest({ + url: jira.makeUri({ pathname: "/somePathName" }), + }); + expect(result).toBe("Successful response!"); + }); + + it("doRequest times out with specified option", async () => { + const { jira, mockAdapter } = createTestInstance({ + timeout: 1, + }); + mockAdapter.onGet().timeout(); + + try { + const result = await jira.doRequest({}); + } catch (e) { + expect(e.message).toBe("timeout of 1ms exceeded"); + } + }); + + it("doRequest throws an error properly", async () => { + const { jira, mockAdapter } = createTestInstance(); + + expect(jira.doRequest({})).rejects.toThrowError("Request failed with status code 404"); + }); + + it("doRequest throws a list of errors properly", async () => { + const { jira, mockAdapter } = createTestInstance(); + mockAdapter.onGet().reply(400, { errorMessages: ["some error to throw"] }); + + try { + await jira.doRequest({}); + } catch (error) { + expect(axios.isAxiosError(error)).toBe(true); + expect(error.response?.status).toBe(400); + } + }); + + it("doRequest does not throw an error on empty response", async () => { + const { jira, mockAdapter } = createTestInstance(); + mockAdapter.onGet().reply(200, undefined); + + const response = await jira.doRequest({}); + expect(response).to.be.undefined; + }); + + it("doRequest throws an error when request failed", async () => { + const { jira, mockAdapter } = createTestInstance(); + mockAdapter.onGet().reply(404, "This is an error message"); + + expect(jira.doRequest({})).rejects.toThrowError("Request failed with status code 404"); + }); + }); +}); diff --git a/src/jira.ts b/src/jira.ts index b90e5d4..a5b609d 100644 --- a/src/jira.ts +++ b/src/jira.ts @@ -1,1454 +1,1147 @@ -import * as url from 'url' -import axios, { AxiosInstance, AxiosRequestConfig, Method } from 'axios' - -interface MakeUrlParams { - pathname?: string - query?: Record - intermediatePath?: string - encode?: boolean -} - -interface MakeSprintUrlParams { - pathname?: string - query?: Record - intermediatePath?: string -} - -export interface JiraApiOptions { - protocol: 'http' | 'https' - host: string - port?: number - apiVersion?: 1 | 2 - base?: string - intermediatePath?: string - webHookVersion?: string - greenhopperVersion?: string - baseOptions?: AxiosRequestConfig - axios?: AxiosInstance - strictSSL?: boolean - oauth?: { - consumer_key: string - access_token: string - consumer_secret: string - access_token_secret: string - signature_method: string - } - bearer?: string - timeout?: number - username?: string - password?: string +import axios, { Axios, AxiosInstance, AxiosRequestConfig } from "axios"; +import { Agent } from "https"; +import { components, operations as cloudOperations } from "./generated/openapi-cloud"; +import { operations } from "./generated/openapi-software"; + +export interface MakeUrlParams { + pathname?: string; + query?: Record; + intermediatePath?: string; + encode?: boolean; } +export type WithStrictSSL = { + strictSSL?: boolean; + ca?: string; + axios?: undefined; +}; + +export type WithAxios = { + axios?: AxiosInstance; + strictSSL?: undefined; + ca?: undefined; +}; + +export type AxiosOrStrict = WithStrictSSL | WithAxios; + +export type JiraApiOptions = { + protocol?: "http" | "https"; + host: string; + port?: number; + apiVersion?: 1 | 2 | 3; + base?: string; + intermediatePath?: string; + webHookVersion?: string; + baseOptions?: AxiosRequestConfig; + bearer?: string; + timeout?: number; + username?: string; + password?: string; +} & AxiosOrStrict; + +export type PaginationParams = { + startAt?: number; + maxResults?: number; + fields?: string[]; + expand?: string[]; +}; /** - * @name JiraApi - * @class * Wrapper for the JIRA Rest Api * https://docs.atlassian.com/jira/REST/6.4.8/ */ -export default class JiraApi { - protocol: string - - host: string - - port: number - - apiVersion: number - - base: string - - intermediatePath: string - - strictSSL: any - - axios: AxiosInstance - - webhookVersion: string - - greenhopperVersion: string - - baseOptions: AxiosRequestConfig +export class JiraApi { + protocol: string; + host: string; + port: number; + apiVersion: number; + base: string; + intermediatePath: string; + axios: AxiosInstance; + httpsAgent?: Agent; + webhookVersion: string; + baseOptions: AxiosRequestConfig; /** + * Construct a new JiraApi * @constructor - * @function * @param {JiraApiOptions} options */ constructor(options: JiraApiOptions) { - this.protocol = options.protocol || 'http' - this.host = options.host - this.port = options.port || null - this.apiVersion = options.apiVersion || 2 - this.base = options.base || '' - this.intermediatePath = options.intermediatePath + this.protocol = options.protocol || "https"; + this.host = options.host; + this.port = options.port || null; + this.apiVersion = options.apiVersion || 2; + this.base = options.base || ""; + this.intermediatePath = options.intermediatePath; + // This is so we can fake during unit tests - this.axios = options.axios || axios.create() - this.webhookVersion = options.webHookVersion || '1.0' - this.greenhopperVersion = options.greenhopperVersion || '1.0' - this.baseOptions = { ...options.baseOptions } + if ("axios" in options) { + this.axios = options.axios; + } else if ("strictSSL" in options || "ca" in options) { + this.httpsAgent = new Agent({ rejectUnauthorized: !options.strictSSL, ca: options.ca }); + this.axios = axios.create({ + httpsAgent: this.httpsAgent, + }); + } else { + this.axios = axios.create(); + } + this.webhookVersion = options.webHookVersion || "1.0"; + this.baseOptions = { ...options.baseOptions }; - if (!this.baseOptions.headers) this.baseOptions.headers = {} + if (!this.baseOptions.headers) this.baseOptions.headers = {}; if (options.bearer) { - this.baseOptions.headers['Authorization'] = 'Bearer ' + options.bearer + this.baseOptions.headers.Authorization = `Bearer ${options.bearer}`; } else if (options.username && options.password) { this.baseOptions.auth = { username: options.username, password: options.password, - } + }; } if (options.timeout) { - this.baseOptions.timeout = options.timeout + this.baseOptions.timeout = options.timeout; } - this.baseOptions.headers['X-Atlassian-Token'] = 'no-check' + this.baseOptions.headers["X-Atlassian-Token"] = "no-check"; } /** - * @typedef JiraApiOptions - * @type {object} - * @property {string} [protocol=http] - What protocol to use to connect to - * jira? Ex: http|https - * @property {string} host - What host is this tool connecting to for the jira - * instance? Ex: jira.somehost.com - * @property {string} [port] - What port is this tool connecting to jira with? Only needed for - * none standard ports. Ex: 8080, 3000, etc - * @property {string} [username] - Specify a username for this tool to authenticate all - * requests with. - * @property {string} [password] - Specify a password for this tool to authenticate all - * requests with. Cloud users need to generate an [API token](https://confluence.atlassian.com/cloud/api-tokens-938839638.html) for this value. - * @property {string} [apiVersion=2] - What version of the jira rest api is the instance the - * tool is connecting to? - * @property {string} [base] - What other url parts exist, if any, before the rest/api/ - * section? - * @property {string} [intermediatePath] - If specified, overwrites the default rest/api/version - * section of the uri - * @property {boolean} [strictSSL=true] - Does this tool require each request to be - * authenticated? Defaults to true. - * @property {function} [request] - What method does this tool use to make its requests? - * Defaults to request from request-promise - * @property {number} [timeout] - Integer containing the number of milliseconds to wait for a - * server to send response headers (and start the response body) before aborting the request. Note - * that if the underlying TCP connection cannot be established, the OS-wide TCP connection timeout - * will overrule the timeout option ([the default in Linux can be anywhere from 20-120 * - * seconds](http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout)). - * @property {string} [webhookVersion=1.0] - What webhook version does this api wrapper need to - * hit? - * @property {string} [greenhopperVersion=1.0] - What webhook version does this api wrapper need - * to hit? - * @property {string} [ca] - Specify a CA certificate - * @property {OAuth} [oauth] - Specify an OAuth object for this tool to authenticate all requests - * using OAuth. - * @property {string} [bearer] - Specify an OAuth bearer token to authenticate all requests with. - */ - - /** - * @typedef OAuth - * @type {object} - * @property {string} consumer_key - The consumer entered in Jira Preferences. - * @property {string} consumer_secret - The private RSA file. - * @property {string} access_token - The generated access token. - * @property {string} access_token_secret - The generated access toke secret. - * @property {string} signature_method [signature_method=RSA-SHA1] - OAuth signurate methode - * Possible values RSA-SHA1, HMAC-SHA1, PLAINTEXT. Jira Cloud supports only RSA-SHA1. - */ - - /** - * @typedef {object} UriOptions - * @property {string} pathname - The url after the specific functions path - * @property {object} [query] - An object of all query parameters - * @property {string} [intermediatePath] - Overwrites with specified path - */ - - /** - * @name makeRequestHeader - * @function * Creates a requestOptions object based on the default template for one - * @param {string} uri - * @param {object} [options] - an object containing fields and formatting how the + * @param url + * @param options an object containing fields and formatting how the */ - makeRequestHeader(url, options: AxiosRequestConfig = {}): AxiosRequestConfig { + makeRequestHeader(url: string, options: AxiosRequestConfig = {}): AxiosRequestConfig { return { - method: options.method || 'GET', + method: options.method || "GET", url, ...options, - } + }; } /** - * @typedef makeRequestHeaderOptions - * @type {object} - * @property {string} [method] - HTTP Request Method. ie GET, POST, PUT, DELETE - */ - - /** - * @name makeUri - * @function * Creates a URI object for a given pathname - * @param {object} [options] - an object containing path information - */ - makeUri({ - pathname, - query, - intermediatePath, - encode = false, - }: MakeUrlParams) { - const intermediateToUse = this.intermediatePath || intermediatePath - const tempPath = intermediateToUse || `/rest/api/${this.apiVersion}` - const uri = url.format({ - protocol: this.protocol, - hostname: this.host, - port: this.port, - pathname: `${this.base}${tempPath}${pathname}`, - query, - }) - return encode ? encodeURI(uri) : decodeURIComponent(uri) + * @param [options] - an object containing path information + */ + makeUri({ pathname, query, intermediatePath }: MakeUrlParams) { + const intermediateToUse = this.intermediatePath || intermediatePath; + const tempPath = intermediateToUse || `/rest/api/${this.apiVersion}`; + const uri = new URL("http://localhost"); + uri.protocol = this.protocol; + uri.hostname = this.host; + uri.port = this.port?.toString(); + uri.pathname = `${this.base}${tempPath}${pathname}`; + + for (const key in query) { + uri.searchParams.append(key, query[key].toString()); + } + return uri.toString(); } /** - * @typedef makeUriOptions - * @type {object} - * @property {string} pathname - The url after the /rest/api/version - * @property {object} query - a query object - * @property {string} intermediatePath - If specified will overwrite the /rest/api/version section - */ - - /** - * @name makeWebhookUri - * @function * Creates a URI object for a given pathName - * @param {object} [options] - An options object specifying uri information + * @param [options] - An options object specifying uri information */ makeWebhookUri({ pathname, - intermediatePath, }: { - pathname?: string - intermediatePath?: string + pathname?: string; }) { - const intermediateToUse = this.intermediatePath || intermediatePath - const tempPath = - intermediateToUse || `/rest/webhooks/${this.webhookVersion}` - const uri = url.format({ - protocol: this.protocol, - hostname: this.host, - port: this.port, - pathname: `${this.base}${tempPath}${pathname}`, - }) - return decodeURIComponent(uri) - } - - /** - * @typedef makeWebhookUriOptions - * @type {object} - * @property {string} pathname - The url after the /rest/webhooks - * @property {string} intermediatePath - If specified will overwrite the /rest/webhooks section - */ - - /** - * @name makeSprintQueryUri - * @function - * Creates a URI object for a given pathName - * @param {object} [options] - The url after the /rest/ - */ - makeSprintQueryUri({ - pathname, - query, - intermediatePath, - }: MakeSprintUrlParams) { - const intermediateToUse = this.intermediatePath || intermediatePath - const tempPath = - intermediateToUse || `/rest/greenhopper/${this.greenhopperVersion}` - const uri = url.format({ - protocol: this.protocol, - hostname: this.host, - port: this.port, - pathname: `${this.base}${tempPath}${pathname}`, - query, - }) - return decodeURIComponent(uri) + return this.makeUri({ + pathname, + intermediatePath: `/rest/webhooks/${this.webhookVersion}`, + }); } /** - * @typedef makeSprintQueryUriOptions - * @type {object} - * @property {string} pathname - The url after the /rest/api/version - * @property {object} query - a query object - * @property {string} intermediatePath - will overwrite the /rest/greenhopper/version section - */ - - /** - * @typedef makeDevStatusUri - * @function * Creates a URI object for a given pathname - * @arg {pathname, query, intermediatePath} obj1 - * @param {string} pathname obj1.pathname - The url after the /rest/api/version - * @param {object} query obj1.query - a query object - * @param {string} intermediatePath obj1.intermediatePath - If specified will overwrite the * /rest/dev-status/latest/issue/detail section */ makeDevStatusUri({ pathname, query, - intermediatePath, }: { - pathname?: string - query?: Record - intermediatePath?: string + pathname?: string; + query?: Record; }) { - const intermediateToUse = this.intermediatePath || intermediatePath - const tempPath = intermediateToUse || '/rest/dev-status/latest/issue' - const uri = url.format({ - protocol: this.protocol, - hostname: this.host, - port: this.port, - pathname: `${this.base}${tempPath}${pathname}`, + return this.makeUri({ + pathname, query, - }) - return decodeURIComponent(uri) + intermediatePath: "/rest/dev-status/latest/issue", + }); } /** - * @name makeAgile1Uri - * @function * Creates a URI object for a given pathname - * @param {UriOptions} object + * @param object */ - makeAgileUri(object) { - const intermediateToUse = this.intermediatePath || object.intermediatePath - const tempPath = intermediateToUse || '/rest/agile/1.0' - const uri = url.format({ - protocol: this.protocol, - hostname: this.host, - port: this.port, - pathname: `${this.base}${tempPath}${object.pathname}`, - query: object.query, - }) - return decodeURIComponent(uri) + makeAgileUri(object: MakeUrlParams) { + return this.makeUri({ + ...object, + intermediatePath: object.intermediatePath ?? "/rest/agile/1.0", + }); } - /** - * @name doRequest - * @function - * Does a request based on the requestOptions object - * @param {object} requestOptions - fields on this object get posted as a request header for - * requests to jira - */ async doRequest(requestOptions: AxiosRequestConfig) { - const response = await this.doPlainRequest(requestOptions) - return response.data + return this.doRawRequest(requestOptions).then((response) => response.data); } - async doPlainRequest(requestOptions: AxiosRequestConfig) { + async doRawRequest(requestOptions: AxiosRequestConfig) { const options = { ...this.baseOptions, ...requestOptions, - } - console.log('request', options) - return this.axios.request(options) + }; + + return this.axios.request(options); } /** - * @name findIssue - * @function * Find an issue in jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290709) - * @param {string} issueNumber - The issue number to search for including the project key - * @param {string} expand - The resource expansion to return additional fields in the response - * @param {string} fields - Comma separated list of field ids or keys to retrieve - * @param {string} properties - Comma separated list of properties to retrieve - * @param {boolean} fieldsByKeys - False by default, used to retrieve fields by key instead of id + * @param issueNumber - The issue number to search for including the project key + * @param expand - The resource expansion to return additional fields in the response + * @param fields - Comma separated list of field ids or keys to retrieve + * @param properties - Comma separated list of properties to retrieve + * @param fieldsByKeys - False by default, used to retrieve fields by key instead of id */ findIssue( issueNumber: string, expand?: string, fields?: string, properties?: string, - fieldsByKeys?: boolean - ): Promise { - return this.doRequest( + fieldsByKeys?: boolean, + ): Promise { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueNumber}`, query: { - expand: expand || '', - fields: fields || '*all', - properties: properties || '*all', + expand: expand || "", + fields: fields || "*all", + properties: properties || "*all", fieldsByKeys: fieldsByKeys || false, }, - }) - ) - ) + }), + ), + ); } /** - * @name downloadUserAvatar - * @function * Download an avatar * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290709) - * @param {number} avatarId - The avatar to download + * @param ownerId + * @param avatarId - The avatar to download */ async downloadUserAvatar( ownerId: string, - avatarId: number + avatarId: number, ): Promise<{ - mimeType: string - content: Buffer + mimeType: string; + content: Buffer; }> { - const response = await this.doPlainRequest( + const response = await this.doRawRequest( this.makeRequestHeader( this.makeUri({ - pathname: `/useravatar`, - intermediatePath: '/secure', + pathname: "/useravatar", + intermediatePath: "/secure", query: { ownerId: ownerId, avatarId: avatarId, }, }), - { responseType: 'arraybuffer' } - ) - ) + { responseType: "arraybuffer" }, + ), + ); return { - mimeType: response.headers['content-type'], + mimeType: response.headers["content-type"], content: response.data, - } + }; } /** - * @name downloadAvatar - * @function * Download an avatar * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290709) * @param avatarType - * @param {number} avatarId - The avatar to download + * @param avatarId - The avatar to download */ async downloadAvatar( avatarType: string, - avatarId: number + avatarId: number, ): Promise<{ - mimeType: string - content: Buffer + mimeType: string; + content: Buffer; }> { - const response = await this.doPlainRequest( + const response = await this.doRawRequest( this.makeRequestHeader( this.makeUri({ - pathname: `/viewavatar`, - intermediatePath: '/secure', + pathname: "/viewavatar", + intermediatePath: "/secure", query: { avatarType: avatarType, avatarId: avatarId, }, }), - { responseType: 'arraybuffer' } - ) - ) + { responseType: "arraybuffer" }, + ), + ); return { - mimeType: response.headers['content-type'], + mimeType: response.headers["content-type"], content: response.data, - } + }; } /** - * @name downloadAttachment - * @function * Download an attachment * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id288524) - * @param {object} attachment - the attachment + * @param attachment - the attachment */ - async downloadAttachment(attachment): Promise { - const result = await this.doPlainRequest( + async downloadAttachment(attachment: { id: string; filename: string }): Promise { + const result = await this.doRawRequest( this.makeRequestHeader( this.makeUri({ pathname: `/attachment/${attachment.id}/${attachment.filename}`, - intermediatePath: '/secure', + intermediatePath: "/secure", encode: true, }), - { responseType: 'arraybuffer' } - ) - ) - return result.data + { responseType: "arraybuffer" }, + ), + ); + return result.data; } /** - * @name deleteAttachment - * @function * Remove the attachment * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-attachment-id-delete) - * @param {string} attachmentId - the attachment id + * @param attachmentId - the attachment id */ - deleteAttachment(attachmentId) { - return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: `/attachment/${attachmentId}`, - }), { method: 'DELETE', json: false, encoding: null })); + deleteAttachment(attachmentId: string) { + return this.doRequest( + this.makeRequestHeader( + this.makeUri({ + pathname: `/attachment/${attachmentId}`, + }), + { method: "DELETE" }, + ), + ); } /** - * @name getUnresolvedIssueCount - * @function * Get the unresolved issue count * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id288524) - * @param {string} version - the version of your product you want to find the unresolved + * @param version - the version of your product you want to find the unresolved * issues of. */ - async getUnresolvedIssueCount(version) { + async getUnresolvedIssueCount(version: string) { const requestHeaders = this.makeRequestHeader( this.makeUri({ pathname: `/version/${version}/unresolvedIssueCount`, - }) - ) - const response = await this.doRequest(requestHeaders) - return response.issuesUnresolvedCount + }), + ); + const response = await this.doRawRequest(requestHeaders); + return response.data.issuesUnresolvedCount; } /** - * @name getProject - * @function * Get the Project by project key * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id289232) - * @param {string} project - key for the project + * @param project - key for the project */ - getProject(project) { + getProject(project: string) { return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/project/${project}`, - }) - ) - ) + }), + ), + ); } /** - * @name createProject - * @function * Create a new Project - * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/project-createProject) - * @param {object} project - with specs + * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/project-createproject: string) + * @param project - with specs */ - createProject(project) { + createProject(project: string) { return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/project/', + pathname: "/project/", }), { - method: 'POST', + method: "POST", data: project, - } - ) - ) - } - - /** Find the Rapid View for a specified project - * @name findRapidView - * @function - * @param {string} projectName - name for the project - */ - async findRapidView(projectName) { - const response = await this.doRequest( - this.makeRequestHeader( - this.makeSprintQueryUri({ - pathname: '/rapidviews/list', - }) - ) - ) - - if (typeof projectName === 'undefined' || projectName === null) - return response.data.views - - const rapidViewResult = response.data.views.find( - (x) => x.name.toLowerCase() === projectName.toLowerCase() - ) - - return rapidViewResult - } - - /** Get the most recent sprint for a given rapidViewId - * @name getLastSprintForRapidView - * @function - * @param {string} rapidViewId - the id for the rapid view - */ - async getLastSprintForRapidView(rapidViewId) { - const response = await this.doRequest( - this.makeRequestHeader( - this.makeSprintQueryUri({ - pathname: `/sprintquery/${rapidViewId}`, - }) - ) - ) - return response.data.sprints.pop() + }, + ), + ); } - /** Get the issues for a rapidView / sprint - * @name getSprintIssues - * @function - * @param {string} rapidViewId - the id for the rapid view - * @param {string} sprintId - the id for the sprint + /** Get the issues for a board / sprint + * @param boardId + * @param sprintId - the id for the sprint */ - getSprintIssues(rapidViewId, sprintId) { - return this.doRequest( + getSprintIssues(boardId: string, sprintId: string) { + return this.doRequest( this.makeRequestHeader( - this.makeSprintQueryUri({ - pathname: '/rapid/charts/sprintreport', - query: { - rapidViewId, - sprintId, - }, - }) - ) - ) + this.makeAgileUri({ + pathname: `board/${boardId}/sprint/${sprintId}/issue`, + }), + ), + ); } /** Get a list of Sprints belonging to a Rapid View - * @name listSprints - * @function - * @param {string} rapidViewId - the id for the rapid view + * @param boardId - the id for the rapid view */ - listSprints(rapidViewId) { - return this.doRequest( + listSprints(boardId: string) { + return this.doRequest( this.makeRequestHeader( - this.makeSprintQueryUri({ - pathname: `/sprintquery/${rapidViewId}`, - }) - ) - ) + this.makeAgileUri({ + pathname: `/board/${boardId}/sprint`, + }), + ), + ); } /** Get details about a Sprint - * @name getSprint - * @function - * @param {string} sprintId - the id for the sprint view + * @param sprintId - the id for the sprint view */ - getSprint(sprintId) { - return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: `/sprint/${sprintId}`, - }))); + getSprint(sprintId: string) { + return this.doRequest( + this.makeRequestHeader( + this.makeAgileUri({ + pathname: `/sprint/${sprintId}`, + }), + ), + ); } /** Add an issue to the project's current sprint - * @name addIssueToSprint - * @function - * @param {string} issueId - the id of the existing issue - * @param {string} sprintId - the id of the sprint to add it to - */ - addIssueToSprint(issueId, sprintId) { - return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: `/sprint/${sprintId}/issue`, - }), { - method: 'POST', - body: { - issues: [issueId], - }, - })); + * @param issueId - the id of the existing issue + * @param sprintId - the id of the sprint to add it to + */ + addIssueToSprint(issueId: string, sprintId: string) { + return this.doRequest( + this.makeRequestHeader( + this.makeAgileUri({ + pathname: `/sprint/${sprintId}/issue`, + }), + { + method: "POST", + data: { + issues: [issueId], + }, + }, + ), + ); } /** Create an issue link between two issues - * @name issueLink - * @function - * @param {object} link - a link object formatted how the Jira API specifies + * @param link - a link object formatted how the Jira API specifies */ - issueLink(link) { - return this.doRequest( + issueLink(link: components["schemas"]["RemoteIssueLinkRequest"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/issueLink', + pathname: "/issueLink", }), { - method: 'POST', + method: "POST", data: link, - } - ) - ) + }, + ), + ); } /** List all issue link types jira knows about * [Jira Doc](https://docs.atlassian.com/software/jira/docs/api/REST/8.5.0/#api/2/issueLinkType-getIssueLinkTypes) - * @name listIssueLinkTypes - * @function */ listIssueLinkTypes() { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/issueLinkType', - }) - ) - ) + pathname: "/issueLinkType", + }), + ), + ); } /** Retrieves the remote links associated with the given issue. - * @name getRemoteLinks - * @function - * @param {string} issueNumber - the issue number to find remote links for. + * @param issueNumber - the issue number to find remote links for. */ - getRemoteLinks(issueNumber) { - return this.doRequest( + getRemoteLinks(issueNumber: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueNumber}/remotelink`, - }) - ) - ) + }), + ), + ); } /** - * @name createRemoteLink - * @function * Creates a remote link associated with the given issue. - * @param {string} issueNumber - The issue number to create the remotelink under - * @param {object} remoteLink - the remotelink object as specified by the Jira API + * @param issueNumber - The issue number to create the remotelink under + * @param remoteLink - the remotelink object as specified by the Jira API */ - createRemoteLink(issueNumber, remoteLink) { - return this.doRequest( + createRemoteLink(issueNumber: string, remoteLink: components["schemas"]["RemoteIssueLinkRequest"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueNumber}/remotelink`, }), { - method: 'POST', + method: "POST", data: remoteLink, - } - ) - ) + }, + ), + ); } /** - * @name deleteRemoteLink - * @function * Delete a remote link with given issueNumber and id - * @param {string} issueNumber - The issue number to delete the remotelink under - * @param {string} id the remotelink id + * @param issueNumber - The issue number to delete the remotelink under + * @param id the remotelink id */ - deleteRemoteLink(issueNumber, id) { - return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: `/issue/${issueNumber}/remotelink/${id}`, - }), { - method: 'DELETE', - followAllRedirects: true, - })); + deleteRemoteLink(issueNumber: string, id: string) { + return this.doRequest( + this.makeRequestHeader( + this.makeUri({ + pathname: `/issue/${issueNumber}/remotelink/${id}`, + }), + { + method: "DELETE", + }, + ), + ); } /** Get Versions for a project * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id289653) - * @name getVersions - * @function - * @param {string} project - A project key to get versions for - * @param {object} query - An object containing the query params - */ - getVersions(project, query = {}) { - return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: `/project/${project}/versions`, - query, - }))); + * @param project - A project key to get versions for + * @param query - An object containing the query params + */ + getVersions(project: string, query: Pick) { + return this.doRequest( + this.makeRequestHeader( + this.makeUri({ + pathname: `/project/${project}/versions`, + query: { + expand: query.expand?.join(","), + }, + }), + ), + ); } /** Get details of single Version in project * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/version-getVersion) - * @name getVersion - * @function - * @param {string} version - The id of this version + * @param version - The id of this version */ - getVersion(version) { - return this.doRequest( + getVersion(version: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/version/${version}`, - }) - ) - ) + }), + ), + ); } /** Create a version * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id288232) - * @name createVersion - * @function - * @param {object} version - an object of the new version + * @param version - an object of the new version */ - createVersion(version) { - return this.doRequest( + createVersion(version: components["schemas"]["Version"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/version', + pathname: "/version", }), { - method: 'POST', + method: "POST", data: version, - } - ) - ) + }, + ), + ); } /** Update a version * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#d2e510) - * @name updateVersion - * @function - * @param {object} version - an new object of the version to update + * @param version - a new object of the version to update */ - updateVersion(version) { - return this.doRequest( + updateVersion(version: components["schemas"]["Version"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/version/${version.id}`, }), { - method: 'PUT', + method: "PUT", data: version, - } - ) - ) + }, + ), + ); } /** Delete a version * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/version-delete) - * @name deleteVersion - * @function - * @param {string} versionId - the ID of the version to delete - * @param {string} moveFixIssuesToId - when provided, existing fixVersions will be moved + * @param versionId - the ID of the version to delete + * @param moveFixIssuesToId - when provided, existing fixVersions will be moved * to this ID. Otherwise, the deleted version will be removed from all * issue fixVersions. - * @param {string} moveAffectedIssuesToId - when provided, existing affectedVersions will + * @param moveAffectedIssuesToId - when provided, existing affectedVersions will * be moved to this ID. Otherwise, the deleted version will be removed * from all issue affectedVersions. */ - deleteVersion(versionId, moveFixIssuesToId, moveAffectedIssuesToId) { - return this.doRequest( + deleteVersion(versionId: string, moveFixIssuesToId: string, moveAffectedIssuesToId: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/version/${versionId}`, }), { - method: 'DELETE', + method: "DELETE", data: { moveFixIssuesTo: moveFixIssuesToId, moveAffectedIssuesTo: moveAffectedIssuesToId, }, - } - ) - ) + }, + ), + ); } /** Move version * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/version-moveVersion) - * @name moveVersion - * @function - * @param {string} versionId - the ID of the version to delete - * @param {string} position - an object of the new position + * @param versionId - the ID of the version to delete + * @param position - an object of the new position */ - moveVersion(versionId, position) { - return this.doRequest( + moveVersion(versionId: string, position: components["schemas"]["VersionMoveBean"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/version/${versionId}/move`, }), { - method: 'POST', + method: "POST", data: position, - } - ) - ) + }, + ), + ); } /** Pass a search query to Jira * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#d2e4424) - * @name searchJira - * @function - * @param {string} searchString - jira query string in JQL - * @param {object} optional - object containing any of the following properties - * @param {integer} [optional.startAt=0]: optional starting index number - * @param {integer} [optional.maxResults=50]: optional The maximum number of items to - * return per page. To manage page size, Jira may return fewer items per - * page where a large number of fields are requested. - * @param {array} [optional.fields]: optional array of string names of desired fields - * @param {array} [optional.expand]: optional array of string names of desired expand nodes + * @param searchString - jira query string in JQL + * @param optional - object containing any of the pagination properties */ - searchJira(searchString, optional = {}) { - return this.doRequest( + searchJira(searchString: string, optional: PaginationParams) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/search', + pathname: "/search", }), { - method: 'POST', + method: "POST", data: { jql: searchString, ...optional, }, - } - ) - ) + }, + ), + ); } /** Create a Jira user * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/user-createUser) - * @name createUser - * @function - * @param {object} user - Properly Formatted User object + * @param user - Properly Formatted User object */ - createUser(user) { - return this.doRequest( + createUser(user: components["schemas"]["NewUserDetails"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/user', + pathname: "/user", }), { - method: 'POST', + method: "POST", data: user, - } - ) - ) + }, + ), + ); } /** Search user on Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#d2e3756) - * @name searchUsers - * @function - * @param {SearchUserOptions} options */ - searchUsers({ - username, - query, - startAt, - maxResults, - includeActive, - includeInactive, - }) { - return this.doRequest( + searchUsers({ username, query, startAt, maxResults }: cloudOperations["findUsers"]["parameters"]["query"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/user/search', + pathname: "/user/search", query: { username, query, startAt: startAt || 0, maxResults: maxResults || 50, - includeActive: includeActive || true, - includeInactive: includeInactive || false, }, - }) - ) - ) + }), + ), + ); } - /** - * @typedef SearchUserOptions - * @type {object} - * @property {string} username - (DEPRECATED) A query string used to search username, name or - * e-mail address - * @property {string} query - A query string that is matched against user attributes - * (displayName, and emailAddress) to find relevant users. The string can match the prefix of - * the attribute's value. For example, query=john matches a user with a displayName of John - * Smith and a user with an emailAddress of johnson@example.com. Required, unless accountId - * or property is specified. - * @property {integer} [startAt=0] - The index of the first user to return (0-based) - * @property {integer} [maxResults=50] - The maximum number of users to return - * @property {boolean} [includeActive=true] - If true, then active users are included - * in the results - * @property {boolean} [includeInactive=false] - If true, then inactive users - * are included in the results - */ - /** Get all users in group on Jira - * @name getUsersInGroup - * @function - * @param {string} groupname - A query string used to search users in group - * @param {integer} [startAt=0] - The index of the first user to return (0-based) - * @param {integer} [maxResults=50] - The maximum number of users to return (defaults to 50). + * @param groupname - A query string used to search users in group + * @param [startAt=0] - The index of the first user to return (0-based) + * @param [maxResults=50] - The maximum number of users to return (defaults to 50). * @deprecated */ - getUsersInGroup(groupname, startAt = 0, maxResults = 50) { - return this.doRequest( + getUsersInGroup(groupname: string, startAt = 0, maxResults = 50) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/group', + pathname: "/group", query: { groupname, expand: `users[${startAt}:${maxResults}]`, }, - }) - ) - ) + }), + ), + ); } /** Get all members of group on Jira - * @name getMembersOfGroup - * @function - * @param {string} groupname - A query string used to search users in group - * @param {integer} [startAt=0] - The index of the first user to return (0-based) - * @param {integer} [maxResults=50] - The maximum number of users to return (defaults to 50). - * @param {boolean} [includeInactiveUsers=false] - Fetch inactive users too (defaults to false). - */ - getMembersOfGroup(groupname, startAt = 0, maxResults = 50, includeInactiveUsers = false) { + * @param groupname - A query string used to search users in group + * @param [startAt=0] - The index of the first user to return (0-based) + * @param [maxResults=50] - The maximum number of users to return (defaults to 50). + * @param [includeInactiveUsers=false] - Fetch inactive users too (defaults to false). + */ + getMembersOfGroup(groupname: string, startAt = 0, maxResults = 50, includeInactiveUsers = false) { return this.doRequest( - this.makeRequestHeader(this.makeUri({ - pathname: '/group/member', - query: { - groupname, - expand: `users[${startAt}:${maxResults}]`, - includeInactiveUsers, - }, - }), { - followAllRedirects: true, - }), + this.makeRequestHeader( + this.makeUri({ + pathname: "/group/member", + query: { + groupname, + expand: `users[${startAt}:${maxResults}]`, + includeInactiveUsers, + }, + }), + ), ); } /** Get issues related to a user * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id296043) - * @name getUsersIssues - * @function - * @param {string} username - username of user to search for - * @param {boolean} open - determines if only open issues should be returned + * @param username - username of user to search for + * @param open - determines if only open issues should be returned */ - getUsersIssues(username, open) { - const openJql = open ? ' AND status in (Open, \'In Progress\', Reopened)' : ''; - return this.searchJira(`assignee = ${username.replace('@', '\\u0040')}${openJql}`, {}); + getUsersIssues(username: string, open: boolean) { + const openJql = open ? " AND status in (Open, 'In Progress', Reopened)" : ""; + return this.searchJira(`assignee = ${username.replace("@", "\\u0040")}${openJql}`, {}); } /** Returns a user. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-user-get) - * @name getUser - * @function - * @param {string} accountId - The accountId of user to search for - * @param {string} expand - The expand for additional info (groups,applicationRoles) + * @param accountId - The accountId of user to search for + * @param expand - The expand for additional info (groups,applicationRoles) */ - getUser(accountId, expand) { - return this.doRequest( + getUser(accountId: string, expand?: string[]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/user', + pathname: "/user", query: { accountId, - expand, + expand: expand?.join(","), }, - }) - ) - ) + }), + ), + ); } /** Returns a list of all (active and inactive) users. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-users-search-get) - * @name getUsers - * @function - * @param {integer} [startAt=0] - The index of the first user to return (0-based) - * @param {integer} [maxResults=50] - The maximum number of users to return (defaults to 50). + * @param [startAt=0] - The index of the first user to return (0-based) + * @param [maxResults=50] - The maximum number of users to return (defaults to 50). */ getUsers(startAt = 0, maxResults = 100) { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/users', + pathname: "/users", query: { startAt, maxResults, }, - }) - ) - ) + }), + ), + ); } /** Add issue to Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290028) - * @name addNewIssue - * @function - * @param {object} issue - Properly Formatted Issue object */ - addNewIssue(issue) { - return this.doRequest( + addNewIssue(issue: components["schemas"]["IssueUpdateDetails"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/issue', + pathname: "/issue", }), { - method: 'POST', + method: "POST", data: issue, - } - ) - ) + }, + ), + ); } /** Add a user as a watcher on an issue - * @name addWatcher - * @function - * @param {string} issueKey - the key of the existing issue - * @param {string} username - the jira username to add as a watcher to the issue + * @param issueKey - the key of the existing issue + * @param username - the jira username to add as a watcher to the issue */ - addWatcher(issueKey, username) { - return this.doRequest( + addWatcher(issueKey: string, username: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueKey}/watchers`, }), { - method: 'POST', + method: "POST", data: username, - } - ) - ) + }, + ), + ); } /** Change an assignee on an issue * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue-assign) - * @name assignee - * @function - * @param {string} issueKey - the key of the existing issue - * @param {string} assigneeName - the jira username to add as a new assignee to the issue + * @param issueKey - the key of the existing issue + * @param assigneeName - the jira username to add as a new assignee to the issue */ - updateAssignee(issueKey, assigneeName) { - return this.doRequest( + updateAssignee(issueKey: string, assigneeName: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueKey}/assignee`, }), { - method: 'PUT', + method: "PUT", data: { name: assigneeName }, - } - ) - ) + }, + ), + ); } /** Change an assignee on an issue * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-assignee-put) - * @name updateAssigneeWithId - * @function - * @param {string} issueKey - the key of the existing issue - * @param {string} userId - the jira username to add as a new assignee to the issue + * @param issueKey - the key of the existing issue + * @param userId - the jira username to add as a new assignee to the issue */ - updateAssigneeWithId(issueKey, userId) { - return this.doRequest( + updateAssigneeWithId(issueKey: string, userId: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueKey}/assignee`, }), { - method: 'PUT', + method: "PUT", data: { accountId: userId }, - } - ) - ) + }, + ), + ); } /** Delete issue from Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290791) - * @name deleteIssue - * @function - * @param {string} issueId - the Id of the issue to delete + * @param issueId - the Id of the issue to delete */ - deleteIssue(issueId) { - return this.doRequest( + deleteIssue(issueId: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueId}`, }), { - method: 'DELETE', - } - ) - ) + method: "DELETE", + }, + ), + ); } /** Update issue in Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290878) - * @name updateIssue - * @function - * @param {string} issueId - the Id of the issue to update - * @param {object} issueUpdate - update Object as specified by the rest api - * @param {object} query - adds parameters to the query string - */ - updateIssue(issueId, issueUpdate, query = {}) { - return this.doRequest( + * @param issueId - the Id of the issue to update + * @param issueUpdate - update Object as specified by the rest api + * @param query - adds parameters to the query string + */ + updateIssue( + issueId: string, + issueUpdate: components["schemas"]["IssueUpdateDetails"], + query?: cloudOperations["editIssue"]["parameters"]["query"], + ) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueId}`, - query, }), { data: issueUpdate, - method: 'PUT', - } - ) - ) + method: "PUT", + params: query, + }, + ), + ); } /** Get issue edit metadata * [Jira Doc](https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/issue-getEditIssueMeta) - * @name issueEditMeta - * @function - * @param {string} issueId - the Id of the issue to retrieve edit metadata for + * @param issueId - the Id of the issue to retrieve edit metadata for */ - issueEditMeta(issueId) { - return this.doRequest( + issueEditMeta(issueId: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueId}/editmeta`, }), - {} - ) - ) + {}, + ), + ); } /** List Components * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name listComponents - * @function - * @param {string} project - key for the project + * @param project - key for the project */ - listComponents(project) { - return this.doRequest( + listComponents(project: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/project/${project}/components`, - }) - ) - ) + }), + ), + ); } /** Add component to Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290028) - * @name addNewComponent - * @function - * @param {object} component - Properly Formatted Component + * @param component - Properly Formatted Component */ - addNewComponent(component) { - return this.doRequest( + addNewComponent(component: components["schemas"]["ProjectComponent"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/component', + pathname: "/component", }), { - method: 'POST', + method: "POST", data: component, - } - ) - ) + }, + ), + ); } /** Update Jira component - * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/component-updateComponent) - * @name updateComponent - * @function - * @param {string} componentId - the Id of the component to update - * @param {object} component - Properly Formatted Component + * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/component-updatecomponent: string) + * @param componentId - the Id of the component to update + * @param component - Properly Formatted Component */ - updateComponent(componentId, component) { - return this.doRequest( + updateComponent(componentId: string, component: components["schemas"]["ProjectComponent"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/component/${componentId}`, }), { - method: 'PUT', + method: "PUT", data: component, - } - ) - ) + }, + ), + ); } /** Delete component from Jira * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-api-2-component-id-delete) - * @name deleteComponent - * @function - * @param {string} id - The ID of the component. - * @param {string} moveIssuesTo - The ID of the component to replace the deleted component. + * @param id - The ID of the component. + * @param moveIssuesTo - The ID of the component to replace the deleted component. * If this value is null no replacement is made. */ - deleteComponent(id, moveIssuesTo) { - return this.doRequest( + deleteComponent(id: string, moveIssuesTo: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/component/${id}`, query: moveIssuesTo ? { moveIssuesTo } : null, }), { - method: 'DELETE', - } - ) - ) + method: "DELETE", + }, + ), + ); } /** Get count of issues assigned to the component. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-component-id-relatedIssueCounts-get) - * @name relatedIssueCounts - * @function - * @param {string} id - Component Id. + * @param id - Component Id. */ - relatedIssueCounts(id) { - return this.doRequest( + relatedIssueCounts(id: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/component/${id}/relatedIssueCounts`, - }) - ) - ) + }), + ), + ); } /** Create custom Jira field * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field-createCustomField) - * @name createCustomField - * @function - * @param {object} field - Properly formatted Field object + * @param field - Properly formatted Field object */ - createCustomField(field) { - return this.doRequest( + createCustomField(field: components["schemas"]["CustomFieldDefinitionJsonBean"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/field', + pathname: "/field", }), { - method: 'POST', + method: "POST", data: field, - } - ) - ) + }, + ), + ); } /** List all fields custom and not that jira knows about. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name listFields - * @function */ listFields() { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/field', - }) - ) - ) + pathname: "/field", + }), + ), + ); } /** Add an option for a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-createOption) - * @name createFieldOption - * @function - * @param {string} fieldKey - the key of the select list field - * @param {object} option - properly formatted Option object + * @param fieldKey - the key of the select list field + * @param option - properly formatted Option object */ - createFieldOption(fieldKey, option) { - return this.doRequest( + createFieldOption(fieldKey: string, option: components["schemas"]["IssueFieldOptionCreateBean"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/field/${fieldKey}/option`, }), { - method: 'POST', + method: "POST", data: option, - } - ) - ) + }, + ), + ); } /** Returns all options defined for a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-getAllOptions) - * @name listFieldOptions - * @function - * @param {string} fieldKey - the key of the select list field + * @param fieldKey - the key of the select list field */ - listFieldOptions(fieldKey) { - return this.doRequest( + listFieldOptions(fieldKey: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/field/${fieldKey}/option`, - }) - ) - ) + }), + ), + ); } /** Creates or updates an option for a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-putOption) - * @name upsertFieldOption - * @function - * @param {string} fieldKey - the key of the select list field - * @param {string} optionId - the id of the modified option - * @param {object} option - properly formatted Option object + * @param fieldKey - the key of the select list field + * @param optionId - the id of the modified option + * @param option - properly formatted Option object */ - upsertFieldOption(fieldKey, optionId, option) { - return this.doRequest( + upsertFieldOption(fieldKey: string, optionId: string, option: components["schemas"]["IssueFieldOption"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/field/${fieldKey}/option/${optionId}`, }), { - method: 'PUT', + method: "PUT", data: option, - } - ) - ) + }, + ), + ); } /** Returns an option for a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-getOption) - * @name getFieldOption - * @function - * @param {string} fieldKey - the key of the select list field - * @param {string} optionId - the id of the option + * @param fieldKey - the key of the select list field + * @param optionId - the id of the option */ - getFieldOption(fieldKey, optionId) { - return this.doRequest( + getFieldOption(fieldKey: string, optionId: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/field/${fieldKey}/option/${optionId}`, - }) - ) - ) + }), + ), + ); } /** Deletes an option from a select list issue field. * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#api/2/field/{fieldKey}/option-delete) - * @name deleteFieldOption - * @function - * @param {string} fieldKey - the key of the select list field - * @param {string} optionId - the id of the deleted option + * @param fieldKey - the key of the select list field + * @param optionId - the id of the deleted option */ - deleteFieldOption(fieldKey, optionId) { - return this.doRequest( + deleteFieldOption(fieldKey: string, optionId: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/field/${fieldKey}/option/${optionId}`, }), { - method: 'DELETE', - } - ) - ) + method: "DELETE", + }, + ), + ); } /** - * @name getIssueProperty - * @function * Get Property of Issue by Issue and Property Id * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue/{issueIdOrKey}/properties-getProperty) - * @param {string} issueNumber - The issue number to search for including the project key - * @param {string} property - The property key to search for + * @param issueNumber - The issue number to search for including the project key + * @param property - The property key to search for */ - getIssueProperty(issueNumber, property) { - return this.doRequest( + getIssueProperty(issueNumber: string, property: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueNumber}/properties/${property}`, - }) - ) - ) + }), + ), + ); } /** - * @name getIssueChangelog - * @function * List all changes for an issue, sorted by date, starting from the latest * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue/{issueIdOrKey}/changelog) - * @param {string} issueNumber - The issue number to search for including the project key - * @param {integer} [startAt=0] - optional starting index number - * @param {integer} [maxResults=50] - optional ending index number + * @param issueNumber - The issue number to search for including the project key + * @param [startAt=0] - optional starting index number + * @param [maxResults=50] - optional ending index number */ - getIssueChangelog(issueNumber, startAt = 0, maxResults = 50) { - return this.doRequest( + getIssueChangelog(issueNumber: string, startAt = 0, maxResults = 50) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueNumber}/changelog`, @@ -1456,151 +1149,121 @@ export default class JiraApi { startAt, maxResults, }, - }) - ) - ) + }), + ), + ); } /** - * @name getIssueWatchers - * @function * List all watchers for an issue * [Jira Doc](http://docs.atlassian.com/jira/REST/cloud/#api/2/issue-getIssueWatchers) - * @param {string} issueNumber - The issue number to search for including the project key + * @param issueNumber - The issue number to search for including the project key */ - getIssueWatchers(issueNumber) { - return this.doRequest( + getIssueWatchers(issueNumber: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueNumber}/watchers`, - }) - ) - ) + }), + ), + ); } /** List all priorities jira knows about * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name listPriorities - * @function */ listPriorities() { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/priority', - }) - ) - ) + pathname: "/priority", + }), + ), + ); } /** List Transitions for a specific issue that are available to the current user * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name listTransitions - * @function - * @param {string} issueId - get transitions available for the issue + * @param issueId - get transitions available for the issue */ - listTransitions(issueId) { - return this.doRequest( + listTransitions(issueId: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueId}/transitions`, query: { - expand: 'transitions.fields', + expand: "transitions.fields", }, - }) - ) - ) + }), + ), + ); } /** Transition issue in Jira * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id290489) - * @name transitionsIssue - * @function - * @param {string} issueId - the Id of the issue to delete - * @param {object} issueTransition - transition object from the jira rest API + * @param issueId - the Id of the issue to delete + * @param issueTransition - transition object from the jira rest API */ - transitionIssue(issueId, issueTransition) { - return this.doRequest( + transitionIssue(issueId: string, issueTransition: components["schemas"]["IssueUpdateDetails"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueId}/transitions`, }), { data: issueTransition, - method: 'POST', - } - ) - ) + method: "POST", + }, + ), + ); } /** List all Viewable Projects * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id289193) - * @name listProjects - * @function */ listProjects() { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/project', - }) - ) - ) - } - - /** Add a comment to an issue - * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#id108798) - * @name addComment - * @function - * @param {string} issueId - Issue to add a comment to - * @param {string} comment - string containing comment - */ - addComment(issueId, comment) { - return this.doRequest( - this.makeRequestHeader( - this.makeUri({ - pathname: `/issue/${issueId}/comment`, + pathname: "/project", }), - { - data: comment, - method: 'POST', - } - ) - ) + ), + ); } - /** Add a comment to an issue, supports full comment object + /** Add a comment to an issue * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#id108798) - * @name addCommentAdvanced - * @function - * @param {string} issueId - Issue to add a comment to - * @param {object} comment - The object containing your comment data + * @param issueId - Issue to add a comment to + * @param comment - string containing comment */ - addCommentAdvanced(issueId, comment) { - return this.doRequest( + addComment(issueId: string, comment: components["schemas"]["Comment"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueId}/comment`, }), { data: comment, - method: 'POST', - } - ) - ) + method: "POST", + }, + ), + ); } /** Update comment for an issue * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue-updateComment) - * @name updateComment - * @function - * @param {string} issueId - Issue with the comment - * @param {string} commentId - Comment that is updated - * @param {string} comment - string containing new comment - * @param {object} [options={}] - extra options - */ - updateComment(issueId, commentId, comment, options = {}) { - return this.doRequest( + * @param issueId - Issue with the comment + * @param commentId - Comment that is updated + * @param comment - string containing new comment + * @param [options={}] - extra options + */ + updateComment( + issueId: string, + commentId: string, + comment: components["schemas"]["Comment"], + options: cloudOperations["updateComment"]["parameters"]["query"] = {}, + ) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueId}/comment/${commentId}`, @@ -1608,210 +1271,220 @@ export default class JiraApi { { data: { data: comment, + }, + params: { ...options, }, - method: 'PUT', - } - ) - ) + method: "PUT", + }, + ), + ); } /** - * @name getComments - * @function * Get Comments by IssueId. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-comment-list-post) - * @param {string} issueId - this issue this comment is on + * @param issueId - this issue this comment is on */ - getComments(issueId) { - return this.doRequest( + getComments(issueId: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueId}/comment`, - }) - ) - ) + }), + ), + ); } /** - * @name getComment - * @function * Get Comment by Id. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-comment-list-post) - * @param {string} issueId - this issue this comment is on - * @param {number} commentId - the id of the comment + * @param issueId - this issue this comment is on + * @param commentId - the id of the comment */ - getComment(issueId, commentId) { - return this.doRequest( + getComment(issueId: string, commentId: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueId}/comment/${commentId}`, - }) - ) - ) + }), + ), + ); } /** - * @name deleteComment - * @function * Delete Comments by Id. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-comment-list-post) - * @param {string} issueId - this issue this comment is on - * @param {number} commentId - the id of the comment + * @param issueId - this issue this comment is on + * @param commentId - the id of the comment */ - deleteComment(issueId, commentId) { - return this.doRequest( + deleteComment(issueId: string, commentId: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueId}/comment/${commentId}`, }), { - method: 'DELETE', - } - ) - ) + method: "DELETE", + }, + ), + ); } /** Add a worklog to a project * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id291617) - * @name addWorklog - * @function - * @param {string} issueId - Issue to add a worklog to - * @param {object} worklog - worklog object from the rest API - * @param {object} newEstimate - the new value for the remaining estimate field - * @param {object} [options={}] - extra options - */ - addWorklog(issueId, worklog, newEstimate = null, options = {}) { - const query = { - adjustEstimate: newEstimate ? 'new' : 'auto', - ...(newEstimate ? { newEstimate } : {}), - ...options, - } - - const config: AxiosRequestConfig = { - url: this.makeUri({ - pathname: `/issue/${issueId}/worklog`, - query, - }), - data: worklog, - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - } - - return this.doRequest(config) + * @param issueId - Issue to add a worklog to + * @param worklog - worklog object from the rest API + * @param newEstimate - the new value for the remaining estimate field + * @param [options={}] - extra options + */ + addWorklog( + issueId: string, + worklog: components["schemas"]["Worklog"], + newEstimate = null, + options: cloudOperations["addWorklog"]["parameters"]["query"] = {}, + ) { + return this.doRequest( + this.makeRequestHeader( + this.makeUri({ + pathname: `/issue/${issueId}/worklog`, + }), + { + data: worklog, + params: { + adjustEstimate: newEstimate ? "new" : "auto", + ...(newEstimate ? { newEstimate } : {}), + ...options, + }, + method: "POST", + headers: { + "Content-Type": "application/json", + }, + }, + ), + ); } /** Get ids of worklogs modified since * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/worklog-getWorklogsForIds) - * @name updatedWorklogs - * @function - * @param {number} since - a date time in unix timestamp format since when updated worklogs + * @param since - a date time in unix timestamp format since when updated worklogs * will be returned. - * @param {string} expand - ptional comma separated list of parameters to expand: properties + * @param expand - ptional comma separated list of parameters to expand: properties * (provides worklog properties). */ - updatedWorklogs(since, expand) { + updatedWorklogs(since: string, expand: string[]) { const config: AxiosRequestConfig = { - url: this.makeUri({ - pathname: '/worklog/updated', - query: { since, expand }, - }), - method: 'GET', + method: "GET", headers: { - 'Content-Type': 'application/json', + "Content-Type": "application/json", }, - } + }; - return this.doRequest(config) + return this.doRequest( + this.makeRequestHeader( + this.makeUri({ + pathname: "/worklog/updated", + query: { since, expand: expand?.join(",") }, + }), + config, + ), + ); } /** Delete worklog from issue * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#d2e1673) - * @name deleteWorklog - * @function - * @param {string} issueId - the Id of the issue to delete - * @param {string} worklogId - the Id of the worklog in issue to delete + * @param issueId - the Id of the issue to delete + * @param worklogId - the Id of the worklog in issue to delete */ - deleteWorklog(issueId, worklogId) { - return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: `/issue/${issueId}/worklog/${worklogId}`, - }), { - method: 'DELETE', - followAllRedirects: true, - })); + deleteWorklog(issueId: string, worklogId: number) { + return this.doRequest( + this.makeRequestHeader( + this.makeUri({ + pathname: `/issue/${issueId}/worklog/${worklogId}`, + }), + { + method: "DELETE", + }, + ), + ); } /** Update worklog from issue * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-worklogs/#api-rest-api-2-issue-issueidorkey-worklog-id-put) - * @name updateWorklog - * @function - * @param {string} issueId - the Id of the issue to update - * @param {string} worklogId - the Id of the worklog in issue to update - * @param {string} body - value to set - */ - updateWorklog(issueId, worklogId, body) { - return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: `/issue/${issueId}/worklog/${worklogId}`, - }), { - method: 'PUT', - body, - followAllRedirects: true, - })); + * @param issueId - the Id of the issue to update + * @param worklogId - the Id of the worklog in issue to update + * @param body - value to set + */ + updateWorklog( + issueId: string, + worklogId: number, + body: components["schemas"]["Worklog"], + options: cloudOperations["updateWorklog"]["parameters"]["query"] = {}, + ) { + return this.doRequest( + this.makeRequestHeader( + this.makeUri({ + pathname: `/issue/${issueId}/worklog/${worklogId}`, + }), + { + method: "PUT", + data: body, + params: options, + }, + ), + ); } /** Deletes an issue link. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issueLink-linkId-delete) - * @name deleteIssueLink - * @function - * @param {string} linkId - the Id of the issue link to delete + * @param linkId - the Id of the issue link to delete */ - deleteIssueLink(linkId) { - return this.doRequest( + deleteIssueLink(linkId: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issueLink/${linkId}`, }), { - method: 'DELETE', - } - ) - ) + method: "DELETE", + }, + ), + ); } /** Returns worklog details for a list of worklog IDs. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-worklog-list-post) - * @name getWorklogs - * @function * @param {array} worklogsIDs - a list of worklog IDs. - * @param {string} expand - expand to include additional information about worklogs + * @param expand - expand to include additional information about worklogs * */ - getWorklogs(worklogsIDs, expand) { - return this.doRequest(this.makeRequestHeader(this.makeUri({ - pathname: '/worklog/list', - query: { - expand, - }, - }), { - method: 'POST', - body: { - ids: worklogsIDs, - }, - })); + getWorklogs(worklogsIDs: number[], expand: string[]) { + return this.doRequest( + this.makeRequestHeader( + this.makeUri({ + pathname: "/worklog/list", + query: { + expand: expand?.join(","), + }, + }), + { + method: "POST", + data: { + ids: worklogsIDs, + }, + }, + ), + ); } /** Get worklogs list from a given issue * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-api-3-issue-issueIdOrKey-worklog-get) - * @name getIssueWorklogs - * @function - * @param {string} issueId - the Id of the issue to find worklogs for - * @param {integer} [startAt=0] - optional starting index number - * @param {integer} [maxResults=1000] - optional ending index number + * @param issueId - the Id of the issue to find worklogs for + * @param [startAt=0] - optional starting index number + * @param [maxResults=1000] - optional ending index number */ - getIssueWorklogs(issueId, startAt = 0, maxResults = 1000) { - return this.doRequest( + getIssueWorklogs(issueId: string, startAt = 0, maxResults = 1000) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueId}/worklog`, @@ -1819,288 +1492,257 @@ export default class JiraApi { startAt, maxResults, }, - }) - ) - ) + }), + ), + ); } /** List all Issue Types jira knows about * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id295946) - * @name listIssueTypes - * @function */ listIssueTypes() { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/issuetype', - }) - ) - ) + pathname: "/issuetype", + }), + ), + ); } /** Register a webhook * [Jira Doc](https://developer.atlassian.com/display/JIRADEV/JIRA+Webhooks+Overview) - * @name registerWebhook - * @function - * @param {object} webhook - properly formatted webhook + * @param webhook - properly formatted webhook */ - registerWebhook(webhook) { - return this.doRequest( + registerWebhook(webhook: components["schemas"]["WebhookRegistrationDetails"]) { + return this.doRequest( this.makeRequestHeader( this.makeWebhookUri({ - pathname: '/webhook', + pathname: "/webhook", }), { - method: 'POST', + method: "POST", data: webhook, - } - ) - ) + }, + ), + ); } /** List all registered webhooks * [Jira Doc](https://developer.atlassian.com/display/JIRADEV/JIRA+Webhooks+Overview) - * @name listWebhooks - * @function */ listWebhooks() { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeWebhookUri({ - pathname: '/webhook', - }) - ) - ) + pathname: "/webhook", + }), + ), + ); } /** Get a webhook by its ID * [Jira Doc](https://developer.atlassian.com/display/JIRADEV/JIRA+Webhooks+Overview) - * @name getWebhook - * @function - * @param {string} webhookID - id of webhook to get + * @param webhookID - id of webhook to get */ - getWebhook(webhookID) { - return this.doRequest( + getWebhook(webhookID: string) { + return this.doRequest( this.makeRequestHeader( this.makeWebhookUri({ pathname: `/webhook/${webhookID}`, - }) - ) - ) + }), + ), + ); } /** Delete a registered webhook * [Jira Doc](https://developer.atlassian.com/display/JIRADEV/JIRA+Webhooks+Overview) - * @name issueLink - * @function - * @param {string} webhookID - id of the webhook to delete + * @param webhookID - id of the webhook to delete */ - deleteWebhook(webhookID) { - return this.doRequest( + deleteWebhook(webhookID: string) { + return this.doRequest( this.makeRequestHeader( this.makeWebhookUri({ pathname: `/webhook/${webhookID}`, }), { - method: 'DELETE', - } - ) - ) + method: "DELETE", + }, + ), + ); } /** Describe the currently authenticated user * [Jira Doc](http://docs.atlassian.com/jira/REST/latest/#id2e865) - * @name getCurrentUser - * @function */ getCurrentUser() { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/myself', - }) - ) - ) + pathname: "/myself", + }), + ), + ); } - /** Retrieve the backlog of a certain Rapid View - * @name getBacklogForRapidView - * @function - * @param {string} rapidViewId - rapid view id + /** Retrieve the backlog of a certain Board + * @param boardId - rapid view id */ - getBacklogForRapidView(rapidViewId) { - return this.doRequest( + getBacklogForBoard(boardId: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/xboard/plan/backlog/data', - query: { - rapidViewId, - }, - }) - ) - ) + pathname: `board/${boardId}/backlog`, + }), + ), + ); } /** Add attachment to a Issue * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/issue/{issueIdOrKey}/attachments-addAttachment) - * @name addAttachmentOnIssue - * @function - * @param {string} issueId - issue id - * @param {object} readStream - readStream object from fs + * @param issueId - issue id + * @param readStream - readStream object from fs */ - addAttachmentOnIssue(issueId, readStream) { - return this.doRequest( + addAttachmentOnIssue(issueId: string, readStream: Buffer) { + const formData = new FormData(); + formData.append("file", new Blob([readStream], { type: "application/octet-stream" })); + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueId}/attachments`, }), { - method: 'POST', + method: "POST", headers: { - 'X-Atlassian-Token': 'nocheck', + "X-Atlassian-Token": "nocheck", }, - data: new FormData().append('file', readStream), - } - ) - ) + data: formData, + }, + ), + ); } /** Notify people related to issue * [Jira Doc](https://docs.atlassian.com/jira/REST/cloud/#api/2/issue-notify) - * @name issueNotify - * @function - * @param {string} issueId - issue id - * @param {object} notificationBody - properly formatted body + * @param issueId - issue id + * @param notificationBody - properly formatted body */ - issueNotify(issueId, notificationBody) { - return this.doRequest( + issueNotify(issueId: string, notificationBody: components["schemas"]["Notification"]) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/issue/${issueId}/notify`, }), { - method: 'POST', + method: "POST", data: notificationBody, - } - ) - ) + }, + ), + ); } /** Get list of possible statuses * [Jira Doc](https://docs.atlassian.com/jira/REST/latest/#api/2/status-getStatuses) - * @name listStatus - * @function */ listStatus() { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/status', - }) - ) - ) + pathname: "/status", + }), + ), + ); } /** Get a Dev-Status summary by issue ID - * @name getDevStatusSummary - * @function - * @param {string} issueId - id of issue to get + * @param issueId - id of issue to get */ - getDevStatusSummary(issueId) { - return this.doRequest( + getDevStatusSummary(issueId: string) { + return this.doRequest( this.makeRequestHeader( this.makeDevStatusUri({ - pathname: '/summary', + pathname: "/summary", query: { issueId, }, - }) - ) - ) + }), + ), + ); } /** Get a Dev-Status detail by issue ID - * @name getDevStatusDetail - * @function - * @param {string} issueId - id of issue to get - * @param {string} applicationType - type of application (stash, bitbucket) - * @param {string} dataType - info to return (repository, pullrequest) + * @param issueId - id of issue to get + * @param applicationType - type of application (stash, bitbucket) + * @param dataType - info to return (repository, pullrequest) */ - getDevStatusDetail(issueId, applicationType, dataType) { - return this.doRequest( + getDevStatusDetail(issueId: string, applicationType: string, dataType: string) { + return this.doRequest( this.makeRequestHeader( this.makeDevStatusUri({ - pathname: '/detail', + pathname: "/detail", query: { issueId, applicationType, dataType, }, - }) - ) - ) + }), + ), + ); } /** Get issue * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/issue-getIssue) - * @name getIssue - * @function - * @param {string} issueIdOrKey - Id of issue - * @param {string} [fields] - The list of fields to return for each issue. - * @param {string} [expand] - A comma-separated list of the parameters to expand. + * @param issueIdOrKey - Id of issue + * @param [fields] - The list of fields to return for each issue. + * @param [expand] - A comma-separated list of the parameters to expand. */ - getIssue(issueIdOrKey, fields, expand) { - return this.doRequest( + getIssue(issueIdOrKey: string, fields: string[], expand: string[]) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/issue/${issueIdOrKey}`, query: { - fields, - expand, + fields: fields?.join(","), + expand: expand?.join(","), }, - }) - ) - ) + }), + ), + ); } /** Move issues to backlog * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/backlog-moveIssuesToBacklog) - * @name moveToBacklog - * @function * @param {array} issues - id or key of issues to get */ - moveToBacklog(issues) { - return this.doRequest( + moveToBacklog(issues: string[]) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ - pathname: '/backlog/issue', + pathname: "/backlog/issue", }), { - method: 'POST', + method: "POST", data: { issues, }, - } - ) - ) + }, + ), + ); } /** Get all boards * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getAllBoards) - * @name getAllBoards - * @function - * @param {number} [startAt=0] - The starting index of the returned boards. - * @param {number} [maxResults=50] - The maximum number of boards to return per page. - * @param {string} [type] - Filters results to boards of the specified type. - * @param {string} [name] - Filters results to boards that match the specified name. - * @param {string} [projectKeyOrId] - Filters results to boards that are relevant to a project. + * @param [type] - Filters results to boards of the specified type. + * @param [name] - Filters results to boards that match the specified name. + * @param [projectKeyOrId] - Filters results to boards that are relevant to a project. + * @param [startAt=0] - The starting index of the returned boards. + * @param [maxResults=50] - The maximum number of boards to return per page. */ - getAllBoards(startAt = 0, maxResults = 50, type, name, projectKeyOrId) { - return this.doRequest( + getAllBoards(type: string, name: string, projectKeyOrId: string, startAt = 0, maxResults = 50) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ - pathname: '/board', + pathname: "/board", query: { startAt, maxResults, @@ -2108,90 +1750,78 @@ export default class JiraApi { name, ...(projectKeyOrId && { projectKeyOrId }), }, - }) - ) - ) + }), + ), + ); } /** Create Board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-createBoard) - * @name createBoard - * @function - * @param {object} boardBody - Board name, type and filter Id is required. - * @param {string} boardBody.type - Valid values: scrum, kanban - * @param {string} boardBody.name - Must be less than 255 characters. - * @param {string} boardBody.filterId - Id of a filter that the user has permissions to view. */ - createBoard(boardBody) { - return this.doRequest( + createBoard(boardBody: operations["createBoard"]["requestBody"]["content"]["application/json"]) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ - pathname: '/board', + pathname: "/board", }), { - method: 'POST', + method: "POST", data: boardBody, - } - ) - ) + }, + ), + ); } /** Get Board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getBoard) - * @name getBoard - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ - getBoard(boardId) { - return this.doRequest( + getBoard(boardId: string) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}`, - }) - ) - ) + }), + ), + ); } /** Delete Board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-deleteBoard) - * @name deleteBoard - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ - deleteBoard(boardId) { - return this.doRequest( + deleteBoard(boardId: string) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}`, }), { - method: 'DELETE', - } - ) - ) + method: "DELETE", + }, + ), + ); } /** Get issues for backlog * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getIssuesForBacklog) - * @name getIssuesForBacklog - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. */ getIssuesForBacklog( - boardId, + boardId: string, + jql: string, + fields: string[], startAt = 0, maxResults = 50, - jql, validateQuery = true, - fields ) { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}/backlog`, @@ -2200,50 +1830,46 @@ export default class JiraApi { maxResults, jql, validateQuery, - fields, + fields: fields.join(","), }, - }) - ) - ) + }), + ), + ); } /** Get Configuration * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getConfiguration) - * @name getConfiguration - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ - getConfiguration(boardId) { - return this.doRequest( + getConfiguration(boardId: string) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}/configuration`, - }) - ) - ) + }), + ), + ); } /** Get issues for board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getIssuesForBoard) - * @name getIssuesForBoard - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. */ getIssuesForBoard( - boardId, + boardId: string, + jql: string | undefined = undefined, + fields = undefined, startAt = 0, maxResults = 50, - jql, validateQuery = true, - fields ) { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}/issue`, @@ -2254,44 +1880,40 @@ export default class JiraApi { validateQuery, fields, }, - }) - ) - ) + }), + ), + ); } /** Get issue estimation for board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/issue-getIssueEstimationForBoard) - * @name getIssueEstimationForBoard - * @function - * @param {string} issueIdOrKey - Id of issue - * @param {number} boardId - The id of the board required to determine which field + * @param issueIdOrKey - Id of issue + * @param boardId - The id of the board required to determine which field * is used for estimation. */ - getIssueEstimationForBoard(issueIdOrKey, boardId) { - return this.doRequest( + getIssueEstimationForBoard(issueIdOrKey: string, boardId: string) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/issue/${issueIdOrKey}/estimation`, query: { boardId, }, - }) - ) - ) + }), + ), + ); } /** Get Epics * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/epic-getEpics) - * @name getEpics - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned epics. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of epics to return per page. Default: 50. - * @param {string} [done] - Filters results to epics that are either done or not done. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned epics. Base index: 0. + * @param [maxResults=50] - The maximum number of epics to return per page. Default: 50. + * @param [done] - Filters results to epics that are either done or not done. * Valid values: true, false. */ - getEpics(boardId, startAt = 0, maxResults = 50, done) { - return this.doRequest( + getEpics(boardId: string, startAt = 0, maxResults = 50, done = undefined) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}/epic`, @@ -2300,57 +1922,61 @@ export default class JiraApi { maxResults, done, }, - }) - ) - ) + }), + ), + ); } /** Get board issues for epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/epic-getIssuesForEpic) * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/epic-getIssuesWithoutEpic) - * @name getBoardIssuesForEpic - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} epicId - Id of epic to retrieve, specify 'none' to get issues without an epic. - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * @param boardId - Id of board to retrieve + * @param epicId - Id of epic to retrieve, specify 'none' to get issues without an epic. + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. */ getBoardIssuesForEpic( - boardId, - epicId, + boardId: string, + epicId: string, startAt = 0, maxResults = 50, - jql, + jql = undefined, validateQuery = true, - fields, + fields = undefined, ) { - return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: `/board/${boardId}/epic/${epicId}/issue`, - query: { - startAt, - maxResults, - jql, - validateQuery, - fields, - }, - }))); + return this.doRequest( + this.makeRequestHeader( + this.makeAgileUri({ + pathname: `/board/${boardId}/epic/${epicId}/issue`, + query: { + startAt, + maxResults, + jql, + validateQuery, + fields, + }, + }), + ), + ); } /** Estimate issue for board * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/issue-estimateIssueForBoard) - * @name estimateIssueForBoard - * @function - * @param {string} issueIdOrKey - Id of issue - * @param {number} boardId - The id of the board required to determine which field + * @param issueIdOrKey - Id of issue + * @param boardId - The id of the board required to determine which field * is used for estimation. - * @param {string} body - value to set + * @param data - value to set */ - estimateIssueForBoard(issueIdOrKey, boardId, data) { - return this.doRequest( + estimateIssueForBoard( + issueIdOrKey: string, + boardId: string, + data: operations["estimateIssueForBoard"]["requestBody"]["content"]["application/json"], + ) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/issue/${issueIdOrKey}/estimation`, @@ -2359,44 +1985,40 @@ export default class JiraApi { }, }), { - method: 'PUT', + method: "PUT", data, - } - ) - ) + }, + ), + ); } /** Rank Issues * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/issue-rankIssues) - * @name rankIssues - * @function - * @param {string} body - value to set + * @param data - value to set */ - rankIssues(data) { - return this.doRequest( + rankIssues(data: operations["rankIssues"]["requestBody"]["content"]["application/json"]) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ - pathname: '/issue/rank', + pathname: "/issue/rank", }), { - method: 'PUT', + method: "PUT", data, - } - ) - ) + }, + ), + ); } /** Get Projects * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/project-getProjects) - * @name getProjects - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned projects. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of projects to return per page. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned projects. Base index: 0. + * @param [maxResults=50] - The maximum number of projects to return per page. * Default: 50. */ - getProjects(boardId, startAt = 0, maxResults = 50) { - return this.doRequest( + getProjects(boardId: string, startAt = 0, maxResults = 50) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}/project`, @@ -2404,115 +2026,103 @@ export default class JiraApi { startAt, maxResults, }, - }) - ) - ) + }), + ), + ); } /** Get Projects Full * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/project-getProjectsFull) - * @name getProjectsFull - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ - getProjectsFull(boardId) { - return this.doRequest( + getProjectsFull(boardId: string) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}/project/full`, - }) - ) - ) + }), + ), + ); } /** Get Board Properties Keys * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/properties-getPropertiesKeys) - * @name getBoardPropertiesKeys - * @function - * @param {string} boardId - Id of board to retrieve + * @param boardId - Id of board to retrieve */ - getBoardPropertiesKeys(boardId) { - return this.doRequest( + getBoardPropertiesKeys(boardId: string) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}/properties`, - }) - ) - ) + }), + ), + ); } /** Delete Board Property * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/properties-deleteProperty) - * @name deleteBoardProperty - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} propertyKey - Id of property to delete + * @param boardId - Id of board to retrieve + * @param propertyKey - Id of property to delete */ - deleteBoardProperty(boardId, propertyKey) { - return this.doRequest( + deleteBoardProperty(boardId: string, propertyKey: string) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}/properties/${propertyKey}`, }), { - method: 'DELETE', - } - ) - ) + method: "DELETE", + }, + ), + ); } /** Set Board Property * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/properties-setProperty) - * @name setBoardProperty - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} propertyKey - Id of property to delete - * @param {string} body - value to set, for objects make sure to stringify first + * @param boardId - Id of board to retrieve + * @param propertyKey - Id of property to delete + * @param data - value to set, for objects make sure to stringify first */ - setBoardProperty(boardId, propertyKey, data) { - return this.doRequest( + setBoardProperty(boardId: string, propertyKey: string, data: string) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}/properties/${propertyKey}`, }), { - method: 'PUT', + method: "PUT", data, - } - ) - ) + }, + ), + ); } /** Get Board Property * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/properties-getProperty) - * @name getBoardProperty - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} propertyKey - Id of property to retrieve + * @param boardId - Id of board to retrieve + * @param propertyKey - Id of property to retrieve */ - getBoardProperty(boardId, propertyKey) { - return this.doRequest( + getBoardProperty(boardId: string, propertyKey: string) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}/properties/${propertyKey}`, - }) - ) - ) + }), + ), + ); } /** Get All Sprints * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/sprint-getAllSprints) - * @name getAllSprints - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned sprints. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of sprints to return per page. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned sprints. Base index: 0. + * @param [maxResults=50] - The maximum number of sprints to return per page. * Default: 50. - * @param {string} [state] - Filters results to sprints in specified states. + * @param [state] - Filters results to sprints in specified states. * Valid values: future, active, closed. */ - getAllSprints(boardId, startAt = 0, maxResults = 50, state) { - return this.doRequest( + getAllSprints(boardId: string, startAt = 0, maxResults = 50, state: string | undefined = undefined) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}/sprint`, @@ -2521,61 +2131,61 @@ export default class JiraApi { maxResults, state, }, - }) - ) - ) + }), + ), + ); } /** Get Board issues for sprint * [Jira Doc](https://developer.atlassian.com/cloud/jira/software/rest/api-group-board/#api-agile-1-0-board-boardid-sprint-sprintid-issue-get) - * @name getBoardIssuesForSprint - * @function - * @param {string} boardId - Id of board to retrieve - * @param {string} sprintId - Id of sprint to retrieve - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * @param boardId - Id of board to retrieve + * @param sprintId - Id of sprint to retrieve + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. - * @param {string} [expand] - A comma-separated list of the parameters to expand. + * @param [fields] - The list of fields to return for each issue. + * @param [expand] - A comma-separated list of the parameters to expand. */ getBoardIssuesForSprint( - boardId, - sprintId, + boardId: string, + sprintId: string, startAt = 0, maxResults = 50, - jql, + jql: string | undefined = undefined, validateQuery = true, - fields, - expand, + fields: string[] | undefined = undefined, + expand: string[] | undefined = undefined, ) { - return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: `/board/${boardId}/sprint/${sprintId}/issue`, - query: { - startAt, - maxResults, - jql, - validateQuery, - fields, - expand, - }, - }))); + return this.doRequest( + this.makeRequestHeader( + this.makeAgileUri({ + pathname: `/board/${boardId}/sprint/${sprintId}/issue`, + query: { + startAt, + maxResults, + jql, + validateQuery, + fields: fields?.join(","), + expand: expand?.join(","), + }, + }), + ), + ); } /** Get All Versions * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/version-getAllVersions) - * @name getAllVersions - * @function - * @param {string} boardId - Id of board to retrieve - * @param {number} [startAt=0] - The starting index of the returned versions. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of versions to return per page. + * @param boardId - Id of board to retrieve + * @param [startAt=0] - The starting index of the returned versions. Base index: 0. + * @param [maxResults=50] - The maximum number of versions to return per page. * Default: 50. - * @param {string} [released] - Filters results to versions that are either released or + * @param [released] - Filters results to versions that are either released or * unreleased.Valid values: true, false. */ - getAllVersions(boardId, startAt = 0, maxResults = 50, released) { - return this.doRequest( + getAllVersions(boardId: string, startAt = 0, maxResults = 50, released: boolean | undefined = undefined) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/board/${boardId}/version`, @@ -2584,264 +2194,254 @@ export default class JiraApi { maxResults, released, }, - }) - ) - ) + }), + ), + ); } /** Get Filter * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/filter) - * @name getFilter - * @function - * @param {string} filterId - Id of filter to retrieve + * @param filterId - Id of filter to retrieve */ - getFilter(filterId) { - return this.doRequest( + getFilter(filterId: string) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/filter/${filterId}`, - }) - ) - ) + }), + ), + ); } /** Get Epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-getEpic) - * @name getEpic - * @function - * @param {string} epicIdOrKey - Id of epic to retrieve + * @param epicIdOrKey - Id of epic to retrieve */ - getEpic(epicIdOrKey) { - return this.doRequest( + getEpic(epicIdOrKey: string) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/epic/${epicIdOrKey}`, - }) - ) - ) + }), + ), + ); } /** Partially update epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-partiallyUpdateEpic) - * @name partiallyUpdateEpic - * @function - * @param {string} epicIdOrKey - Id of epic to retrieve - * @param {string} body - value to set, for objects make sure to stringify first + * @param epicIdOrKey - Id of epic to retrieve + * @param data - data to set */ - partiallyUpdateEpic(epicIdOrKey, data) { - return this.doRequest( + partiallyUpdateEpic( + epicIdOrKey: string, + data: operations["partiallyUpdateEpic"]["requestBody"]["content"]["application/json"], + ) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/epic/${epicIdOrKey}`, }), { - method: 'POST', + method: "POST", data, - } - ) - ) + }, + ), + ); } /** Get issues for epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-getIssuesForEpic) * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-getIssuesWithoutEpic) - * @name getIssuesForEpic - * @function - * @param {string} epicId - Id of epic to retrieve, specify 'none' to get issues without an epic. - * @param {number} [startAt=0] - The starting index of the returned issues. Base index: 0. - * @param {number} [maxResults=50] - The maximum number of issues to return per page. Default: 50. - * @param {string} [jql] - Filters results using a JQL query. - * @param {boolean} [validateQuery] - Specifies whether to validate the JQL query or not. + * @param epicId - Id of epic to retrieve, specify 'none' to get issues without an epic. + * @param [startAt=0] - The starting index of the returned issues. Base index: 0. + * @param [maxResults=50] - The maximum number of issues to return per page. Default: 50. + * @param [jql] - Filters results using a JQL query. + * @param [validateQuery] - Specifies whether to validate the JQL query or not. * Default: true. - * @param {string} [fields] - The list of fields to return for each issue. + * @param [fields] - The list of fields to return for each issue. */ getIssuesForEpic( - epicId, + epicId: string, startAt = 0, maxResults = 50, - jql, + jql: string | undefined = undefined, validateQuery = true, - fields, + fields: string[] | undefined = undefined, ) { - return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: `/epic/${epicId}/issue`, - query: { - startAt, - maxResults, - jql, - validateQuery, - fields, - }, - }))); + return this.doRequest( + this.makeRequestHeader( + this.makeAgileUri({ + pathname: `/epic/${epicId}/issue`, + query: { + startAt, + maxResults, + jql, + validateQuery, + fields: fields?.join(","), + }, + }), + ), + ); } /** Move Issues to Epic * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-moveIssuesToEpic) * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-removeIssuesFromEpic) - * @name moveIssuesToEpic - * @function - * @param {string} epicIdOrKey - Id of epic to move issue to, or 'none' to remove from epic + * @param epicIdOrKey - Id of epic to move issue to, or 'none' to remove from epic * @param {array} issues - array of issues to move */ - moveIssuesToEpic(epicIdOrKey, issues) { - return this.doRequest( + moveIssuesToEpic(epicIdOrKey: string, issues: string[]) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/epic/${epicIdOrKey}/issue`, }), { - method: 'POST', + method: "POST", data: { issues, }, - } - ) - ) + }, + ), + ); } /** Rank Epics * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/epic-rankEpics) - * @name rankEpics - * @function - * @param {string} epicIdOrKey - Id of epic - * @param {string} body - value to set + * @param epicIdOrKey - Id of epic + * @param data - value to set */ - rankEpics(epicIdOrKey, data) { - return this.doRequest( + rankEpics(epicIdOrKey: string, data: operations["rankEpics"]["requestBody"]["content"]["application/json"]) { + return this.doRequest( this.makeRequestHeader( this.makeAgileUri({ pathname: `/epic/${epicIdOrKey}/rank`, }), { - method: 'PUT', + method: "PUT", data, - } - ) - ) + }, + ), + ); } /** - * @name getServerInfo - * @function * Get server info * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-api-2-serverInfo-get) */ getServerInfo() { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/serverInfo', - }) - ) - ) + pathname: "/serverInfo", + }), + ), + ); } /** - * @name getIssueCreateMetadata - * @param {object} optional - object containing any of the following properties - * @param {array} [optional.projectIds]: optional Array of project ids to return metadata for - * @param {array} [optional.projectKeys]: optional Array of project keys to return metadata for - * @param {array} [optional.issuetypeIds]: optional Array of issuetype ids to return metadata for - * @param {array} [optional.issuetypeNames]: optional Array of issuetype names to return metadata - * for - * @param {string} [optional.expand]: optional Include additional information about issue - * metadata. Valid value is 'projects.issuetypes.fields' * Get metadata for creating an issue. * [Jira Doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-createmeta-get) */ - getIssueCreateMetadata(optional = {}) { - return this.doRequest( + getIssueCreateMetadata(optional: cloudOperations['getCreateIssueMeta']['parameters']['query'] = {}) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/issue/createmeta', - query: optional, - }) - ) - ) + pathname: "/issue/createmeta", + query: { + issuetypeIds: optional.issuetypeIds?.join(","), + projectIds: optional.projectIds?.join(","), + projectKeys: optional.projectKeys?.join(","), + issuetypeNames: optional.issuetypeNames?.join(","), + expand: optional.expand, + }, + }), + ), + ); } getIssueCreateMetaProjectIssueTypes(projectIdOrKey: string | number, startAt: number, maxResults: number) { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/issue/createmeta/'+projectIdOrKey+'/issuetypes', + pathname: `/issue/createmeta/${projectIdOrKey}/issuetypes`, query: { startAt, - maxResults - } - }) - ) - ) + maxResults, + }, + }), + ), + ); } getIssueCreateMetaFields(projectIdOrKey: string | number, issueTypeId: string, startAt: number, maxResults: number) { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/issue/createmeta/'+projectIdOrKey+'/issuetypes/'+issueTypeId, + pathname: `/issue/createmeta/${projectIdOrKey}/issuetypes/${issueTypeId}`, query: { startAt, - maxResults - } - }) - ) - ) + maxResults, + }, + }), + ), + ); } getWorkflows(query = {}) { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeUri({ - pathname: '/workflow', + pathname: "/workflow", query: query, }), { - method: 'GET', - } - ) - ) + method: "GET", + }, + ), + ); } getWorkflowScheme(projectKeyOrId: string, query = {}) { - return this.doRequest( + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/project/${projectKeyOrId}/workflowscheme`, query: query, }), { - method: 'GET', - } - ) - ) + method: "GET", + }, + ), + ); } /** Generic Get Request * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/2/) - * @name genericGet - * @function - * @param {string} endpoint - Rest API endpoint + * @param endpoint - Rest API endpoint */ - genericGet(endpoint) { - return this.doRequest( + genericGet(endpoint: string) { + return this.doRequest( this.makeRequestHeader( this.makeUri({ pathname: `/${endpoint}`, - }) - ) - ) + }), + ), + ); } /** Generic Get Request to the Agile API * [Jira Doc](https://docs.atlassian.com/jira-software/REST/cloud/2/) - * @name genericGet - * @function - * @param {string} endpoint - Rest API endpoint - */ - genericAgileGet(endpoint) { - return this.doRequest(this.makeRequestHeader(this.makeAgileUri({ - pathname: `/${endpoint}`, - }))); + * @param endpoint - Rest API endpoint + */ + genericAgileGet(endpoint: string) { + return this.doRequest( + this.makeRequestHeader( + this.makeAgileUri({ + pathname: `/${endpoint}`, + }), + ), + ); } } diff --git a/test/.eslintrc b/test/.eslintrc deleted file mode 100644 index 6cfcd00..0000000 --- a/test/.eslintrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "env": { - "mocha": true - }, - "globals": { - "assert": true, - "expect": true - }, - "rules": { - "no-unused-expressions": 0 - } -} diff --git a/test/helper.js b/test/helper.js deleted file mode 100644 index 5121f05..0000000 --- a/test/helper.js +++ /dev/null @@ -1,8 +0,0 @@ -import chai from 'chai'; -import chaiAsPromised from 'chai-as-promised'; - -global.should = chai.should(); -chai.use(chaiAsPromised); - -global.expect = chai.expect; -global.assert = chai.assert; diff --git a/test/jira-tests.js b/test/jira-tests.js deleted file mode 100644 index 796461b..0000000 --- a/test/jira-tests.js +++ /dev/null @@ -1,1072 +0,0 @@ -import { expect } from 'chai'; -import rewire from 'rewire'; - -const JiraApi = rewire('../src/jira'); - -function getOptions(options) { - const actualOptions = options || {}; - return { - protocol: actualOptions.protocol || 'http', - host: actualOptions.host || 'jira.somehost.com', - port: actualOptions.port || '8080', - username: actualOptions.username || 'someusername', - password: actualOptions.password || 'somepassword', - apiVersion: actualOptions.apiVersion || '2.0', - base: actualOptions.base || '', - strictSSL: actualOptions.hasOwnProperty('strictSSL') ? actualOptions.strictSSL : true, - request: actualOptions.request, - oauth: actualOptions.oauth || null, - intermediatePath: actualOptions.intermediatePath, - bearer: actualOptions.bearer || null, - ca: actualOptions.ca || null, - }; -} - -describe('Jira API Tests', () => { - describe('Constructor Tests', () => { - it('Constructor functions properly', () => { - const jira = new JiraApi(getOptions()); - - expect(jira.protocol).to.eql('http'); - expect(jira.host).to.eql('jira.somehost.com'); - expect(jira.port).to.eql('8080'); - expect(jira.baseOptions.auth.user).to.eql('someusername'); - expect(jira.baseOptions.auth.pass).to.eql('somepassword'); - expect(jira.apiVersion).to.eql('2.0'); - }); - - it('Constructor with no auth credentials', () => { - const { username, password, ...options } = getOptions(); - - expect(options.username).to.not.eql(username); - expect(options.password).to.not.eql(password); - - const jira = new JiraApi(options); - - expect(jira.baseOptions.auth).to.be.undefined; - }); - - it('Constructor with bearer credentials', () => { - const options = getOptions({ - bearer: 'testBearer', - }); - - const jira = new JiraApi(options); - - expect(jira.baseOptions.auth).to.eql({ - user: '', - pass: '', - sendImmediately: true, - bearer: options.bearer, - }); - }); - - it('Constructor with oauth credentials', () => { - const options = getOptions({ - oauth: { - consumer_key: 'consumer', - consumer_secret: 'consumer_secret', - access_token: 'token', - access_token_secret: 'token_secret', - }, - }); - - const jira = new JiraApi(options); - - expect(jira.baseOptions.oauth).to.eql({ - consumer_key: 'consumer', - consumer_secret: 'consumer_secret', - token: 'token', - token_secret: 'token_secret', - signature_method: 'RSA-SHA1', - }); - }); - - it('Constructor with timeout', () => { - const jira = new JiraApi({ - timeout: 2, - ...getOptions(), - }); - - expect(jira.baseOptions.timeout).to.equal(2); - }); - - it('Constructor with strictSSL off', () => { - const jira = new JiraApi( - getOptions({ - strictSSL: false, - }), - ); - - expect(jira.strictSSL).to.equal(false); - }); - - it('should allow the user to pass in a certificate authority', () => { - const jira = new JiraApi( - getOptions({ - ca: 'fakestring', - }), - ); - - expect(jira.baseOptions.ca).to.equal('fakestring'); - }); - }); - - describe('makeRequestHeader Tests', () => { - it('makeRequestHeader functions properly in the average case', () => { - const jira = new JiraApi(getOptions()); - - expect(jira.makeRequestHeader(jira.makeUri({ - pathname: '/somePathName', - }))).to.eql({ - json: true, - method: 'GET', - rejectUnauthorized: true, - uri: 'http://jira.somehost.com:8080/rest/api/2.0/somePathName', - }); - }); - - it('makeRequestHeader functions properly with a different method', () => { - const jira = new JiraApi(getOptions()); - - expect(jira.makeRequestHeader(jira.makeUri({ - pathname: '/somePathName', - }), { method: 'POST' })).to.eql({ - json: true, - method: 'POST', - rejectUnauthorized: true, - uri: 'http://jira.somehost.com:8080/rest/api/2.0/somePathName', - }); - }); - }); - - describe('makeUri', () => { - it('builds url with pathname and default host, protocol, port, and base api', () => { - const jira = new JiraApi(getOptions()); - - expect(jira.makeUri({ pathname: '/somePathName' })) - .to.eql('http://jira.somehost.com:8080/rest/api/2.0/somePathName'); - }); - - it('builds url with intermediatePath', () => { - const jira = new JiraApi(getOptions()); - - expect(jira.makeUri({ pathname: '/somePathName', intermediatePath: 'intermediatePath' })) - .to.eql('http://jira.somehost.com:8080/intermediatePath/somePathName'); - }); - - it('builds url with globally specified intermediatePath', () => { - const jira = new JiraApi(getOptions({ - intermediatePath: 'intermediatePath', - })); - - expect(jira.makeUri({ pathname: '/somePathName' })) - .to.eql('http://jira.somehost.com:8080/intermediatePath/somePathName'); - }); - - it('builds url with query string parameters', () => { - const jira = new JiraApi(getOptions()); - - const url = jira.makeUri({ - pathname: '/path', - query: { - fields: [ - 'one', - 'two', - ], - expand: 'three', - }, - }); - - url.should.eql( - 'http://jira.somehost.com:8080/rest/api/2.0/path?fields=one&fields=two&expand=three', - ); - }); - - it('makeWebhookUri functions properly in the average case', () => { - const jira = new JiraApi(getOptions()); - - expect(jira.makeWebhookUri({ - pathname: '/somePathName', - })) - .to.eql('http://jira.somehost.com:8080/rest/webhooks/1.0/somePathName'); - }); - - it('makeWebhookUri functions with intermediate path', () => { - const jira = new JiraApi(getOptions()); - - expect(jira.makeWebhookUri({ - pathname: '/somePathName', - intermediatePath: '/someIntermediatePath', - })) - .to.eql('http://jira.somehost.com:8080/someIntermediatePath/somePathName'); - }); - - it('makeSprintQueryUri functions properly in the average case', () => { - const jira = new JiraApi(getOptions()); - - expect(jira.makeSprintQueryUri({ - pathname: '/somePathName', - })) - .to.eql('http://jira.somehost.com:8080/rest/greenhopper/1.0/somePathName'); - }); - - it('makeSprintQueryUri functions properly in the average case', () => { - const jira = new JiraApi(getOptions()); - - expect(jira.makeSprintQueryUri({ - pathname: '/somePathName', - intermediatePath: '/someIntermediatePath', - })) - .to.eql('http://jira.somehost.com:8080/someIntermediatePath/somePathName'); - }); - - it('makeUri functions properly no port http', () => { - const { port, ...options } = getOptions(); - - expect(options.port).to.not.eql(port); - - const jira = new JiraApi(options); - - expect(jira.makeUri({ - pathname: '/somePathName', - })) - .to.eql('http://jira.somehost.com/rest/api/2.0/somePathName'); - }); - - it('makeUri functions properly no port https', () => { - const { port, ...options } = getOptions({ protocol: 'https' }); - - expect(options.port).to.not.eql(port); - - const jira = new JiraApi(options); - - expect(jira.makeUri({ - pathname: '/somePathName', - })) - .to.eql('https://jira.somehost.com/rest/api/2.0/somePathName'); - }); - }); - - describe('doRequest Tests', () => { - it('doRequest functions properly in the average case', async () => { - // eslint-disable-next-line no-underscore-dangle - const revert = JiraApi.__set__('_request', (uri, options, callback) => { - callback(undefined, { body: 'Successful response!' }); - }); - - const jira = new JiraApi(getOptions()); - - const response = await jira.doRequest({}); - response.should.eql('Successful response!'); - - revert(); - }); - - it('doRequest authenticates properly when specified', async () => { - async function dummyRequest(requestOptions) { - return requestOptions; - } - - const username = 'someusername'; - const password = 'somepassword'; - - const jira = new JiraApi(getOptions({ - username, - password, - request: dummyRequest, - })); - - const result = await jira.doRequest({}); - expect(result.auth.user).to.eql(username); - expect(result.auth.pass).to.eql(password); - }); - - it('doRequest times out with specified option', async () => { - async function dummyRequest(requestOptions) { - return requestOptions; - } - - const jira = new JiraApi({ - timeout: 2, - ...getOptions({ request: dummyRequest }), - }); - - const result = await jira.doRequest({}); - expect(result.timeout).to.eql(2); - }); - - it('doRequest throws an error properly', async () => { - // eslint-disable-next-line no-underscore-dangle - const revert = JiraApi.__set__('_request', (uri, options, callback) => { - callback({ - body: JSON.stringify({ - errorMessages: ['some error to throw'], - }), - }); - }); - - const jira = new JiraApi(getOptions()); - - await jira.doRequest({}) - .should.eventually.be.rejectedWith('{"body":"{\\"errorMessages\\":[\\"some error to throw\\"]}"}'); - - revert(); - }); - - it('doRequest throws a list of errors properly', async () => { - // eslint-disable-next-line no-underscore-dangle - const revert = JiraApi.__set__('_request', (uri, options, callback) => { - callback({ - body: - JSON.stringify({ errorMessages: ['some error to throw', 'another error'] }), - }); - }); - - const jira = new JiraApi(getOptions()); - - await jira.doRequest({}) - .should.eventually.be.rejectedWith('{"body":"{\\"errorMessages\\":[\\"some error to throw\\",\\"another error\\"]}"}'); - - revert(); - }); - - it('doRequest does not throw an error on empty response', async () => { - // eslint-disable-next-line no-underscore-dangle - const revert = JiraApi.__set__('_request', (uri, options, callback) => { - callback(undefined, { - body: undefined, - }); - }); - - const jira = new JiraApi(getOptions()); - - const response = await jira.doRequest({}); - expect(response).to.be.undefined; - - revert(); - }); - - it('doRequest throws an error when request failed', async () => { - // eslint-disable-next-line no-underscore-dangle - const revert = JiraApi.__set__('_request', (uri, options, callback) => { - callback('This is an error message', undefined); - }); - - const jira = new JiraApi(getOptions()); - - await jira.doRequest({}) - .should.eventually.be.rejectedWith('This is an error message'); - - revert(); - }); - }); - - describe('Request Functions Tests', () => { - async function dummyURLCall(jiraApiMethodName, functionArguments, dummyRequestMethod, returnedValue = 'uri') { - let dummyRequest = dummyRequestMethod; - if (!dummyRequest) { - dummyRequest = async (requestOptions) => requestOptions; - } - - const jira = new JiraApi( - getOptions({ - request: dummyRequest, - }), - ); - - const resultObject = await jira[jiraApiMethodName].apply(jira, functionArguments); - - // hack exposing the qs object as the query string in the URL so this is - // uniformly testable - if (resultObject.qs) { - const queryString = Object.keys(resultObject.qs).map((x) => `${x}=${resultObject.qs[x]}`) - .join('&'); - return `${resultObject.uri}?${queryString}`; - } - - return resultObject[returnedValue]; - } - - it('findIssue hits proper url', async () => { - const result = await dummyURLCall('findIssue', ['PK-100']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/PK-100?expand=&fields=*all&properties=*all&fieldsByKeys=false'); - }); - - it('findIssue hits proper url with expansion', async () => { - const result = await dummyURLCall('findIssue', ['PK-100', 'transitions,changelog']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/PK-100?expand=transitions,changelog&fields=*all&properties=*all&fieldsByKeys=false'); - }); - - it('findIssue hits proper url with fields', async () => { - const result = await dummyURLCall('findIssue', ['PK-100', null, 'transitions,changelog']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/PK-100?expand=&fields=transitions,changelog&properties=*all&fieldsByKeys=false'); - }); - - it('findIssue hits proper url with properties', async () => { - const result = await dummyURLCall('findIssue', ['PK-100', null, null, 'transitions,changelog']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/PK-100?expand=&fields=*all&properties=transitions,changelog&fieldsByKeys=false'); - }); - - it('findIssue hits proper url with fields and fieldsByKeys', async () => { - const result = await dummyURLCall('findIssue', ['PK-100', null, 'transitions,changelog', null, true]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/PK-100?expand=&fields=transitions,changelog&properties=*all&fieldsByKeys=true'); - }); - - it('downloadAttachment hits proper url with attachment id and filename', async () => { - const result = await dummyURLCall('downloadAttachment', [{ id: '123456', filename: 'attachment.txt' }]); - result.should.eql('http://jira.somehost.com:8080/secure/attachment/123456/attachment.txt'); - }); - - it('downloadAttachment hits proper url with attachment id and filename with special characters', async () => { - const result = await dummyURLCall('downloadAttachment', [{ id: '123456', filename: 'attachment-æøå.txt' }]); - result.should.eql('http://jira.somehost.com:8080/secure/attachment/123456/attachment-%C3%A6%C3%B8%C3%A5.txt'); - }); - - it('deleteAttachment hits proper url', async () => { - const result = await dummyURLCall('deleteAttachment', ['123456']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/attachment/123456'); - }); - - it('getUnresolvedIssueCount hits proper url', async () => { - async function dummyRequest(requestOptions) { - return { issuesUnresolvedCount: requestOptions }; - } - - const result = await dummyURLCall('getUnresolvedIssueCount', ['someVersion'], dummyRequest); - result.should - .eql('http://jira.somehost.com:8080/rest/api/2.0/version/someVersion/unresolvedIssueCount'); - }); - - it('getProject hits proper url', async () => { - const result = await dummyURLCall('getProject', ['someProject']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/project/someProject'); - }); - - it('createProject hits proper url', async () => { - const result = await dummyURLCall('createProject', ['dummyObject']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/project/'); - }); - - it('findRapidView hits proper url', async () => { - async function dummyRequest(requestOptions) { - return { - views: [{ - ...requestOptions, - name: 'theNameToLookFor', - }], - }; - } - - const result = await dummyURLCall('findRapidView', ['theNameToLookFor'], dummyRequest); - result.should.eql('http://jira.somehost.com:8080/rest/greenhopper/1.0/rapidviews/list'); - }); - - it('getLastSprintForRapidView hits proper url', async () => { - async function dummyRequest(requestOptions) { - return { - sprints: [requestOptions], - }; - } - - const result = await dummyURLCall( - 'getLastSprintForRapidView', - ['someRapidViewId'], - dummyRequest, - ); - - result.should.eql( - 'http://jira.somehost.com:8080/rest/greenhopper/1.0/sprintquery/someRapidViewId', - ); - }); - - it('getSprintIssues hits proper url', async () => { - const result = await dummyURLCall('getSprintIssues', ['someRapidView', 'someSprintId']); - result.should - .eql('http://jira.somehost.com:8080/rest/greenhopper/1.0/rapid/charts/sprintreport?rapidViewId=someRapidView&sprintId=someSprintId'); - }); - - it('listSprints hits proper url', async () => { - const result = await dummyURLCall('listSprints', ['someRapidViewId']); - result.should.eql( - 'http://jira.somehost.com:8080/rest/greenhopper/1.0/sprintquery/someRapidViewId', - ); - }); - - it('addIssueToSprint hits proper url', async () => { - const result = await dummyURLCall('addIssueToSprint', ['someIssueId', 'someSprintId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/sprint/someSprintId/issue'); - }); - - it('issueLink hits proper url', async () => { - const result = await dummyURLCall('issueLink', ['somelink']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issueLink'); - }); - - it('getRemoteLinks hits proper url', async () => { - const result = await dummyURLCall('getRemoteLinks', ['someIssueId']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueId/remotelink'); - }); - - it('createRemoteLink hits proper url', async () => { - const result = await dummyURLCall('createRemoteLink', ['issueNumber', 'someRemoteLink']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/issueNumber/remotelink'); - }); - - it('getVersion hits proper url', async () => { - const result = await dummyURLCall('getVersion', ['someVersion']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/version/someVersion'); - }); - - it('getVersions hits proper url', async () => { - const result = await dummyURLCall('getVersions', ['someProject']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/project/someProject/versions'); - }); - - it('getVersions hits proper url with query', async () => { - const result = await dummyURLCall('getVersions', ['someProject', { maxResults: 10 }]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/project/someProject/versions?maxResults=10'); - }); - - it('createVersion hits proper url', async () => { - const result = await dummyURLCall('createVersion', ['someVersion']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/version'); - }); - - it('updateVersion hits proper url', async () => { - const result = await dummyURLCall('updateVersion', [{ id: 'someVersionId' }]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/version/someVersionId'); - }); - - it('deleteVersion hits proper url', async () => { - const result = await dummyURLCall('deleteVersion', [ - 'someVersionId', - 'someFixVersionId', - 'someAffectedVersionId', - ]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/version/someVersionId?moveFixIssuesTo=someFixVersionId&moveAffectedIssuesTo=someAffectedVersionId'); - }); - - it('seachJira hits proper url', async () => { - const result = await dummyURLCall('searchJira', ['someJQLhere', 'someOptionsObject']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/search'); - }); - - it('createUser hits proper url', async () => { - const result = await dummyURLCall('createUser', [{ - name: 'someUsername', - emailAddress: 'someEmail', - displayName: 'Some Name', - }]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/user'); - }); - - it('searchUsers hits proper url', async () => { - const result = await dummyURLCall('searchUsers', [{ - query: 'someOtherUserName', - username: 'someUserName', - }]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/user/search?username=someUserName&query=someOtherUserName&startAt=0&maxResults=50&includeActive=true&includeInactive=false'); - }); - - it('getUsersInGroup hits proper url', async () => { - const result = await dummyURLCall('getUsersInGroup', ['someGroupName']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/group?groupname=someGroupName&expand=users[0:50]'); - }); - - it('getMembersOfGroup hits proper url', async () => { - const result = await dummyURLCall('getMembersOfGroup', ['someGroupName']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/group/member?groupname=someGroupName&expand=users[0:50]&includeInactiveUsers=false'); - }); - - it('getUsersIssues hits proper url', async () => { - const result = await dummyURLCall('getUsersIssues', ['someUsername', true]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/search'); - }); - - it('getUser hits proper url', async () => { - const result = await dummyURLCall('getUser', ['some-account-Id', 'groups,applicationRoles']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/user?accountId=some-account-Id&expand=groups,applicationRoles'); - }); - - it('getUsers hits proper url', async () => { - const result = await dummyURLCall('getUsers', [0, 50]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/users?startAt=0&maxResults=50'); - }); - - it('addNewIssue hits proper url', async () => { - const result = await dummyURLCall('addNewIssue', ['someIssue']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue'); - }); - - it('getUsersIssues hits proper url', async () => { - const result = await dummyURLCall('getUsersIssues', ['someUsername', 'true']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/search'); - }); - - it('addWatcher hits proper url', async () => { - const result = await dummyURLCall('addWatcher', ['ZQ-9001']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/ZQ-9001/watchers'); - }); - - it('addWatcher sends unquoted string in body', async () => { - const result = await dummyURLCall('addWatcher', ['ZQ-9001', 'John Smith'], null, 'body'); - result.should.eql('John Smith'); - }); - - it('getIssueChangelog hits proper url', async () => { - const result = await dummyURLCall('getIssueChangelog', ['ZQ-9001']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/ZQ-9001/changelog?startAt=0&maxResults=50'); - }); - - it('getIssueWatchers hits proper url', async () => { - const result = await dummyURLCall('getIssueWatchers', ['ZQ-9001']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/ZQ-9001/watchers'); - }); - - it('updateAssignee hits proper url', async () => { - const result = await dummyURLCall('updateAssignee', ['ZQ-9001', 'Assignee']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/ZQ-9001/assignee'); - }); - - it('updateAssigneeWithId hits proper url', async () => { - const result = await dummyURLCall('updateAssigneeWithId', ['ZQ-9001', 'Assignee']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/ZQ-9001/assignee'); - }); - - it('deleteIssue hits proper url', async () => { - const result = await dummyURLCall('deleteIssue', ['FU-69']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/FU-69'); - }); - - it('updateIssue hits proper url', async () => { - const result = await dummyURLCall('updateIssue', ['MI-6', 'someInfo']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/MI-6'); - }); - - it('properly creates query params for updateIssue', async () => { - const result = await dummyURLCall('updateIssue', ['MI-6', 'someInfo', { notifyUsers: true }]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/MI-6?notifyUsers=true'); - }); - - it('listComponents hits proper url', async () => { - const result = await dummyURLCall('listComponents', ['ProjectName']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/project/ProjectName/components'); - }); - - it('addNewComponent hits proper url', async () => { - const result = await dummyURLCall('addNewComponent', ['someComponent']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/component'); - }); - - it('updateComponent hits proper url', async () => { - const result = await dummyURLCall('updateComponent', ['someComponentNumber', 'someComponent']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/component/someComponentNumber'); - }); - - it('deleteComponent hits proper url', async () => { - const result = await dummyURLCall('deleteComponent', ['someComponentNumber']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/component/someComponentNumber'); - }); - - it('deleteComponent hits proper url', async () => { - const result = await dummyURLCall('deleteComponent', ['someComponentNumber', 'someComponentName']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/component/someComponentNumber?moveIssuesTo=someComponentName'); - }); - - it('relatedIssueCounts hits proper url', async () => { - const result = await dummyURLCall('relatedIssueCounts', ['someComponentNumber', 'someComponentName']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/component/someComponentNumber/relatedIssueCounts'); - }); - - // Field APIs Suite Tests - describe('Field APIs Suite Tests', () => { - it('createCustomField hits proper url', async () => { - const result = await dummyURLCall('createCustomField', ['someField']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/field'); - }); - - it('listFields hits proper url', async () => { - const result = await dummyURLCall('listFields', []); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/field'); - }); - }); - - // Field Option APIs Suite Tests - describe('Field Option APIs Suite Tests', () => { - it('createFieldOption hits proper url', async () => { - const result = await dummyURLCall('createFieldOption', ['someFieldKey', 'someOption']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/field/someFieldKey/option'); - }); - - it('listFieldOptions hits proper url', async () => { - const result = await dummyURLCall('listFieldOptions', ['someFieldKey']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/field/someFieldKey/option'); - }); - - it('upsertFieldOption hits proper url', async () => { - const result = await dummyURLCall('upsertFieldOption', ['someFieldKey', 'someOptionId', 'someOption']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/field/someFieldKey/option/someOptionId'); - }); - - it('getFieldOption hits proper url', async () => { - const result = await dummyURLCall('getFieldOption', ['someFieldKey', 'someOptionId']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/field/someFieldKey/option/someOptionId'); - }); - - it('deleteFieldOption hits proper url', async () => { - const result = await dummyURLCall('deleteFieldOption', ['someFieldKey', 'someOptionId']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/field/someFieldKey/option/someOptionId'); - }); - }); - - it('getIssueProperty hits proper url with expansion', async () => { - const result = await dummyURLCall('getIssueProperty', ['PK-100', 'somePropertyKey']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/PK-100/properties/somePropertyKey'); - }); - - it('listPriorities hits proper url', async () => { - const result = await dummyURLCall('listPriorities', []); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/priority'); - }); - - it('listTransitions hits proper url', async () => { - const result = await dummyURLCall('listTransitions', ['someIssueNumber']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueNumber/transitions?expand=transitions.fields'); - }); - - it('transitionIssue hits proper url', async () => { - const result = await dummyURLCall('transitionIssue', [ - 'someIssueNumber', - 'someTransitionObject', - ]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueNumber/transitions'); - }); - - it('listProjects hits proper url', async () => { - const result = await dummyURLCall('listProjects', []); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/project'); - }); - - it('addComment hits proper url', async () => { - const result = await dummyURLCall('addComment', ['someIssueNumber', 'someComment']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueNumber/comment'); - }); - - it('addCommentAdvanced hits proper url', async () => { - const result = await dummyURLCall('addCommentAdvanced', ['someIssueNumber', 'someComment']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueNumber/comment'); - }); - - it('updateComment hits proper url', async () => { - const result = await dummyURLCall('updateComment', ['someIssueNumber', 'someCommentNumber', 'someComment']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueNumber/comment/someCommentNumber'); - }); - - it('getComments hits proper url', async () => { - const result = await dummyURLCall('getComments', ['someIssueNumber']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueNumber/comment'); - }); - - it('getComment hits proper url', async () => { - const result = await dummyURLCall('getComment', ['someIssueNumber', 'someCommentNumber']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueNumber/comment/someCommentNumber'); - }); - - it('deleteComment hits proper url', async () => { - const result = await dummyURLCall('deleteComment', ['someIssueNumber', 'someCommentNumber']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueNumber/comment/someCommentNumber'); - }); - - it('addWorklog hits proper url', async () => { - const result = await dummyURLCall('addWorklog', [ - 'someIssueNumber', - 'someWorkLog', - 'someNewEstimate', - ]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueNumber/worklog?adjustEstimate=new&newEstimate=someNewEstimate'); - }); - - it('addWorklog hits proper url with adjustEstimate=leave', async () => { - const result = await dummyURLCall('addWorklog', [ - 'someIssueNumber', - 'someWorkLog', - '', - { adjustEstimate: 'leave' }, - ]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueNumber/worklog?adjustEstimate=leave'); - }); - - it('deleteWorklog hits proper url', async () => { - const result = await dummyURLCall('deleteWorklog', ['someIssueNumber', 'someWorklogId']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueNumber/worklog/someWorklogId'); - }); - - it('updateWorklog hits proper url', async () => { - const result = await dummyURLCall('updateWorklog', ['someIssueNumber', 'someWorklogId']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueNumber/worklog/someWorklogId'); - }); - - it('deleteIssueLink hits proper url', async () => { - const result = await dummyURLCall('deleteIssueLink', ['someLinkId']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issueLink/someLinkId'); - }); - - it('getWorklogs hits proper url', async () => { - const result = await dummyURLCall('getWorklogs'); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/worklog/list?expand='); - }); - - it('getIssueWorklogs hits proper url', async () => { - const result = await dummyURLCall('getIssueWorklogs', ['someIssueNumber']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueNumber/worklog?startAt=0&maxResults=1000'); - }); - - it('listIssueTypes hits proper url', async () => { - const result = await dummyURLCall('listIssueTypes', []); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issuetype'); - }); - - it('listIssueLinkTypes hits proper url', async () => { - const result = await dummyURLCall('listIssueLinkTypes', []); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issueLinkType'); - }); - - it('registerWebhook hits proper url', async () => { - const result = await dummyURLCall('registerWebhook', ['someWebhook']); - result.should.eql('http://jira.somehost.com:8080/rest/webhooks/1.0/webhook'); - }); - - it('listWebhooks hits proper url', async () => { - const result = await dummyURLCall('listWebhooks', []); - result.should.eql('http://jira.somehost.com:8080/rest/webhooks/1.0/webhook'); - }); - - it('getWebhook hits proper url', async () => { - const result = await dummyURLCall('getWebhook', ['someWebhookId']); - result.should.eql('http://jira.somehost.com:8080/rest/webhooks/1.0/webhook/someWebhookId'); - }); - - it('deleteWebhook hits proper url', async () => { - const result = await dummyURLCall('deleteWebhook', ['someWebhookId']); - result.should.eql('http://jira.somehost.com:8080/rest/webhooks/1.0/webhook/someWebhookId'); - }); - - it('getCurrentUser hits proper url', async () => { - const result = await dummyURLCall('getCurrentUser', []); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/myself'); - }); - - it('getBacklogForRapidView hits proper url', async () => { - const result = await dummyURLCall('getBacklogForRapidView', ['someRapidViewId']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/xboard/plan/backlog/data?rapidViewId=someRapidViewId'); - }); - - it('addAttachmentOnIssue hits proper url', async () => { - const result = await dummyURLCall('addAttachmentOnIssue', ['someIssueId', {}]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueId/attachments'); - }); - - it('addAttachmentOnIssue hits proper url', async () => { - const result = await dummyURLCall('listStatus'); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/status'); - }); - - // Field Option APIs Suite Tests - describe('Dev-Status APIs Suite Tests', () => { - it('getDevStatusSummary hits proper url', async () => { - const result = await dummyURLCall('getDevStatusSummary', ['someIssueId']); - result.should.eql('http://jira.somehost.com:8080/rest/dev-status/latest/issue/summary?issueId=someIssueId'); - }); - - it('getDevStatusDetail hits proper url - repo', async () => { - const result = await dummyURLCall('getDevStatusDetail', ['someIssueId', 'someApplicationType', 'repository']); - result.should.eql('http://jira.somehost.com:8080/rest/dev-status/latest/issue/detail?issueId=someIssueId&applicationType=someApplicationType&dataType=repository'); - }); - - it('getDevStatusDetail hits proper url - pullrequest', async () => { - const result = await dummyURLCall('getDevStatusDetail', ['someIssueId', 'someApplicationType', 'pullrequest']); - result.should.eql('http://jira.somehost.com:8080/rest/dev-status/latest/issue/detail?issueId=someIssueId&applicationType=someApplicationType&dataType=pullrequest'); - }); - }); - - // Agile APIs Suite Tests - describe('Agile APIs Suite Tests', () => { - it('getIssue hits proper url', async () => { - const result = await dummyURLCall('getIssue', ['someIssueId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/issue/someIssueId?fields=&expand='); - }); - - it('getIssueEstimationForBoard hits proper url', async () => { - const result = await dummyURLCall('getIssueEstimationForBoard', ['someIssueId', 'someBoardId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/issue/someIssueId/estimation?boardId=someBoardId'); - }); - - it('estimateIssueForBoard hits proper url', async () => { - const result = await dummyURLCall('estimateIssueForBoard', ['someIssueId', 'someBoardId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/issue/someIssueId/estimation?boardId=someBoardId'); - }); - - it('rankIssues hits proper url', async () => { - const result = await dummyURLCall('rankIssues'); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/issue/rank'); - }); - - it('moveToBacklog hits proper url', async () => { - const result = await dummyURLCall('moveToBacklog'); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/backlog/issue'); - }); - - it('getAllBoards hits proper url', async () => { - const result = await dummyURLCall('getAllBoards'); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board?startAt=0&maxResults=50&type=&name='); - }); - - it('getAllBoards hits proper url with project key provided', async () => { - const result = await dummyURLCall('getAllBoards', [0, 50, undefined, undefined, 'someProjectKey']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board?startAt=0&maxResults=50&type=&name=&projectKeyOrId=someProjectKey'); - }); - - it('createBoard hits proper url', async () => { - const result = await dummyURLCall('createBoard'); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board'); - }); - - it('getBoard hits proper url', async () => { - const result = await dummyURLCall('getBoard', ['someBoardId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId'); - }); - - it('deleteBoard hits proper url', async () => { - const result = await dummyURLCall('deleteBoard', ['someBoardId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId'); - }); - - it('getIssuesForBacklog hits proper url', async () => { - const result = await dummyURLCall('getIssuesForBacklog', ['someBoardId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/backlog?startAt=0&maxResults=50&jql=&validateQuery=true&fields='); - }); - - it('getConfiguration hits proper url', async () => { - const result = await dummyURLCall('getConfiguration', ['someBoardId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/configuration'); - }); - - it('getIssuesForBoard hits proper url', async () => { - const result = await dummyURLCall('getIssuesForBoard', ['someBoardId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/issue?startAt=0&maxResults=50&jql=&validateQuery=true&fields='); - }); - - it('getFilter hits proper url', async () => { - const result = await dummyURLCall('getFilter', ['someFilterId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/filter/someFilterId'); - }); - - it('getEpics hits proper url', async () => { - const result = await dummyURLCall('getEpics', ['someBoardId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/epic?startAt=0&maxResults=50&done='); - }); - - it('getBoardIssuesForEpic hits proper url', async () => { - const result = await dummyURLCall('getBoardIssuesForEpic', ['someBoardId', 'someEpicId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/epic/someEpicId/issue?startAt=0&maxResults=50&jql=&validateQuery=true&fields='); - }); - - it('getProjects hits proper url', async () => { - const result = await dummyURLCall('getProjects', ['someBoardId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/project?startAt=0&maxResults=50'); - }); - - it('getProjectsFull hits proper url', async () => { - const result = await dummyURLCall('getProjectsFull', ['someBoardId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/project/full'); - }); - - it('getBoardPropertiesKeys hits proper url', async () => { - const result = await dummyURLCall('getBoardPropertiesKeys', ['someBoardId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/properties'); - }); - - it('deleteBoardProperty hits proper url', async () => { - const result = await dummyURLCall('deleteBoardProperty', ['someBoardId', 'somePropertyKey']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/properties/somePropertyKey'); - }); - - it('setBoardProperty hits proper url', async () => { - const result = await dummyURLCall('setBoardProperty', ['someBoardId', 'somePropertyKey']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/properties/somePropertyKey'); - }); - - it('getBoardProperty hits proper url', async () => { - const result = await dummyURLCall('getBoardProperty', ['someBoardId', 'somePropertyKey']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/properties/somePropertyKey'); - }); - - it('getAllSprints hits proper url', async () => { - const result = await dummyURLCall('getAllSprints', ['someBoardId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/sprint?startAt=0&maxResults=50&state='); - }); - - it('getBoardIssuesForSprint hits proper url', async () => { - const result = await dummyURLCall('getBoardIssuesForSprint', ['someBoardId', 'someSprintId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/sprint/someSprintId/issue?startAt=0&maxResults=50&jql=&validateQuery=true&fields=&expand='); - }); - - it('getAllVersions hits proper url', async () => { - const result = await dummyURLCall('getAllVersions', ['someBoardId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/board/someBoardId/version?startAt=0&maxResults=50&released='); - }); - - it('getEpic hits proper url', async () => { - const result = await dummyURLCall('getEpic', ['someEpicId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/epic/someEpicId'); - }); - - it('partiallyUpdateEpic hits proper url', async () => { - const result = await dummyURLCall('partiallyUpdateEpic', ['someEpicId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/epic/someEpicId'); - }); - - it('getIssuesForEpic hits proper url', async () => { - const result = await dummyURLCall('getIssuesForEpic', ['someEpicId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/epic/someEpicId/issue?startAt=0&maxResults=50&jql=&validateQuery=true&fields='); - }); - - it('moveIssuesToEpic hits proper url', async () => { - const result = await dummyURLCall('moveIssuesToEpic', ['someEpicId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/epic/someEpicId/issue'); - }); - - it('rankEpics hits proper url', async () => { - const result = await dummyURLCall('rankEpics', ['someEpicId']); - result.should.eql('http://jira.somehost.com:8080/rest/agile/1.0/epic/someEpicId/rank'); - }); - }); - - it('issueNotify hits proper url', async () => { - const result = await dummyURLCall('issueNotify', ['someIssueId', {}]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/someIssueId/notify'); - }); - - it('getServerInfo hits proper url', async () => { - const result = await dummyURLCall('getServerInfo'); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/serverInfo'); - }); - - it('moveVersion hits proper url', async () => { - const result = await dummyURLCall('moveVersion', ['myVersion']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/version/myVersion/move'); - }); - - it('getIssueCreateMetadata hits proper url', async () => { - const result = await dummyURLCall('getIssueCreateMetadata', [{ expand: 'projects.issuetypes.fields' }]); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/issue/createmeta?expand=projects.issuetypes.fields'); - }); - - it('genericGet hits proper url', async () => { - // Test with field endpoint as a simple example - const result = await dummyURLCall('genericGet', ['field']); - result.should.eql('http://jira.somehost.com:8080/rest/api/2.0/field'); - }); - }); -}); diff --git a/test/mocha.opts b/test/mocha.opts deleted file mode 100644 index f1cc49a..0000000 --- a/test/mocha.opts +++ /dev/null @@ -1,2 +0,0 @@ ---require @babel/register ---recursive diff --git a/tsconfig.json b/tsconfig.json index 7a92450..2d952af 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,9 +2,12 @@ "compilerOptions": { "esModuleInterop": true, "declaration": true, - "outDir": "lib" + "isolatedModules": true, + "skipLibCheck": true, + "outDir": "lib", + "baseUrl": "." }, - "files": [ - "src/jira.ts" + "include": [ + "src/**/*.ts" ] }