Creates an issue or a sub-task from a JSON representation.
curl -X POST --user jira@example.com:JIRA_API_TOKEN \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '
{
"fields": {
"project": {
"id": "10000"
},
"summary": "something is wrong",
"issuetype": {
"id": "10000"
},
"assignee": {
"name": "matt"
},
"priority": {
"id": "3"
},
"labels": [
"bugfix",
"blitz_test"
],
"description": "description",
"fixVersions": [
{
"id": "10001"
}
],
"customfield_10005": "blah blah"
}
}' \
--url 'https://your-domain.atlassian.net/rest/api/2/issue'
var
rest: TChilkatRest;
success: Integer;
bTls: Integer;
port: Integer;
bAutoReconnect: Integer;
json: TChilkatJsonObject;
sbRequestBody: TChilkatStringBuilder;
sbResponseBody: TChilkatStringBuilder;
respStatusCode: Integer;
jsonResponse: TChilkatJsonObject;
id: WideString;
key: WideString;
self: WideString;
begin
rest := TChilkatRest.Create(Self);
// URL: https://your-domain.atlassian.net/rest/api/2/issue
bTls := 1;
port := 443;
bAutoReconnect := 1;
success := rest.Connect('your-domain.atlassian.net',port,bTls,bAutoReconnect);
if (success <> 1) then
begin
Memo1.Lines.Add('ConnectFailReason: ' + IntToStr(rest.ConnectFailReason));
Memo1.Lines.Add(rest.LastErrorText);
Exit;
end;
rest.SetAuthBasic('jira@example.com','JIRA_API_TOKEN');
json := TChilkatJsonObject.Create(Self);
json.UpdateString('fields.project.id','10000');
json.UpdateString('fields.summary','something is wrong');
json.UpdateString('fields.issuetype.id','10000');
json.UpdateString('fields.assignee.name','matt');
json.UpdateString('fields.priority.id','3');
json.UpdateString('fields.labels[0]','bugfix');
json.UpdateString('fields.labels[1]','blitz_test');
json.UpdateString('fields.description','description');
json.UpdateString('fields.fixVersions[0].id','10001');
json.UpdateString('fields.customfield_10005','blah blah');
rest.AddHeader('Content-Type','application/json');
rest.AddHeader('Accept','application/json');
sbRequestBody := TChilkatStringBuilder.Create(Self);
json.EmitSb(sbRequestBody.ControlInterface);
sbResponseBody := TChilkatStringBuilder.Create(Self);
success := rest.FullRequestSb('POST','/rest/api/2/issue',sbRequestBody.ControlInterface,sbResponseBody.ControlInterface);
if (success <> 1) then
begin
Memo1.Lines.Add(rest.LastErrorText);
Exit;
end;
respStatusCode := rest.ResponseStatusCode;
if (respStatusCode >= 400) then
begin
Memo1.Lines.Add('Response Status Code = ' + IntToStr(respStatusCode));
Memo1.Lines.Add('Response Header:');
Memo1.Lines.Add(rest.ResponseHeader);
Memo1.Lines.Add('Response Body:');
Memo1.Lines.Add(sbResponseBody.GetAsString());
Exit;
end;
jsonResponse := TChilkatJsonObject.Create(Self);
jsonResponse.LoadSb(sbResponseBody.ControlInterface);
id := jsonResponse.StringOf('id');
key := jsonResponse.StringOf('key');
self := jsonResponse.StringOf('self');
{
"id": "10023",
"key": "SCRUM-24",
"self": "https://chilkat.atlassian.net/rest/api/2/issue/10023"
}