Skip to content

Instantly share code, notes, and snippets.

@gdvalderrama
Last active February 14, 2021 11:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gdvalderrama/d5d5f3fed9f49d42a5b4ac01b00d03f8 to your computer and use it in GitHub Desktop.
Save gdvalderrama/d5d5f3fed9f49d42a5b4ac01b00d03f8 to your computer and use it in GitHub Desktop.
Request sentry issue events and save them to a CSV file
'''
Use: `python get_sentry_issue_events.py <sentry_token> <issue_id>`
Gets all events of an issue and saves them to a CSV.
The token can be generated at https://sentry.io/api/
Only the event:read permission is needed.
'''
import csv
import io
import sys
import requests
def get_and_write_events(writer, url, headers):
events, link = get_sentry_event_issues(url, headers)
write_events_to_csv(writer, events)
if 'results="true"' in link.split(',')[1]:
next_url = link.split(',')[1].split('>')[0].replace('<', '').strip()
get_and_write_events(writer, next_url, headers)
def get_sentry_event_issues(url, headers):
r = requests.get(url, headers=headers)
events = r.json()
link = r.headers.get('Link')
return (events, link)
def write_events_to_csv(writer, events):
writer.writerow([k for k in list(events[0])])
for event in events:
row = []
for k in list(event):
row.append(event.get(k))
writer.writerow(row)
if __name__ == '__main__':
headers = {'Content-Type': 'application/json', 'Authorization': 'Bearer {}'.format(sys.argv[1])}
with io.open('sentry_events_{}'.format(sys.argv[2]), 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f, delimiter=';', quoting=csv.QUOTE_MINIMAL)
url = 'https://app.getsentry.com/api/0/issues/{}/events/?full=true'.format(sys.argv[2])
get_and_write_events(writer, url, headers)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment