简体   繁体   中英

Creating the issue with assigning the customer as the reporter with Jira API?

I would like to create new customer if it does not exist and create new issue setting this customer as reporter in PHP with Jira API.

I create new customer using API 'servicedeskapi/customer' with POST fields 'fullName' and 'email' and then I create new issue using API 'api/2/issue' with parameters 'fullName' and 'email' of parameter 'reporter'.

I am trying do this in this way:

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_USERPWD, 'user:password');

$postvars = array('fields' => array('project' => array('key' => 'AP'), 'summary' => $body, 'description' => $body, 'reporter' => null));

$postvars['fields']['issuetype'] = array("id" => '10108');
$postvars['fields']['reporter']['fullName'] = $name; //POST field of customer's name to set customer as the reporter of new issue
$postvars['fields']['reporter']['email'] = $email; //POST field of customer's email address to set customer as the reporter of new issue

curl_setopt($ch, CURLOPT_URL, 'https://jira-address/rest/servicedeskapi/customer');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-Type: application/json', 'X-ExperimentalApi: opt-in'));
curl_setopt($ch, CURLOPT_POSTFIELDS,
json_encode(array('fullName' => $reporterName, 'email' => $email))); //POST fields for creating new customer
$r = curl_exec($ch); //sending request for creating new customer
echo json_encode(json_decode($r), JSON_PRETTY_PRINT); //printing response of request for creating new customer

curl_setopt($ch, CURLOPT_URL, 'https://jira-address/rest/api/2/issue/');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postvars));
$r = curl_exec($ch); //sending request for creating new issue
echo json_encode($postvars, JSON_PRETTY_PRINT); //printing POST fields of the request of creating new issue
echo json_encode(json_decode($r), JSON_PRETTY_PRINT); //printing the response of the request for creating new issue

If the customer does not exist, the response is:

{
    "name": "kamilszmit2@live.com",
    "key": "kamilszmit2@live.com",
    "emailAddress": "kamilszmit2@live.com",
    "displayName": "kamilszmit2",
    "active": true,
    "timeZone": "Europe\/Warsaw",
    "_links": {
        "jiraRest": "https:\/\/jira-address\/rest\/api\/2\/user?username=kamilszmit2%40live.com",
        "avatarUrls": {
            "48x48": "https:\/\/jira-address\/secure\/useravatar?avatarId=10122",
            "24x24": "https:\/\/jira-address\/secure\/useravatar?size=small&avatarId=10122",
            "16x16": "https:\/\/jira-address\/secure\/useravatar?size=xsmall&avatarId=10122",
            "32x32": "https:\/\/jira-address\/secure\/useravatar?size=medium&avatarId=10122"
        },
        "self": "https:\/\/jira-address\/rest\/api\/2\/user?username=kamilszmit2%40live.com"
    }
}{
    "fields": {
        "project": {
            "key": "AP"
        },
        "summary": "test",
        "description": "test",
        "reporter": {
            "fullName": "kamilszmit2",
            "email": "kamilszmit2@live.com"
        },
        "issuetype": {
            "id": "10108"
        }
    }
}{
    "id": "11187",
    "key": "AP-351",
    "self": "https:\/\/jira-address\/rest\/api\/2\/issue\/11187"
} 

The customer and the issue are created but the customer is not set as reporter of the issue . The same problem occurs if customer already exists and when only the parameter 'fullName' or 'email' of the parameter 'reporter' is used.

What am I doing wrong? How to create Jira issue with the customer as the reporter? Could you help me?

via REST, I have managed to set the reporter by using the name parameter, instead of fullname .

"fields": {
        "project": {
            "key": "AP"
        },
        "summary": "test",
        "description": "test",
        "reporter": {
            "name": "kamilszmit2"
        },
        "issuetype": {
            "id": "10108"
        }

Other things I would check:

  • The Reporter field is added to the Create Issue screen
  • The credentials these calls are run with, have Modify reporter project permission (You will run into 405 error if they do not have this permission)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM