Ce document explique comment configurer le plugin Jira v2.3.0 avec le module Ticket Orchestrator de la plateforme Netskope Cloud Exchange. Ce plugin est utilisé pour créer des tickets pour des projets Jira sélectionnés sur la plateforme Jira Cloud. Il permet également de mettre à jour les tickets et de synchroniser leur statut.
Conditions préalables
- Un locataire Netskope (ou plusieurs, par exemple des instances de production et de développement/test).
- Un locataire Netskope Cloud Exchange avec le plugin Tenant et le plugin Ticket Orchestrator déjà configurés.
- Instance Jira avec un compte.
- Connectivité à l'hôte suivant : https://*.atlassian.net/.
Support du plugin Jira
Ce plugin est utilisé pour créer des tickets pour des projets Jira sélectionnés sur la plateforme Jira Cloud. Il permet également de mettre à jour les tickets et de synchroniser leur statut.
| Description | Types pris en charge |
|---|---|
| Alertes pour les billets | Compromised Credentials, Policy, Malsite, Malware, DLP (Prévention des pertes de données), Security Assessment, Watchlist, Quarantine, Remediation, UBA, CTEP, périphérique, Content |
| Événements pour les billets | Point final, incident |
Mises en correspondance
Cartographie des files d'attente
| Description | Types |
|---|---|
| Champs mappés par défaut pour le message personnalisé du résumé. | Netskope $appCategory Nom de l'alerte : $alertName; Nom de l'événement : $alert_name |
| Champs mappés par défaut pour le message personnalisé de Description | Alerte/identification de l'événement $idAlert/Event ID : $idAlerte/événement App : $appUtilisateur de l'alerte/événement : $userNom de l'alerte : $alertNameType d'alerte : $alertTypeCatégorie de l'application d'alerte : $appCategoryNom de l'événement : $alert_nameType d'événement : $eventType |
Default Status Mapping
| Statut de Cloud Exchange | Value | Statut Jira |
|---|---|---|
| Nouveau | Nouveau | Nouveau |
| En cours | En cours | En cours |
| En attente | – | La valeur par défaut sera vide. L'utilisateur peut créer un statut personnalisé sur le projet Jira pour le mapper. |
| Closed | Closed | Closed |
| Deleted | – | La valeur par défaut sera vide. L'utilisateur peut créer un statut personnalisé sur le projet Jira pour le mapper. |
| Autres | – | La valeur par défaut sera vide. L'utilisateur peut créer un statut personnalisé sur le projet Jira pour le mapper. |
Note
L'état par défaut dans le plugin Jira peut varier, car ces champs peuvent être personnalisés dans la plateforme. Tout statut qui n'est pas mis en correspondance avec les champs correspondants de Cloud Exchange ne sera pas synchronisé avec le statut du ticket.
Permissions
- Autorisations du projet (Voir : https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions)
- Parcourir les projets
- Créer/visualiser des problèmes dans n'importe quel projet
- Ajouter des commentaires à la question Jira donnée
- Administrer des projets
- Autorisations globales (Voir : https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions)
- Administrateur Jira
- Si la sécurité au niveau de la question est configurée, l'autorisation de sécurité au niveau de la question pour voir la question ou les questions.
API Details
| Point final de l'API | Méthode | Cas d'utilisation |
|---|---|---|
| /rest/api/3/myself | OBTENIR | Validez un utilisateur Jira. |
| /rest/api/3/field | OBTENIR | Obtenez les champs de billets disponibles. |
| /rest/api/3/project/search | OBTENIR | Récupérez tous les projets de la plateforme Jira. |
| /rest/api/3/issue/<issue_id> | OBTENIR | Obtenez des informations particulières sur les billets. |
| /rest/api/3/issue/createmeta/<project_id>/issuestypes/<issue_type_id> | OBTENIR | Obtenir les champs du ticket pour un projet et un type de ticket donnés. |
| /rest/api/3/issue | PUBLIER | Créez un ticket sur la plateforme Jira. |
| /rest/api/3/search/jql | PUBLIER | Recherchez des tickets Jira pour une requête donnée. |
| /rest/api/3/issue/{issue_id}/editmeta | OBTENIR | Obtenir les champs du ticket pour un ID de ticket donné à éditer. |
| /rest/api/3/issue/<issue_id> | PUT | Mettre à jour un ticket Jira. |
| /rest/api/3/issue/<issue_id>/transitions | OBTENIR | Obtenir les transitions (statuts) des tickets Jira. |
| /rest/api/3/issue/<issue_id>/transitions | PUBLIER | Définir le statut des tickets Jira. |
| /rest/api/3/users/search | OBTENIR | Obtenir les utilisateurs de Jira. |
Valider un utilisateur Jira
API Endpoint: <Instance URL>/rest/api/3/myself
Method: OBTENIR
Headers
| Clé | Value |
|---|---|
| User-Agent | 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"
}
Obtenir les champs de billets disponibles
API Endpoint: <Instance URL>/rest/api/3/field
Method: OBTENIR
Headers
| Clé | Value |
|---|---|
| User-Agent | 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"
}
},
……
]
Récupérer tous les projets de la plateforme Jira
API Endpoint: <Instance URL>/rest/api/3/project/search
Method: OBTENIR
Parameters
| Clé | Value |
|---|---|
| startAt | 0 |
| maxResults | 50 |
| expand | issueTypes |
Headers
| Clé | Value |
|---|---|
| User-Agent | 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"
}
]
}
Obtenir les détails des billets
API Endpoint: <Instance URL>/rest/api/3/issue/<issue_id>
Method: OBTENIR
Path Parameters
| Clé | Value |
|---|---|
| issue_id | JD-1 |
Headers
| Clé | Value |
|---|---|
| User-Agent | 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": []
}
}
}
Obtenir les champs du ticket pour un projet et un type de ticket donnés
API Endpoint: <Instance URL>/rest/api/3/issue/createmeta/<project_id>/issuetypes/<issue_type_id>
Method: OBTENIR
Path Parameters
| Key | Value |
|---|---|
| project_id | 10015 |
| issue_type_id | 10045 |
Parameters
| Key | Value |
|---|---|
| startAt | 0 |
| maxResults | 200 |
Headers
| Key | Value |
|---|---|
| User-Agent | 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"
}
]
}
Créer un ticket sur la plateforme Jira
API Endpoint: <Instance URL>/rest/api/3/issue
Method: PUBLIER
Headers
| Clé | Value |
|---|---|
| User-Agent | 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"
}
Rechercher des tickets Jira pour une requête donnée
API Endpoint: <Instance URL>/rest/api/3/search/jql
Method: PUBLIER
Headers
| Clé | Value |
|---|---|
| User-Agent | 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="
}
Obtenir les champs de ticket à modifier pour un numéro de ticket donné
API Endpoint: <Instance URL>/rest/api/3/issue/<issue_id>/editmeta
Method: OBTENIR
Path Parameters
| Clé | Value |
|---|---|
| issue_id | JD-1 |
Headers
| Clé | Value |
|---|---|
| User-Agent | 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
}
]
},
……
}
}
Mettre à jour un ticket Jira
API Endpoint: <Instance URL>/rest/api/3/issue/<issue_id>
Method: PUT
Path Parameters
| Clé | Value |
|---|---|
| issue_id | JD-1 |
Headers
| Clé | Value |
|---|---|
| User-Agent | 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
Obtenir les transitions (statuts) des tickets Jira
API Endpoint: <Instance URL>/rest/api/3/issue/<issue_id>/transitions
Method: OBTENIR
Path Parameters
| Clé | Value |
|---|---|
| issue_id | JD-1 |
Headers
| Clé | Value |
|---|---|
| User-Agent | 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
}
]
}
Définir le statut des tickets Jira
API Endpoint: <Instance URL>/rest/api/3/issue/<issue_id>/transitions
Method: OBTENIR
Path Parameters
| Clé | Value |
|---|---|
| issue_id | JD-1 |
Headers
| Clé | Value |
|---|---|
| User-Agent | netskope-ce-6.0.0-cto-jira-v2.3.0 |
| Authorization | Basic <user_email:api_key> |
Body
{
"transition": {
"id": "31"
}
}
Obtenir les utilisateurs de Jira
API Endpoint: <Instance URL>/rest/api/3/users/search
Method: OBTENIR
Parameters
| Clé | Value |
|---|---|
| startAt | 0 |
| maxResults | 1000 |
Headers
| Clé | Value |
|---|---|
| User-Agent | 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"
},
….
]
Matrice de performance
Cette lecture de performance a été considérée après avoir laissé le plugin fonctionner pendant quelques heures et pris des lectures aléatoires par minute pour collecter le compte moyen du nombre de tickets qui sont générés dans JIRA. Les données sont collectées sur une grande pile CE avec les spécifications ci-dessous.
| Description | Specifications |
|---|---|
| Détails de la pile | Taille : Grande RAM : 32 GB CPU : 16 cœurs |
Tickets créés par minute | ~ 45 billets |
Agent utilisateur
L'agent utilisateur ajouté pour ce plugin est au format suivant :
netskope-ce-6.0.0-cto-jira-v2.3.0
Workflow
- Obtenez un jeton API Jira.
- Configurez le plugin Jira.
- Configurez les règles métier de Ticket Orchestrator pour Jira.
- Configurez les files d'attente de Ticket Orchestrator pour Jira.
- Validez le plugin Jira.
Regardez une vidéo
Cliquer sur « play » pour regarder une vidéo.
Obtenez votre jeton API Jira
- Pour créer une clé API New Jira Cloud, connectez-vous à Jira, allez dans Your Profile and Settings et cliquez sur Profile.

- Cliquez sur Security puis cliquez sur Create and manage API tokens. Voir Create and manage API tokens.

- Cliquez sur Copy, et enregistrez le jeton à utiliser dans la configuration du plugin. Cliquez sur Done.
Note
Ce jeton ne sera disponible/visible qu'au moment de la création. Ce jeton sera utilisé pour configurer le plugin Ticket Orchestrator JIRA dans Cloud Exchange.

Configurer le plugin Jira
- Dans Cloud Exchange, allez sur Settings > Plugin Store. Recherchez et sélectionnez le plugin Jira v2.3.0 (CTO).

- Saisissez un nom de configuration et modifiez l'intervalle de synchronisation en fonction de vos besoins.

- Cliquez sur Next et entrez les paramètres d'authentification :
- Jira Cloud Instance URL: URL d’instance Jira Cloud.
- Email Address: Adresse e-mail de l’utilisateur de Jira.
- API Token: Jeton API de l'utilisateur Jira.

- Cliquez sur Next et saisissez les types de problèmes Jira dans des valeurs séparées par des virgules (comme
Task,Bug). Les valeurs du type de question sont sensibles à la casse. les valeurs de type de question comportant des "," ne sont pas prises en charge (par ex. "Bu,gs") et la valeur du type d'émission associée à au moins un projet seront prises en charge.
- Fournir la configuration de mappage à partir des champs suivants. Une fois terminé, cliquez sur Save.
- Voici le mappage par défaut pour le mappage de l'état :

- Pour créer un statut personnalisé, sélectionnez les options prédéfinies de votre choix et cliquez sur Add en bas de page.

- Pour créer un New champ Cloud Exchange , cliquez sur Add New.

- Saisissez un nom de champ et cliquez sur Add Field pour l'associer à l'état de votre choix. Lorsque vous avez terminé, cliquez sur Save pour configurer le plugin.



Créer une règle métier Ticket Orchestrator pour Jira
Créez une règle de gestion basée sur les filtres dont vous avez besoin pour créer des tickets dans la plateforme Jira.
- Dans Ticket Orchestrator, allez à Business Rules.
- Cliquez sur Create New Rule.
- Saisissez un nom de règle et construisez la condition de requête de filtre appropriée sur le(s) champ(s) de la règle métier. Vous pouvez également taper la requête manuellement en cliquant sur Filter Query.
- Cliquez sur Save.

Ajouter une file d'attente Ticket Orchestrator pour Jira
- Dans Ticket Orchestrator, allez à Queues.
- Cliquez sur Add Queue Configuration et sélectionnez la règle métier, une configuration de plugin et une file d'attente dans les menus déroulants. Ajoutez et mappez les valeurs appropriées entre les alertes et les incidents dans la section Map Fields. Les attributs d'alerte sont accessibles en utilisant $ dans le champ du message personnalisé. Cliquez sur Add pour ajouter d'autres correspondances de champs.

- Cliquez sur Save et synchronisez la file d'attente si vous disposez déjà des alertes/événements.
Note
- Le champ Assignee peut être mis en correspondance avec le champ Cloud Exchange contenant l'email de l'utilisateur ou l'email sous forme de chaîne ou l'identifiant de l'utilisateur sous forme de chaîne. Notez que l'adresse électronique mappée doit avoir un utilisateur sur la même instance JIRA et que la visibilité de l'adresse électronique est réglée sur "Tout le monde" pour les cessionnaires dans les paramètres de confidentialité de l'utilisateur sous Paramètres du compte.

- L'utilisateur doit fournir la valeur du champ dans son schéma respectif, à l'exception du champ « Assigné à ». Pour la plupart des champs, le schéma est disponibleici.
- Pour la correspondance des champs d'état, indiquez la valeur dans le format d'état de l'événement Netskope.
- Pour mettre à jour le statut de l'incident sur Netskope, reportez-vous au guide du plugin Netskope pour CTO.

- Le champ Assignee peut être mis en correspondance avec le champ Cloud Exchange contenant l'email de l'utilisateur ou l'email sous forme de chaîne ou l'identifiant de l'utilisateur sous forme de chaîne. Notez que l'adresse électronique mappée doit avoir un utilisateur sur la même instance JIRA et que la visibilité de l'adresse électronique est réglée sur "Tout le monde" pour les cessionnaires dans les paramètres de confidentialité de l'utilisateur sous Paramètres du compte.
Valider le plugin Jira
Valider dans Cloud Exchange
Pour valider le site workflow, vous devez avoir Netskope Alerts/Events.
- Pour voir la liste des tickets créés dans Jira, allez sur Tickets dans Ticket Orchestrator.

Note
- En cours de révision est un statut personnalisé créé dans le Cloud Exchange.

- Si vous utilisiez déjà le plugin Jira sur un ancien locataire de Netskope Cloud Exchange, et que vous mettez à jour Cloud Exchange vers la version 6.0.0, il se peut que vous voyiez des couleurs différentes pour le même statut dans le champ Statut du ticket sur la page Tickets.
- En cours de révision est un statut personnalisé créé dans le Cloud Exchange.
- Vérifiez la création du ticket sur l'écran d'enregistrement. Allez sur Settings > Logging et appliquez le filtre avec le nom du plugin.



Note
Si vos règles de gestion ont une règle de déduplication ajoutée. puis il mettra à jour le ticket conformément à votre règle de déduplication. Pour les incidents, un seul ticket sera créé par défaut pour un incident particulier. Il ne mettra à jour le ticket que s'il n'y a pas de règle de déduplication dans votre règle de gestion.
Valider dans Jira
Pour valider la création de l'incident, rendez-vous sur Tickets dans Ticket Orchestrator. Cliquez sur Open sur le lien externe du billet. Connectez-vous à Jira Cloud et consultez le ticket nouvellement créé.




Dépannage du plugin Jira
Impossible de configurer le plugin Jira
Si l'utilisateur ne parvient pas à configurer le plugin Jira, cela peut être dû à l'une des raisons suivantes :
- Les informations d'identification fournies sont incorrectes.
- L'utilisateur ne dispose pas des autorisations nécessaires.
- L'URL de l'instance fournie est incorrecte.
What to do: Pour résoudre ces problèmes :
- Veillez à fournir des informations d'identification correctes.
- Assurez-vous que l'utilisateur dispose des autorisations nécessaires.
- Assurez-vous que l'URL de l'instance est correcte.
Impossible de créer un ticket avec le plugin
Si vous ne parvenez pas à créer un ticket avec le plugin Jira, cela peut être dû à l'une des raisons suivantes :
- Aucune alerte ou aucun événement n'est disponible sur Cloud Exchange, ou aucune alerte ou aucun événement de New n'est tiré.
- La règle de gestion n'a pas d'alertes/événements filtrés.
- L'utilisateur ne dispose pas des autorisations nécessaires pour créer des incidents.
- Le champ résumé n'est pas mappé dans la configuration de la file d'attente.
What to do: Trouvez la cause première et choisissez la solution la mieux adaptée.
- Vérifiez si les alertes/événements sont disponibles dans la page Alertes/Événements. Si aucune alerte/événement n'est disponible, le ticket ne sera pas créé. Configurez votre locataire ou toute autre configuration requise pour créer des alertes/événements dans CTO.
- Vérifiez la règle de gestion et testez-la pour confirmer qu'elle contient des alertes filtrées. Si aucune alerte n'est disponible dans le filtrage, mettez à jour la règle de gestion.
- Assurez-vous que les utilisateurs disposent des autorisations nécessaires.
- Veillez à associer le résumé aux valeurs pour créer un ticket. Le résumé est requis lors de la création d'un ticket.
Impossible de créer un ticket avec l'ancien plugin
Si vous utilisez une version antérieure du plugin, il attend user id dans un schéma JSON pour le champ Assignee. Après la mise à jour du plugin vers la dernière version, le plugin s'attend à ce que user id ou user email soit une chaîne de caractères. Il se peut donc que vous rencontriez l'erreur suivante lors de la mise à jour de tickets déjà créés ou de la création de tickets New:
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: Comme l'ancienne version de ce plugin attend l'identifiant de l'utilisateur dans le schéma JSON pour le champ Assignee et que la dernière version de ce plugin attend l'email ou l'identifiant de l'utilisateur dans une chaîne, vous devez modifier manuellement le mappage pour le champ Assignee dans la file d'attente déjà configurée.
File d'attente avant la mise à jour du plugin :

Après avoir mis à jour le plugin vers la dernière version, vous devez modifier manuellement la valeur du champ Assignee dans la file d'attente déjà configurée. Vous trouverez ci-dessous un exemple de format pour le champ Cessionnaire:
ID de l'utilisateur sous forme de chaîne de caractères :

Courriel de l'utilisateur sous forme de chaîne de caractères :

Directement lié à l'un des champs CE contenant l'adresse électronique de l'utilisateur :


Comportements connus
- Pour Netskope Cloud Exchange v6.0.0, Les plugins Jira dont la version est antérieure à 2.3.0 ne sont pas compatibles et ne fonctionneront pas correctement. Nous vous conseillons de mettre à jour vos plugins Jira à la version 2.3.0 ou plus récente pour assurer une compatibilité totale avec Cloud Exchange v6.0.0.
- Si vous utilisez une version antérieure du plugin Jira sur Netskope Cloud Exchange v5.1.2 ou plus ancien et que vous mettez à jour votre Netskope Cloud Exchange vers la version 6.0.0, le plugin Jira sera automatiquement mis à jour vers CTO Jira v2.3.0.
- Le plugin Jira de Ticket Orchestrator ne prend pas en charge la synchronisation pour la gravité sur Cloud Exchange. Il se peut donc que vous observiez des journaux d'erreurs concernant l'omission des mises à jour de gravité sur le poste Netskope pour l'événement d'incident lorsque la bascule Mettre à jour l'incident vers le poste Netskope est activée.
- En raison du comportement actuel de Cloud Exchange, si vous synchronisez manuellement les files d'attente de Ticket Orchestrator, vous pouvez rencontrer des problèmes de performance lorsque le champ Assignee est sélectionné. Cela est dû au fait que des appels d'API supplémentaires sont effectués pour récupérer les utilisateurs de la plateforme afin de valider l'adresse électronique de l'utilisateur.
Limites
- Certains champs courants ne sont généralement pas autorisés à être définis lors de la création du ticket via l'API afin de garantir l'intégrité des données et d'éviter tout problème potentiel.
- Champs communs qui sont généralement en lecture seule ou gérés automatiquement par Jira lors de la création d'un ticket. Il peut y avoir d'autres champs qui sont définis par Jira ou qui ne sont pas autorisés à être définis lors de la création d'un ticket via les API.
En voici quelques exemples :- Statut
- Created
- Updated
- ID de la question
- Date de création
- Date de mise à jour
- Créé par
- Updated By
- Clé
- Images
- Demande de participants
- Questions liées
- Le plugin ne prend pas non plus en charge le téléchargement de fichiers via Cloud Exchange. C'est pourquoi le champ Attachement n'est pas pris en charge.
- Champs communs qui sont généralement en lecture seule ou gérés automatiquement par Jira lors de la création d'un ticket. Il peut y avoir d'autres champs qui sont définis par Jira ou qui ne sont pas autorisés à être définis lors de la création d'un ticket via les API.
- Lorsqu'un projet est supprimé, une file d'attente déjà configurée avec ce projet sera visible en tant qu'identifiant.



