Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Bearer token based authentication in JIRA-Python API

abhay October 9, 2024

I am trying to use jira python library to initialise JIRA object using bearer token based authentication. I didn't find anything in the documentation.

2 answers

1 accepted

0 votes
Answer accepted
Evgenii
Community Champion
October 9, 2024

Hi, @abhay 

Welcome to Atlassian Community!

In my python script, when I connect to Jira, I use next code:

# Load environment variables from .env file
jira_base_url = config("JIRA_BASE_URL")
jira_api_token = config("JIRA_API_TOKEN")
jira_api_email = config("JIRA_API_EMAIL")

# Jira API endpoint for searching issues
jira_api_url = f"{jira_base_url}/rest/api/3/search"
base64_credentials = base64.b64encode(
f"{jira_api_email}:{jira_api_token}".encode()
).decode()
headers = {
"Authorization": f"Basic {base64_credentials}",
"Content-Type": "application/json",
}


Example of function, which I use to get issues by JQL query

def get_jira_issues(query, max_results=50):
issues = []
start_at = 0

while True:
params = {
"jql": query,
"fields": ["comment"],
"startAt": start_at,
"maxResults": max_results,
}
response = requests.get(jira_api_url, headers=headers, params=params)

if response.status_code == 200:
data = response.json()
issues.extend(data["issues"])

# Check if there are more issues to fetch
total = data["total"]
start_at += max_results
if start_at >= total:
break
else:
logger.error(f"Error fetching Jira issues: {response.text}")
raise Exception(f"Error fetching Jira issues: {response.text}")

return issues 
Evgenii
Community Champion
October 29, 2024

As an alternative variant you can use python library to work with Jira

It's  atlassian-python-api library, that can work with different products
https://atlassian-python-api.readthedocs.io/

 

from atlassian import Jira

jira = Jira(url = "https://jira_url/", token = jira_token)

 

Like abhay likes this
abhay October 29, 2024

Thanks

Like Evgenii likes this
0 votes
abhay October 29, 2024 edited

Hey @Evgenii thanks for the reply
So you are using the requests library directly. I was asking with respect to jira pypi library in particular. Although I found a way to do it:

headers = {{
    "Accept": "application/json",
"Authorization": f'Bearer {{auth["accessToken"]}}',
}}

jira = JIRA(
server=auth["url"],
options={{'server': auth["url"]}}
)

jira._session.headers.update(headers)

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
CLOUD
TAGS
atlassian, jira cloud certification, managing jira projects, jira project administration, jira cloud exam, atlassian certification, agile project management, jira workflows, jira permissions, jira training, jira cloud skills, atlassian learning

Become a Certified Jira Service Project Expert 🦸🏻‍♂️

Validate your expertise in managing Jira Service Projects for Cloud. Master configuration, optimize workflows, and manage users seamlessly. Earn global 🗺️ recognition and advance your career as a trusted Jira Service management expert.

Get Certified! ✍️
AUG Leaders

Atlassian Community Events