I am trying to create an issue using service account in Jira via REST API call with code. When I run the code I am getting below error:
{\"summary\":\"Field 'summary' cannot be set. It is not on the appropriate screen, or unknown.\",\"description\":\"Field 'description' cannot be set. It is not on the appropriate screen, or unknown.\",\"components\":\"Field 'components' cannot be set. It is not on the appropriate screen, or unknown.\",\"customfield_11417\":\"Field 'customfield_11417' cannot be set. It is not on the appropriate screen, or unknown.\"}
static async Task generateJiraTicket()
{
string jiraUrl = "https://<jira-server-url.com>/rest/api/2/issue/";
string username = "<email>";
string apiToken = "<generated_token>";
// Create JSON payload for the new issue
string issueData = @"
{
""fields"": {
""project"": { ""key"": ""<Key>"" },
""summary"": ""Test Jira Ticket for Forms"",
""description"": ""This is a sample Jira ticket created through code."",
""issuetype"": { ""name"": ""Bug"" },
""components"": [{""name"":""Test"",""value"":""Test value""}]
},
""update"": {
""customfield_11417"": [
{
""set"": {
""value"": ""No, not required for Release Notes""
}
}
]
}
}";
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(jiraUrl);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{apiToken}")));
try
{
// Send a POST request to create the issue
HttpResponseMessage response = await client.PostAsync(jiraUrl, new StringContent(issueData, Encoding.UTF8, "application/json"));
if (response.IsSuccessStatusCode)
{
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine("Issue created successfully!");
Console.WriteLine($"Ticket URL: {response.Headers.Location}");
Console.WriteLine($"Response content: {responseBody}");
}
else
{
Console.WriteLine($"Failed to create issue. Status code: {response.StatusCode}");
string errorResponse = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Response content: {errorResponse}");
}
}catch (Exception ex)
{
Console.WriteLine($"Response content: {ex}");
}
}
}