Search code examples
pythonjira-rest-apipython-jira

Creating Jira issue with REST API


Having issues with trying to create an issue with Jira through the APIs, below is a sample of my code. We are using enterprise jira, I have to replace certain sections with so I hope it wont effect your ability to provide help.

from requests.auth import HTTPBasicAuth
import requests

user = '<ID>'
password = '<password>'
url = 'https://<enterprise>jira.<domain>.com/projects/<MYKEY>/rest/api/3/issue'


headers = {
    'Content-Type': 'application/json',
}

json_data = {
    
  "fields": {
    "project": {
      "key": "<MYKEY>"
    },
    "summary": "Creating From Collection",
    "description": {
      "type": "doc",
      "version": 1,
      "content": [
        {
          "type": "paragraph",
          "content": [
            {
              "type": "text",
              "text": "This is an autogenerated issue from a demo."
            }
          ]
        }
      ]
    },
    "issuetype": {
      "name": "Task"
    }
  }

}

response = requests.post(
    url,
    headers=headers,
    json=json_data,
    verify=False,
    auth=(user, password),
)

I get error code 405 and the following message when running print(response.text): <!doctype html>HTTP Status 405 – Method Not Allowedbody {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}

HTTP Status 405 – Method Not Allowed

Type Status Report

Message HTTP method POST is not supported by this URL

Description The method received in the request-line is known by the origin server but not supported by the target resource.

Apache Tomcat/8.5.78

Im sure I'm doing something wrong so any help will be appreciated.

Also I have verified I have the right access by manually going to the project and creating an issue.


Solution

  • Your URL is wrong. For creating a Jira issue you want to use the create issue endpoint.

    For server/datacenter:

    url = 'https://<enterprise>jira.<domain>.com/rest/api/2/issue'

    For cloud:

    url = 'https://<enterprise>jira.<domain>.com/rest/api/3/issue'

    You need to use a POST request to either of these endpoints.