このドキュメントでは、 Netskope Cloud Exchangeプラットフォームの Ticket Orchestrator モジュールを使用して Jira v2.3.0 プラグインを構成する方法について説明します。 このプラグインは、Jira Cloud プラットフォーム上で選択した Jira プロジェクトのチケットを作成するために使用します。 また、チケットの更新やステータスの同期にも対応しています。
前提条件
- Netskopeテナント(または、例えば本番環境と開発/テスト環境など、複数のテナント)。
- Netskope Cloud Exchangeテナントには、テナントプラグインとチケットオーケストレータープラグインが既に設定済みです。
- アカウントを持つJiraインスタンス。
- 以下のホストへの接続: https://*.atlassian.net/ 。
Jiraプラグインのサポート
このプラグインは、Jira Cloud プラットフォーム上で選択した Jira プロジェクトのチケットを作成するために使用します。 また、チケットの更新やステータスの同期にも対応しています。
| デスクリプション | サポートされている型 |
|---|---|
| チケットに関するアラート | 侵害されたクレデンシャル、ポリシー、マルサイト、マルウェア、DLP、セキュリティ評価、ウォッチリスト、検疫、修復、UBA、CTEP、デバイス、コンテンツ |
| チケット制イベント | エンドポイント、インシデント |
マッピング
キューマッピング
| デスクリプション | Types |
|---|---|
| 概要のカスタムメッセージにデフォルトでマッピングされるフィールド。 | Netskope $appCategoryアラート名: $alertName ; イベント名: $alert_name |
| デスクリプションのカスタムメッセージ用にデフォルトでマップされたフィールド | アラート/イベント ID: $id アラート/イベント ID: $id アラート/イベント アプリ: $app アラート/イベント ユーザー: $user アラート名: $alertName アラート タイプ: $alertType アラート アプリ カテゴリ: $appCategory イベント名: $alert_name イベント タイプ: $eventType |
Default Status Mapping
| Cloud Exchangeステータス | Value | Jiraステータス |
|---|---|---|
| 新しい | 新しい | 新しい |
| 進行中 | 進行中 | 進行中 |
| 保留中 | – | デフォルトは空白になります ユーザーは、Jira プロジェクトでカスタム ステータスを作成してマッピングできます |
| Closed | Closed | Closed |
| Deleted | – | デフォルトは空白になります ユーザーは、Jira プロジェクトでカスタム ステータスを作成してマッピングできます |
| その他 | – | デフォルトは空白になります ユーザーは、Jira プロジェクトでカスタム ステータスを作成してマッピングできます |
注記
Jiraプラグインのデフォルトステータスは、プラットフォーム内でこれらのフィールドをカスタマイズできるため、異なる場合があります。対応するCloud Exchangeフィールドにマッピングされていないステータスは、チケットのステータスと同期されません。
権限
- プロジェクト権限(参照: https ://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions)
- プロジェクトを閲覧する
- 任意のプロジェクトで課題を作成/表示する
- 指定されたJira課題にコメントを追加する
- プロジェクトの管理
- グローバル権限(参照: https ://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions)
- Jira管理者
- 課題レベルのセキュリティが設定されている場合、課題を表示するための課題レベルのセキュリティ権限。
API Details
| APIエンドポイント | 方法 | 使うケース |
|---|---|---|
| /rest/api/3/myself | 得る | Jiraユーザーを検証します。 |
| /rest/api/3/field | 得る | 利用可能なチケット入力欄を取得します。 |
| /rest/api/3/project/search | 得る | Jira プラットフォームからすべてのプロジェクトを取得します。 |
| /rest/api/3/issue/<issue_id> | 得る | チケットの詳細情報を入手してください。 |
| /rest/api/3/issue/createmeta/<project_id>/issuetypes/<issue_type_id> | 得る | 指定されたプロジェクトとチケットタイプのチケットフィールドを取得します。 |
| /rest/api/3/issue | 役職 | Jira プラットフォームでチケットを作成します。 |
| /rest/api/3/search/jql | 役職 | 指定されたクエリに基づいてJiraチケットを検索します。 |
| /rest/api/3/issue/{issue_id}/editmeta | 得る | 指定されたチケットIDに対応するチケットフィールドを取得して編集します。 |
| /rest/api/3/issue/<issue_id> | PUT | Jiraチケットを更新する。 |
| /rest/api/3/issue/<issue_id>/transitions | 得る | Jiraチケットのステータス遷移を取得します。 |
| /rest/api/3/issue/<issue_id>/transitions | 役職 | Jiraチケットのステータスを設定します。 |
| /rest/api/3/users/search | 得る | Jiraユーザーを獲得しましょう。 |
Jiraユーザーを検証する
API Endpoint: <Instance URL>/rest/api/3/myself
Method: 得る
Headers
| 鍵 | Value |
|---|---|
| ユーザーエージェント | netskope-ce-6.0.0-cto-jira-v2.3.0 |
| Authorization | Basic <user_email:api_key> |
Sample API Response (Status Code: 200)
{
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/user?accountId=712020:d2bb6886-8c0c-4aff-9d5c-4723e20kk7cb",
"accountId": "712020:d2bb6960-8c0c-4aff-9d5c-4723e20ff6cb",
"accountType": "atlassian",
"emailAddress": "user@gmail.com",
"avatarUrls": {
"48x48": "https://secure.gravatar.com/avatar/c20e29843b8be2868b51047c06d2f0b9?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-5.png",
"24x24": "https://secure.gravatar.com/avatar/c20e29843b8be2868b51047c06d2f0b9?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-5.png",
"16x16": "https://secure.gravatar.com/avatar/c20e29843b8be2868b51047c06d2f0b9?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-5.png",
"32x32": "https://secure.gravatar.com/avatar/c20e29843b8be2868b51047c06d2f0b9?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-5.png"
},
"displayName": "User",
"active": true,
"timeZone": "Asia/Calcutta",
"locale": "en_US",
"groups": {
"size": 4,
"items": []
},
"applicationRoles": {
"size": 3,
"items": []
},
"expand": "groups,applicationRoles"
}
利用可能なチケットフィールドを取得する
API Endpoint: <Instance URL>/rest/api/3/field
Method: 得る
Headers
| 鍵 | Value |
|---|---|
| ユーザーエージェント | netskope-ce-6.0.0-cto-jira-v2.3.0 |
| Authorization | Basic <user_email:api_key> |
Sample API Response (Status Code: 200)
[
{
"id": "statuscategorychangedate",
"key": "statuscategorychangedate",
"name": "Status Category Changed",
"custom": false,
"orderable": false,
"navigable": true,
"searchable": true,
"clauseNames": [
"statusCategoryChangedDate"
],
"schema": {
"type": "datetime",
"system": "statuscategorychangedate"
}
},
……
]
Jira プラットフォームからすべてのプロジェクトを取得する
API Endpoint: <Instance URL>/rest/api/3/project/search
Method: 得る
Parameters
| 鍵 | Value |
|---|---|
| startAt | 0 |
| maxResults | 50 |
| expand | issueTypes |
Headers
| 鍵 | Value |
|---|---|
| ユーザーエージェント | netskope-ce-6.0.0-cto-jira-v2.3.0 |
| Authorization | Basic <user_email:api_key> |
Sample API Response (Status Code: 200)
{
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/project/search?expand=issueTypes&maxResults=50&startAt=0",
"maxResults": 50,
"startAt": 0,
"total": 1,
"isLast": true,
"values": [
{
"expand": "description,lead,issueTypes,url,projectKeys,permissions,insight",
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/project/10015",
"id": "10015",
"key": "JD",
"issueTypes": [
{
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issuetype/10045",
"id": "10045",
"description": "Tasks track small, distinct pieces of work.",
"iconUrl": "https://cto-jira-plugin.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium",
"name": "Task",
"subtask": false,
"avatarId": 10318,
"hierarchyLevel": 0
},
{
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issuetype/10046",
"id": "10046",
"description": "Bugs track problems or errors.",
"iconUrl": "https://cto-jira-plugin.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium",
"name": "Bug",
"subtask": false,
"avatarId": 10303,
"hierarchyLevel": 0
},
{
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issuetype/10047",
"id": "10047",
"description": "Stories track functionality or features expressed as user goals.",
"iconUrl": "https://cto-jira-plugin.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium",
"name": "Story",
"subtask": false,
"avatarId": 10315,
"hierarchyLevel": 0
},
{
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issuetype/10048",
"id": "10048",
"description": "Epics track collections of related bugs, stories, and tasks.",
"iconUrl": "https://cto-jira-plugin.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10307?size=medium",
"name": "Epic",
"subtask": false,
"avatarId": 10307,
"hierarchyLevel": 1
},
{
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issuetype/10049",
"id": "10049",
"description": "Subtasks track small pieces of work that are part of a larger task.",
"iconUrl": "https://cto-jira-plugin.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium",
"name": "Subtask",
"subtask": true,
"avatarId": 10316,
"hierarchyLevel": -1
}
],
"name": "Jira Demo",
"avatarUrls": {
"48x48": "https://cto-jira-plugin.atlassian.net/rest/api/3/universal_avatar/view/type/project/avatar/10418",
"24x24": "https://cto-jira-plugin.atlassian.net/rest/api/3/universal_avatar/view/type/project/avatar/10418?size=small",
"16x16": "https://cto-jira-plugin.atlassian.net/rest/api/3/universal_avatar/view/type/project/avatar/10418?size=xsmall",
"32x32": "https://cto-jira-plugin.atlassian.net/rest/api/3/universal_avatar/view/type/project/avatar/10418?size=medium"
},
"projectTypeKey": "software",
"simplified": true,
"style": "next-gen",
"isPrivate": false,
"properties": {},
"entityId": "84af9cba-b5cb-4c95-8df6-3ac5ef8b9f24",
"uuid": "84af9cba-b5cb-4c95-8df6-3ac5ef8b9f24"
}
]
}
チケットの詳細を見る
API Endpoint: <Instance URL>/rest/api/3/issue/<issue_id>
Method: 得る
Path Parameters
| 鍵 | Value |
|---|---|
| issue_id | JD-1 |
Headers
| 鍵 | Value |
|---|---|
| ユーザーエージェント | netskope-ce-6.0.0-cto-jira-v2.3.0 |
| Authorization | Basic <user_email:api_key> |
Sample API Response (Status Code: 200)
{
"expand": "renderedFields,names,schema,operations,editmeta,changelog,versionedRepresentations,customfield_10010.requestTypePractice",
"id": "308014",
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issue/308014",
"key": "JD-1",
"fields": {
"statuscategorychangedate": "2024-11-29T20:31:30.112+0530",
"issuetype": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issuetype/10045",
"id": "10045",
"description": "Tasks track small, distinct pieces of work.",
"iconUrl": "https://cto-jira-plugin.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium",
"name": "Task",
"subtask": false,
"avatarId": 10318,
"entityId": "2c509b1e-1b97-4cb0-9401-1e9433b6c79e",
"hierarchyLevel": 0
},
"timespent": null,
"customfield_10030": null,
"project": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/project/10015",
"id": "10015",
"key": "JD",
"name": "Jira Demo",
"projectTypeKey": "software",
"simplified": true,
"avatarUrls": {
"48x48": "https://cto-jira-plugin.atlassian.net/rest/api/3/universal_avatar/view/type/project/avatar/10418",
"24x24": "https://cto-jira-plugin.atlassian.net/rest/api/3/universal_avatar/view/type/project/avatar/10418?size=small",
"16x16": "https://cto-jira-plugin.atlassian.net/rest/api/3/universal_avatar/view/type/project/avatar/10418?size=xsmall",
"32x32": "https://cto-jira-plugin.atlassian.net/rest/api/3/universal_avatar/view/type/project/avatar/10418?size=medium"
}
},
"customfield_10032": null,
"fixVersions": [],
"customfield_10033": null,
"aggregatetimespent": null,
"resolution": null,
"customfield_10037": null,
"customfield_10027": null,
"customfield_10028": null,
"customfield_10029": null,
"resolutiondate": null,
"workratio": -1,
"issuerestriction": {
"issuerestrictions": {},
"shouldDisplay": true
},
"watches": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issue/JD-1/watchers",
"watchCount": 1,
"isWatching": true
},
"lastViewed": null,
"created": "2024-11-29T20:31:29.691+0530",
"customfield_10020": null,
"customfield_10021": null,
"customfield_10022": null,
"priority": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/priority/3",
"iconUrl": "https://cto-jira-plugin.atlassian.net/images/icons/priorities/medium.svg",
"name": "Medium",
"id": "3"
},
"customfield_10023": null,
"customfield_10024": null,
"customfield_10025": null,
"labels": [],
"customfield_10026": null,
"customfield_10016": null,
"customfield_10017": null,
"customfield_10018": {
"hasEpicLinkFieldDependency": false,
"showField": false,
"nonEditableReason": {
"reason": "PLUGIN_LICENSE_ERROR",
"message": "The Parent Link is only available to Jira Premium users."
}
},
"customfield_10019": "0|i1aoqv:",
"timeestimate": null,
"aggregatetimeoriginalestimate": null,
"versions": [],
"issuelinks": [],
"assignee": null,
"updated": "2024-11-29T20:31:29.820+0530",
"status": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/status/10063",
"description": "",
"iconUrl": "https://cto-jira-plugin.atlassian.net/",
"name": "To Do",
"id": "10063",
"statusCategory": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/statuscategory/2",
"id": 2,
"key": "new",
"colorName": "blue-gray",
"name": "To Do"
}
},
"components": [],
"timeoriginalestimate": null,
"description": {
"type": "doc",
"version": 1,
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Alert/Event ID: 6ffc31d320e423d77c1761f4\nAlert/Event App: \nAlert/Event User: kamlesh.solanki@crestdatasys.com\n\nAlert Name: Fallback Action\nAlert Type: policy\nAlert App Category: Business\n\nEvent Name: value_unavailable\nEvent Type: value_unavailable"
}
]
}
]
},
"customfield_10010": null,
"customfield_10014": null,
"customfield_10015": null,
"timetracking": {},
"customfield_10005": null,
"customfield_10006": null,
"customfield_10007": null,
"security": null,
"customfield_10008": null,
"customfield_10009": null,
"aggregatetimeestimate": null,
"attachment": [],
"summary": "Netskope Business alert name: Fallback Action, Event Name: value_unavailable",
"creator": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/user?accountId=712020%3Ad2bb6960-8c0c-4aff-9d5c-4723e20ff6cb",
"accountId": "712020:d2bb6960-8c0c-4aff-9d5c-4723e20ff6cb",
"emailAddress": "kaushalpatel0506@gmail.com",
"avatarUrls": {
"48x48": "https://secure.gravatar.com/avatar/c20e29843b8be2868b51047c06d2f0b9?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-5.png",
"24x24": "https://secure.gravatar.com/avatar/c20e29843b8be2868b51047c06d2f0b9?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-5.png",
"16x16": "https://secure.gravatar.com/avatar/c20e29843b8be2868b51047c06d2f0b9?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-5.png",
"32x32": "https://secure.gravatar.com/avatar/c20e29843b8be2868b51047c06d2f0b9?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-5.png"
},
"displayName": "Kaushal Patel",
"active": true,
"timeZone": "Asia/Calcutta",
"accountType": "atlassian"
},
"subtasks": [],
"customfield_10040": null,
"customfield_10041": null,
"customfield_10042": null,
"customfield_10043": null,
"reporter": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/user?accountId=712020%3Ad2bb6960-8c0c-4aff-9d5c-4723e20ff6cb",
"accountId": "712020:d2bb6960-8c0c-4aff-9d5c-4723e20ff6cb",
"emailAddress": "kaushalpatel0506@gmail.com",
"avatarUrls": {
"48x48": "https://secure.gravatar.com/avatar/c20e29843b8be2868b51047c06d2f0b9?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-5.png",
"24x24": "https://secure.gravatar.com/avatar/c20e29843b8be2868b51047c06d2f0b9?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-5.png",
"16x16": "https://secure.gravatar.com/avatar/c20e29843b8be2868b51047c06d2f0b9?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-5.png",
"32x32": "https://secure.gravatar.com/avatar/c20e29843b8be2868b51047c06d2f0b9?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-5.png"
},
"displayName": "Kaushal Patel",
"active": true,
"timeZone": "Asia/Calcutta",
"accountType": "atlassian"
},
"customfield_10044": null,
"aggregateprogress": {
"progress": 0,
"total": 0
},
"customfield_10045": null,
"customfield_10001": null,
"customfield_10002": [],
"customfield_10046": null,
"customfield_10003": null,
"customfield_10047": null,
"customfield_10004": null,
"customfield_10048": [],
"customfield_10038": null,
"customfield_10039": [],
"environment": null,
"duedate": null,
"progress": {
"progress": 0,
"total": 0
},
"votes": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issue/JD-1/votes",
"votes": 0,
"hasVoted": false
},
"comment": {
"comments": [],
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issue/308014/comment",
"maxResults": 0,
"total": 0,
"startAt": 0
},
"worklog": {
"startAt": 0,
"maxResults": 20,
"total": 0,
"worklogs": []
}
}
}
指定されたプロジェクトとチケットタイプのチケットフィールドを取得する
API Endpoint: <Instance URL>/rest/api/3/issue/createmeta/<project_id>/issuetypes/<issue_type_id>
Method: 得る
Path Parameters
| Key | Value |
|---|---|
| project_id | 10015 |
| issue_type_id | 10045 |
Parameters
| Key | Value |
|---|---|
| startAt | 0 |
| maxResults | 200 |
Headers
| Key | Value |
|---|---|
| ユーザーエージェント | netskope-ce-6.0.0-cto-jira-v2.3.0 |
| Authorization | Basic <user_email:api_key> |
Sample API Response (Status Code: 200)
{
"startAt": 0,
"maxResults": 200,
"total": 16,
"fields": [
{
"required": false,
"schema": {
"type": "user",
"system": "assignee"
},
"name": "Assignee",
"key": "assignee",
"autoCompleteUrl": "https://cto-jira-plugin.atlassian.net/rest/api/3/user/assignable/search?project=JD&query=",
"hasDefaultValue": false,
"operations": [
"set"
],
"fieldId": "assignee"
},
{
"required": false,
"schema": {
"type": "array",
"items": "attachment",
"system": "attachment"
},
"name": "Attachment",
"key": "attachment",
"hasDefaultValue": false,
"operations": [
"set",
"copy"
],
"fieldId": "attachment"
},
{
"required": false,
"schema": {
"type": "any",
"custom": "com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf",
"customId": 10000
},
"name": "Development",
"key": "customfield_10000",
"hasDefaultValue": false,
"operations": [
"set"
],
"fieldId": "customfield_10000"
},
{
"required": false,
"schema": {
"type": "team",
"custom": "com.atlassian.jira.plugin.system.customfieldtypes:atlassian-team",
"customId": 10001,
"configuration": {
"com.atlassian.jira.plugin.system.customfieldtypes:atlassian-team": true
}
},
"name": "Team",
"key": "customfield_10001",
"autoCompleteUrl": "https://cto-jira-plugin.atlassian.net/gateway/api/v1/recommendations",
"hasDefaultValue": false,
"operations": [
"set"
],
"fieldId": "customfield_10001"
},
{
"required": false,
"schema": {
"type": "number",
"custom": "com.pyxis.greenhopper.jira:jsw-story-points",
"customId": 10016
},
"name": "Story point estimate",
"key": "customfield_10016",
"hasDefaultValue": false,
"operations": [
"set"
],
"fieldId": "customfield_10016"
},
{
"required": false,
"schema": {
"type": "any",
"custom": "com.pyxis.greenhopper.jira:gh-lexo-rank",
"customId": 10019
},
"name": "Rank",
"key": "customfield_10019",
"hasDefaultValue": false,
"operations": [
"set"
],
"fieldId": "customfield_10019"
},
{
"required": false,
"schema": {
"type": "array",
"items": "json",
"custom": "com.pyxis.greenhopper.jira:gh-sprint",
"customId": 10020
},
"name": "Sprint",
"key": "customfield_10020",
"hasDefaultValue": false,
"operations": [
"set"
],
"fieldId": "customfield_10020"
},
{
"required": false,
"schema": {
"type": "array",
"items": "option",
"custom": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes",
"customId": 10021
},
"name": "Flagged",
"key": "customfield_10021",
"hasDefaultValue": false,
"operations": [
"add",
"set",
"remove"
],
"allowedValues": [
{
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/customFieldOption/10019",
"value": "Impediment",
"id": "10019"
}
],
"fieldId": "customfield_10021"
},
{
"required": false,
"schema": {
"type": "string",
"system": "description"
},
"name": "Description",
"key": "description",
"hasDefaultValue": false,
"operations": [
"set"
],
"fieldId": "description"
},
{
"required": false,
"schema": {
"type": "array",
"items": "issuelinks",
"system": "issuelinks"
},
"name": "Linked Issues",
"key": "issuelinks",
"autoCompleteUrl": "https://cto-jira-plugin.atlassian.net/rest/api/3/issue/picker?currentProjectId=&showSubTaskParent=true&showSubTasks=true¤tIssueKey=null&query=",
"hasDefaultValue": false,
"operations": [
"add",
"copy"
],
"fieldId": "issuelinks"
},
{
"required": true,
"schema": {
"type": "issuetype",
"system": "issuetype"
},
"name": "Issue Type",
"key": "issuetype",
"hasDefaultValue": false,
"operations": [],
"allowedValues": [
{
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issuetype/10045",
"id": "10045",
"description": "Tasks track small, distinct pieces of work.",
"iconUrl": "https://cto-jira-plugin.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium",
"name": "Task",
"subtask": false,
"avatarId": 10318,
"entityId": "2c509b1e-1b97-4cb0-9401-1e9433b6c79e",
"hierarchyLevel": 0
}
],
"fieldId": "issuetype"
},
{
"required": false,
"schema": {
"type": "array",
"items": "string",
"system": "labels"
},
"name": "Labels",
"key": "labels",
"autoCompleteUrl": "https://cto-jira-plugin.atlassian.net/rest/api/1.0/labels/suggest?query=",
"hasDefaultValue": false,
"operations": [
"add",
"set",
"remove"
],
"fieldId": "labels"
},
{
"required": false,
"schema": {
"type": "issuelink",
"system": "parent"
},
"name": "Parent",
"key": "parent",
"hasDefaultValue": false,
"operations": [
"set"
],
"fieldId": "parent"
},
{
"required": true,
"schema": {
"type": "project",
"system": "project"
},
"name": "Project",
"key": "project",
"hasDefaultValue": false,
"operations": [
"set"
],
"allowedValues": [
{
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/project/10015",
"id": "10015",
"key": "JD",
"name": "Jira Demo",
"projectTypeKey": "software",
"simplified": true,
"avatarUrls": {
"48x48": "https://cto-jira-plugin.atlassian.net/rest/api/3/universal_avatar/view/type/project/avatar/10418",
"24x24": "https://cto-jira-plugin.atlassian.net/rest/api/3/universal_avatar/view/type/project/avatar/10418?size=small",
"16x16": "https://cto-jira-plugin.atlassian.net/rest/api/3/universal_avatar/view/type/project/avatar/10418?size=xsmall",
"32x32": "https://cto-jira-plugin.atlassian.net/rest/api/3/universal_avatar/view/type/project/avatar/10418?size=medium"
}
}
],
"fieldId": "project"
},
{
"required": true,
"schema": {
"type": "user",
"system": "reporter"
},
"name": "Reporter",
"key": "reporter",
"autoCompleteUrl": "https://cto-jira-plugin.atlassian.net/rest/api/3/user/recommend?context=Reporter&issueKey=",
"hasDefaultValue": true,
"operations": [
"set"
],
"fieldId": "reporter"
},
{
"required": true,
"schema": {
"type": "string",
"system": "summary"
},
"name": "Summary",
"key": "summary",
"hasDefaultValue": false,
"operations": [
"set"
],
"fieldId": "summary"
}
]
}
Jira プラットフォームでチケットを作成する
API Endpoint: <Instance URL>/rest/api/3/issue
Method: 役職
Headers
| 鍵 | Value |
|---|---|
| ユーザーエージェント | netskope-ce-6.0.0-cto-jira-v2.3.0 |
| Authorization | Basic <user_email:api_key> |
Body
{
"fields": {
"issuetype": {
"id": "10045"
},
"project": {
"id": "10015"
},
"summary": "Netskope Business alert name: Fallback Action, Event Name: value_unavailable",
"description": {
"content": [
{
"content": [
{
"text": "Alert/Event ID: 6ffc31d320e423d77c1761f4\nAlert/Event App: \nAlert/Event User: kamlesh.solanki@crestdatasys.com\n\nAlert Name: Fallback Action\nAlert Type: policy\nAlert App Category: Business\n\nEvent Name: value_unavailable\nEvent Type: value_unavailable",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
}
}
Sample API Response (Status Code: 201)
{
"id": "308126",
"key": "JD-113",
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issue/308126"
}
指定されたクエリに基づいてJiraチケットを検索する
API Endpoint: <Instance URL>/rest/api/3/search/jql
Method: 役職
Headers
| 鍵 | Value |
|---|---|
| ユーザーエージェント | netskope-ce-6.0.0-cto-jira-v2.3.0 |
| Authorization | Basic <user_email:api_key> |
Body
{
"jql": "key IN JD-1",
"maxResults": 100,
"fields": [
"status",
"assignee"
],
"nextPageToken": next_page_token,
}
Sample API Response (Status Code: 200)
{
"issues": [
{
"expand": "renderedFields,names,schema,operations,editmeta,changelog,versionedRepresentations",
"fields": {
"assignee": null,
"status": {
"description": "",
"iconUrl": "https://cto-jira-plugin.atlassian.net/",
"id": "10063",
"name": "To Do",
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/status/10063",
"statusCategory": {
"colorName": "blue-gray",
"id": 2,
"key": "new",
"name": "To Do",
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/statuscategory/2"
}
}
},
"id": "308015",
"key": "JD-2",
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issue/308015"
}
],
"nextPageToken": "ChUjU3RyaW5nJlNrUT0lSW50Jk1nPT0QARjs0su-3TI="
}
指定されたチケットIDのチケットフィールドを取得して編集する
API Endpoint: <Instance URL>/rest/api/3/issue/<issue_id>/editmeta
Method: 得る
Path Parameters
| 鍵 | Value |
|---|---|
| issue_id | JD-1 |
Headers
| 鍵 | Value |
|---|---|
| ユーザーエージェント | netskope-ce-6.0.0-cto-jira-v2.3.0 |
| Authorization | Basic <user_email:api_key> |
Sample API Response (Status Code: 200)
{
"fields": {
"summary": {
"required": true,
"schema": {
"type": "string",
"system": "summary"
},
"name": "Summary",
"key": "summary",
"operations": [
"set"
]
},
"issuetype": {
"required": true,
"schema": {
"type": "issuetype",
"system": "issuetype"
},
"name": "Issue Type",
"key": "issuetype",
"operations": [],
"allowedValues": [
{
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issuetype/10045",
"id": "10045",
"description": "Tasks track small, distinct pieces of work.",
"iconUrl": "https://cto-jira-plugin.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium",
"name": "Task",
"subtask": false,
"avatarId": 10318,
"entityId": "2c509b1e-1b97-4cb0-9401-1e9433b6c79e",
"hierarchyLevel": 0
},
{
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issuetype/10046",
"id": "10046",
"description": "Bugs track problems or errors.",
"iconUrl": "https://cto-jira-plugin.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium",
"name": "Bug",
"subtask": false,
"avatarId": 10303,
"entityId": "7d5c7d87-29c6-4d3d-b388-a2b773697166",
"hierarchyLevel": 0
},
{
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/issuetype/10047",
"id": "10047",
"description": "Stories track functionality or features expressed as user goals.",
"iconUrl": "https://cto-jira-plugin.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium",
"name": "Story",
"subtask": false,
"avatarId": 10315,
"entityId": "d678842a-3080-40da-a68d-cacbbb097980",
"hierarchyLevel": 0
}
]
},
……
}
}
Jiraチケットを更新する
API Endpoint: <Instance URL>/rest/api/3/issue/<issue_id>
Method: PUT
Path Parameters
| 鍵 | Value |
|---|---|
| issue_id | JD-1 |
Headers
| 鍵 | Value |
|---|---|
| ユーザーエージェント | netskope-ce-6.0.0-cto-jira-v2.3.0 |
| Authorization | Basic <user_email:api_key> |
Body
{
"update": {
"comment": [
{
"add": {
"body": {
"content": [
{
"content": [
{
"text": "Received new alert/event with Alert/Event ID: $id and Alert Name: $alertName, Event Name: $alert_name in Cloud Exchange.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
}
}
]
}
}
Sample API Response (Status Code: 204)
No Content
Jiraチケットの遷移(ステータス)を取得する
API Endpoint: <Instance URL>/rest/api/3/issue/<issue_id>/transitions
Method: 得る
Path Parameters
| 鍵 | Value |
|---|---|
| issue_id | JD-1 |
Headers
| 鍵 | Value |
|---|---|
| ユーザーエージェント | netskope-ce-6.0.0-cto-jira-v2.3.0 |
| Authorization | Basic <user_email:api_key> |
Sample API Response (Status Code: 200)
{
"expand": "transitions",
"transitions": [
{
"id": "11",
"name": "To Do",
"to": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/status/10063",
"description": "",
"iconUrl": "https://cto-jira-plugin.atlassian.net/",
"name": "To Do",
"id": "10063",
"statusCategory": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/statuscategory/2",
"id": 2,
"key": "new",
"colorName": "blue-gray",
"name": "To Do"
}
},
"hasScreen": false,
"isGlobal": true,
"isInitial": false,
"isAvailable": true,
"isConditional": false,
"isLooped": false
},
{
"id": "21",
"name": "In Progress",
"to": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/status/10064",
"description": "",
"iconUrl": "https://cto-jira-plugin.atlassian.net/",
"name": "In Progress",
"id": "10064",
"statusCategory": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/statuscategory/4",
"id": 4,
"key": "indeterminate",
"colorName": "yellow",
"name": "In Progress"
}
},
"hasScreen": false,
"isGlobal": true,
"isInitial": false,
"isAvailable": true,
"isConditional": false,
"isLooped": false
},
{
"id": "31",
"name": "Done",
"to": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/status/10065",
"description": "",
"iconUrl": "https://cto-jira-plugin.atlassian.net/",
"name": "Done",
"id": "10065",
"statusCategory": {
"self": "https://cto-jira-plugin.atlassian.net/rest/api/3/statuscategory/3",
"id": 3,
"key": "done",
"colorName": "green",
"name": "Done"
}
},
"hasScreen": false,
"isGlobal": true,
"isInitial": false,
"isAvailable": true,
"isConditional": false,
"isLooped": false
}
]
}
Jiraチケットのステータスを設定する
API Endpoint: <Instance URL>/rest/api/3/issue/<issue_id>/transitions
Method: 得る
Path Parameters
| 鍵 | Value |
|---|---|
| issue_id | JD-1 |
Headers
| 鍵 | Value |
|---|---|
| ユーザーエージェント | netskope-ce-6.0.0-cto-jira-v2.3.0 |
| Authorization | Basic <user_email:api_key> |
Body
{
"transition": {
"id": "31"
}
}
Jiraユーザーを獲得する
API Endpoint: <Instance URL>/rest/api/3/users/search
Method: 得る
Parameters
| 鍵 | Value |
|---|---|
| startAt | 0 |
| maxResults | 1000 |
Headers
| 鍵 | Value |
|---|---|
| ユーザーエージェント | netskope-ce-6.0.0-cto-jira-v2.3.0 |
| Authorization | Basic <user_email:api_key> |
Sample API Response (Status Code: 200)
[
{
"self": "https://jira-itsm-crest.atlassian.net/rest/api/3/user?accountId=61c031260586a2006981a3a5",
"accountId": "61c031260586a2006981a3a5",
"accountType": "atlassian",
"emailAddress": "kaushal.patel@crestdata.ai",
"avatarUrls": {
"48x48": "https://secure.gravatar.com/avatar/70b3242c928f8da4c3d4f05cb06e294b?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-6.png",
"24x24": "https://secure.gravatar.com/avatar/70b3242c928f8da4c3d4f05cb06e294b?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-6.png",
"16x16": "https://secure.gravatar.com/avatar/70b3242c928f8da4c3d4f05cb06e294b?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-6.png",
"32x32": "https://secure.gravatar.com/avatar/70b3242c928f8da4c3d4f05cb06e294b?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FKP-6.png"
},
"displayName": "Kaushal Patel",
"active": true,
"locale": "en_US"
},
….
]
パフォーマンスマトリックス
このパフォーマンス測定は、プラグインを数時間稼働させた後、1分ごとにランダムに測定を行い、JIRAで生成されるチケット数の平均値を収集して行われました。測定値は、下記の仕様を満たす大型CEスタックで収集されます。
| デスクリプション | Specifications |
|---|---|
| スタックの詳細 | サイズ:大 RAM:32 GB CPU:16コア |
1分あたりに作成されるチケット数 | 約45枚のチケット |
ユーザーエージェント
このプラグインに追加されたユーザーエージェントは、以下の形式です。
netskope-ce-6.0.0-cto-jira-v2.3.0
ワークフロー
- Jira APIトークンを取得します。
- Jiraプラグインを設定します。
- Jira 用の Ticket Orchestrator ビジネスルールを設定します。
- Jira 用の Ticket Orchestrator キューを設定します。
- Jiraプラグインを検証してください。
動画を見る
再生ボタンをクリックして動画をご覧ください。
Jira APIトークンを取得してください
- SecurityをクリックしてからCreate and manage API tokensをクリックしてください。Create and manage API tokensを参照してください。

- Copyをクリックし、トークンを プラグイン設定に保存してください。 Doneをクリックしてください。
注記
このトークンは作成時のみ利用可能/表示されます。このトークンはCloud Exchangeで Ticket Orchestrator JIRA プラグインを設定するために使用されます。

Jiraプラグインを設定する
- Nextをクリックして認証パラメータを入力してください。
- Jira Cloud Instance URL: Jira CloudインスタンスのURL。
- Email Address: Jiraユーザーの電子メールアドレス。
- API TokenJiraユーザーのAPIトークン。

- Nextをクリックし、Jira の課題タイプをカンマ区切りの値で入力します (例:
Task,Bug)。問題タイプの値はケースを区別します。 「,」を含む課題タイプの値はサポートされていません。(例:「Bu,gs」)および少なくとも1つのプロジェクトに関連付けられた課題タイプの値がサポートされます。
- 以下のフィールドからマッピング設定を提供してください。完了したら、 Saveをクリックしてください。
- ステータスマッピングのデフォルトマッピングは以下のとおりです。

- カスタムステータスを作成するには、必要な定義済みオプションを選択し、下部のAddをクリックします。

- 新しいCloud Exchangeフィールドを作成するには、 Add Newをクリックします。

- フィールド名を入力し、 Add Fieldをクリックして、選択したステータスにマッピングします。完了したら、 Saveをクリックしてプラグインを設定してください。



Jira 用の Ticket Orchestrator ビジネスルールを作成する
Jira プラットフォームでチケットを作成するために必要なフィルターに基づいてビジネス ルールを作成します。
- Ticket OrchestratorでBusiness Rulesに移動します。
- Create New Ruleをクリックしてください。
- ルール名を入力し、ビジネスルールの対象となるフィールドに対して適切なフィルタクエリ条件を作成します。Filter Queryをクリックしてクエリを手動で入力することもできます。
- Saveをクリックしてください。

Jira 用のチケットオーケストレーターキューを追加する
- Ticket OrchestratorでQueuesに移動します。
- Add Queue Configurationをクリックし、ドロップダウンメニューからビジネスルール、プラグイン構成、キューを選択します。Map Fieldsセクションで、アラートとインシデントの間で適切な値を追加してマッピングします。アラート属性には、 $カスタムメッセージフィールドでアクセスできます。 Add をクリックして、フィールドマッピングを追加します。

- 既にアラート/イベントを取得済みの場合、 Saveをクリックしてキューを同期してください。
注記
- 担当者フィールドは、ユーザーの電子メール、文字列としての電子メール、または文字列としてのユーザー ID を含むCloud Exchangeフィールドにマッピングできます。 マッピングされた電子メール ID には同じ JIRA インスタンス上のユーザーが必要であり、アカウント設定のユーザーのプライバシー設定で電子メールの公開設定が担当者の「誰でも」に設定されていることに注意してください。

- ユーザーは、担当者フィールドを除き、それぞれのスキーマ内のフィールドの値を指定する必要があります。ほとんどのフィールドのスキーマは、こちらで入手できます。
- ステータスフィールドのマッピングには、Netskopeイベントステータス形式で値を指定してください。
- Netskopeでインシデントステータスを更新するには、CTO向けのNetskopeプラグインガイドを参照してください。

- 担当者フィールドは、ユーザーの電子メール、文字列としての電子メール、または文字列としてのユーザー ID を含むCloud Exchangeフィールドにマッピングできます。 マッピングされた電子メール ID には同じ JIRA インスタンス上のユーザーが必要であり、アカウント設定のユーザーのプライバシー設定で電子メールの公開設定が担当者の「誰でも」に設定されていることに注意してください。
Jiraプラグインを検証する
Cloud Exchangeで検証する
ワークフローを検証するには、Netskope Alerts/Eventsが必要です。
- ログ画面でチケット作成を確認してください。Settings > Logging に移動して、プラグイン名でフィルターを適用してください。



注記
ビジネスルールに重複排除ルールが追加されている場合。すると、重複排除ルールに従ってチケットが更新されます。インシデント発生時には、デフォルトでは特定のインシデントに対して1つのチケットのみが作成されます。ビジネスルールに重複排除ルールが設定されていない場合にのみ、チケットが更新されます。
Jiraで検証する
インシデントの作成を検証するには、Ticket Orchestrator のTicketsに移動します。チケットの外部リンクOpenをクリックしてください。Jira Cloudにログインして、新しく作成されたチケットを確認してください。




Jiraプラグインのトラブルシューティング
Jiraプラグインの設定ができません
ユーザーがJiraプラグインを設定できない場合、以下のいずれかの理由が考えられます。
- 間違ったクレデンシャルが提供されました。
- ユーザーに必要な権限がありません。
- インスタンスURLが正しくありません。
What to do: これらの問題を解決するには:
- 必ず正しいクレデンシャルを入力してください。
- ユーザーが必要な権限を持っていることを確認してください。
- 正しいインスタンスURLが指定されていることを確認してください。
チケットを作成できません プラグイン
Jiraプラグインでチケットを作成できない場合、以下のいずれかの理由が考えられます。
- Cloud Exchange にアラートやイベントがないか、新しいアラートやイベントが取得されていません。
- ビジネスルールにはフィルタリングされたアラート/イベントがありません
- ユーザーにはインシデントを作成するために必要な権限がありません。
- 要約フィールドはキュー構成にマッピングされていません。
What to do: 根本原因を特定し、最適な解決策を選択してください。
- アラート/イベントページでアラート/イベントが利用可能かどうかを確認してください。アラート/イベントが利用できない場合は、チケットは作成されません。CTOでアラート/イベントを作成するには、テナントまたはその他の必要な設定を構成してください。
- ビジネスルールを確認し、アラートがフィルタリングされているかどうかをテストして確認します。フィルタリングでアラートが利用できない場合は、ビジネスルールを更新します。
- ユーザーが必要な権限を持っていることを確認してください。
- チケットを作成するには、必ず概要と値をマッピングしてください。チケット作成時には概要の入力が必須です。
チケットを作成できません 古いプラグイン
古いプラグインバージョンを使用している場合は、JSONスキーマのAssigneeフィールドにuser idが期待されます。 プラグインを最新バージョンにアップグレードすると、 user idまたはuser emailを文字列として要求するようになります。そのため、既に作成済みのチケットを更新したり、新しいチケットを作成したりする際に、以下のようなエラーが発生する可能性があります。
CTO Jira [CTO Jira]: Received exit code 400, Bad Request while updating ticket with ID 'DEM-10' on Jira platform.
CTO Jira [CTO Jira]: Error occurred while creating a Jira ticket for Alert ID '9e035163ad5cd6bf6fe32999' on Jira platform. Error: The assignee (id) must be a string
What to do: このプラグインの旧バージョンでは、AssigneeフィールドにJSONスキーマのユーザーIDを想定していますが、最新バージョンではuser または文字列のユーザーIDを想定しているため、既に設定済みのキューでAssigneeフィールドのマッピングを手動で変更する必要があります。
プラグインアップグレード前のキュー:

プラグインを最新バージョンにアップグレードした後、既に設定済みのキューの「担当者」フィールドの値を手動で変更する必要があります。担当者欄の書式例を以下に示します。
ユーザーID(文字列):

文字列としてのユーザーの電子メール:

ユーザーの電子メールを含む CE フィールドのいずれかに直接マッピングされます。


既知の行動
- Netskope Cloud Exchange v6.0.0の場合、バージョン2.3.0より古いJiraプラグインは互換性がなく、正常に動作しません。Cloud Exchange v6.0.0との完全な互換性を確保するため、Jiraプラグインをバージョン2.3.0以降にアップデートすることをお勧めします。
- Netskope Cloud Exchange v5.1.2 で古い Jira プラグイン バージョンを使用している場合 またはそれ以前のバージョンを使用している場合、Netskope Cloud Exchange を v6.0.0 にアップグレードすると、Jira プラグインは自動的に CTO Jira v2.3.0 に更新されます。
- Ticket Orchestrator Jiraプラグインは、Cloud Exchange上での重要度に基づく同期をサポートしていません。そのため、「インシデントをNetskopeテナントに更新する」トグルが有効になっている場合、インシデントイベントのNetskopeテナントにおける重大度更新をスキップするエラーログが表示される可能性があります。
- Cloud Exchangeの現在の動作により、Ticket Orchestratorキューを手動で同期する場合、担当者フィールドを選択するとパフォーマンスの問題が発生する可能性があります。これは、ユーザーの電子メールを検証するために、プラットフォームからユーザーを取得するために追加の API 呼び出しが行われるために発生します。
制限事項
- データの整合性を確保し、潜在的な問題を防ぐために、API を介したチケット作成中に通常は設定できないフィールドがいくつかあります。
- 通常は読む専用、またはチケット作成時に Jira によって自動的に管理されるよくあるフィールド。 API経由でチケットを作成する際に、Jiraによって設定されている、または設定が許可されていないフィールドが他にも存在する可能性があります。
以下にその例をいくつか示します。- 状態
- Created
- Updated
- 問題ID
- 作成日
- 更新日
- 作成者
- Updated By
- 鍵
- Images
- 参加者を募集する
- 関連問題
- このプラグインは、Cloud Exchange を介したファイルのアップロードにも対応していません。そのため、 「添付ファイル」フィールドはサポートされていません。
- 通常は読む専用、またはチケット作成時に Jira によって自動的に管理されるよくあるフィールド。 API経由でチケットを作成する際に、Jiraによって設定されている、または設定が許可されていないフィールドが他にも存在する可能性があります。
- プロジェクトが削除されると、そのプロジェクトが既に設定されているキューはIDとして表示されます。








