55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
import requests
|
|
from requests.auth import HTTPBasicAuth
|
|
|
|
# --- CONFIGURATION ---
|
|
JIRA_DOMAIN = "flowbird.atlassian.net"
|
|
EMAIL = "david.rice@arrive.com"
|
|
API_TOKEN = "ATATT3xFfGF0qWIGGGsvwb0oBnekYh88S8jr8XKbwvRkaoFWwq7cPGS2S5gzZkG-o_JXoDuYR5hOSGiL4GIj5XfTfm05mq313yxmkr8DZqVXDdbgwt8HNcxjLPmcWi9cQDy9wJ-Rc17uXIToYZSvZBCHyWiNZQhh5WlTkTwl0yjgGd-x_F-tOn8=F97E27B2"
|
|
BOARD_ID = 3417 # Replace with your board ID
|
|
|
|
auth = HTTPBasicAuth(EMAIL, API_TOKEN)
|
|
headers = {"Accept": "application/json"}
|
|
# --- Get All Sprints for the Board ---
|
|
sprints_url = f"https://{JIRA_DOMAIN}/rest/agile/1.0/board/{BOARD_ID}/sprint"
|
|
sprints = []
|
|
start_at = 0
|
|
max_results = 50
|
|
|
|
while True:
|
|
params = {"startAt": start_at, "maxResults": max_results}
|
|
resp = requests.get(sprints_url, headers=headers, auth=auth, params=params)
|
|
resp.raise_for_status()
|
|
data = resp.json()
|
|
sprints.extend(data.get("values", []))
|
|
|
|
if data["isLast"]:
|
|
break
|
|
|
|
start_at += max_results
|
|
|
|
print(f"Found {len(sprints)} sprints.")
|
|
|
|
# --- Loop Through Each Sprint and Get Issues ---
|
|
for sprint in sprints:
|
|
sprint_id = sprint["id"]
|
|
sprint_name = sprint["name"]
|
|
print(f"\nSprint: {sprint_name} (ID: {sprint_id})")
|
|
issues_url = f"https://{JIRA_DOMAIN}/rest/agile/1.0/sprint/{sprint_id}/issue"
|
|
start_at_issues = 0
|
|
|
|
while True:
|
|
params = {"startAt": start_at_issues, "maxResults": max_results}
|
|
issues_resp = requests.get(issues_url, headers=headers, auth=auth, params=params)
|
|
issues_resp.raise_for_status()
|
|
issues_data = issues_resp.json()
|
|
issues = issues_data.get("issues", [])
|
|
|
|
for issue in issues:
|
|
key = issue["key"]
|
|
summary = issue["fields"]["summary"]
|
|
print(f" {key}: {summary}")
|
|
|
|
if start_at_issues + max_results >= issues_data["total"]:
|
|
break
|
|
|
|
start_at_issues += max_results |