Skip to content

GET events API #1362

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
juandspy opened this issue Mar 7, 2022 · 6 comments
Closed

GET events API #1362

juandspy opened this issue Mar 7, 2022 · 6 comments

Comments

@juandspy
Copy link

juandspy commented Mar 7, 2022

Version

9.1.2

Steps to Reproduce

I've tried to download all the events belonging to an issue (~15K) and I was only able to get a 10% of those. I followed the documentation about pagination and built this code:

import os
import requests

SENTRY_URL = "{PLACE YOUR URL HERE}"
API_KEY = os.getenv("SENTRY_API_KEY")
FIELDNAMES = [
    'message',
    'id',
    'tags',
    'dateCreated', 'dateReceived',
    'entries',
]

def download_events(issue_id: str):
    url = f'{SENTRY_URL}/api/0/issues/{issue_id}/events/'

    events = []
    while True:
        response = requests.get(
            url,
            headers={'Authorization': 'Bearer {TOKEN}'.format(TOKEN=API_KEY)}
        )
        data = response.json()
        events.extend(data)
        link = response.links

        if len(data) == 0:
            print("Empty respose from", url)
            break
        else:
            print("Last event date: {0}".format(data[-1]['dateCreated']))
        
        if link["next"]["results"]:
            url = link["next"]['url']
        else:
            print("Next response will be empty")
            break
    print(len(events))    # This should print something ~15K
    return events


if __name__ == '__main__':
    events = download_events("1601149")

It should print something close to 15K, but I'm getting just 1750 events.

Some logging about what's happening in the script
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641584461:0:0
      rel    : next
      results: true
      cursor : 1646641584461:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641761726:0:1
      rel    : previous
      results: false
      cursor : 1646641761726:0:1
Last event date: 2022-03-07T08:26:24.494Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641584461:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641564851:0:0
      rel    : next
      results: true
      cursor : 1646641564851:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641584461:0:1
      rel    : previous
      results: true
      cursor : 1646641584461:0:1
Last event date: 2022-03-07T08:26:05.025Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641564851:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641387982:0:0
      rel    : next
      results: true
      cursor : 1646641387982:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641564851:0:1
      rel    : previous
      results: true
      cursor : 1646641564851:0:1
Last event date: 2022-03-07T08:23:08.052Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641387982:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641203212:0:0
      rel    : next
      results: true
      cursor : 1646641203212:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641387982:0:1
      rel    : previous
      results: true
      cursor : 1646641387982:0:1
Last event date: 2022-03-07T08:20:03.247Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641203212:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641076479:0:0
      rel    : next
      results: true
      cursor : 1646641076479:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641203212:0:1
      rel    : previous
      results: true
      cursor : 1646641203212:0:1
Last event date: 2022-03-07T08:17:56.549Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641076479:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640950325:0:0
      rel    : next
      results: true
      cursor : 1646640950325:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646641076479:0:1
      rel    : previous
      results: true
      cursor : 1646641076479:0:1
Last event date: 2022-03-07T08:15:50.345Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640950325:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640757728:0:0
      rel    : next
      results: true
      cursor : 1646640757728:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640950325:0:1
      rel    : previous
      results: true
      cursor : 1646640950325:0:1
Last event date: 2022-03-07T08:12:37.754Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640757728:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640686994:0:0
      rel    : next
      results: true
      cursor : 1646640686994:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640757728:0:1
      rel    : previous
      results: true
      cursor : 1646640757728:0:1
Last event date: 2022-03-07T08:11:27.025Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640686994:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640594029:0:0
      rel    : next
      results: true
      cursor : 1646640594029:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640686994:0:1
      rel    : previous
      results: true
      cursor : 1646640686994:0:1
Last event date: 2022-03-07T08:09:54.092Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640594029:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640429428:0:0
      rel    : next
      results: true
      cursor : 1646640429428:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640594029:0:1
      rel    : previous
      results: true
      cursor : 1646640594029:0:1
Last event date: 2022-03-07T08:07:09.450Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640429428:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640305393:0:0
      rel    : next
      results: true
      cursor : 1646640305393:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640429428:0:1
      rel    : previous
      results: true
      cursor : 1646640429428:0:1
Last event date: 2022-03-07T08:05:05.651Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640305393:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640249354:0:0
      rel    : next
      results: true
      cursor : 1646640249354:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640305393:0:1
      rel    : previous
      results: true
      cursor : 1646640305393:0:1
Last event date: 2022-03-07T08:04:09.590Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640249354:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640228650:0:0
      rel    : next
      results: true
      cursor : 1646640228650:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640249354:0:1
      rel    : previous
      results: true
      cursor : 1646640249354:0:1
Last event date: 2022-03-07T08:03:48.689Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640228650:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640216955:0:0
      rel    : next
      results: true
      cursor : 1646640216955:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640228650:0:1
      rel    : previous
      results: true
      cursor : 1646640228650:0:1
Last event date: 2022-03-07T08:03:36.989Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640216955:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640195353:0:0
      rel    : next
      results: true
      cursor : 1646640195353:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640216955:0:1
      rel    : previous
      results: true
      cursor : 1646640216955:0:1
Last event date: 2022-03-07T08:03:15.395Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640195353:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640171253:0:0
      rel    : next
      results: true
      cursor : 1646640171253:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640195353:0:1
      rel    : previous
      results: true
      cursor : 1646640195353:0:1
Last event date: 2022-03-07T08:02:51.450Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640171253:0:0
Response:
    length data : 100
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646615227093:0:0
      rel    : next
      results: true
      cursor : 1646615227093:0:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646640171253:0:1
      rel    : previous
      results: true
      cursor : 1646640171253:0:1
Last event date: 2022-03-07T01:08:21.244Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646615227093:0:0
Response:
    length data : 50
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646598911629:1:0
      rel    : next
      results: false
      cursor : 1646598911629:1:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646615227093:0:1
      rel    : previous
      results: true
      cursor : 1646615227093:0:1
Last event date: 2022-03-06T20:35:11.629Z
--------------------
GET {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646598911629:1:0
Response:
    length data : 0
    next headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646598911629:1:0
      rel    : next
      results: false
      cursor : 1646598911629:1:0
    previous headers:
      url    : {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=0:0:1
      rel    : previous
      results: true
      cursor : 0:0:1
Empty respose from {SENTRY_SELF_HOSTED_URL}/api/0/issues/{ISSUE_ID}/events/?&cursor=1646598911629:1:0


TOTAL_LENGTH: 1750

The cursor never moves to 100:0 or something like that. It stays in 0:0, 0:1 or 1:0.

Expected Result

I'm expecting the whole bunch of events instead of just a portion.

Actual Result

Just a subset of the events.

@chadwhitacre
Copy link
Member

Are you sure the pagination docs apply to such an old version as 9.1.2? Maybe we have pagination bugs in 9 that were fixed later? 🤔

@chadwhitacre
Copy link
Member

(Note to self: this made me think of #1252 but seems unrelated.)

@juandspy
Copy link
Author

juandspy commented Mar 8, 2022

@chadwhitacre I'm not sure. How can I check that? I think the published documentation is just for the last version.

@aminvakil
Copy link
Collaborator

@juandspy Maybe check https://github.com/getsentry/sentry-docs/commits/master/src/api/pagination.mdx ?

First commit is after 9.1.2 has been released though, can you upgrade to recent versions?

@juandspy
Copy link
Author

juandspy commented Mar 8, 2022

@juandspy Maybe check https://github.com/getsentry/sentry-docs/commits/master/src/api/pagination.mdx ?

First commit is after 9.1.2 has been released though, can you upgrade to recent versions?

I'm afraid this is not hosted by me or my team directly, so I don't think so. Thanks for the answer. I'll find another workaround!

@juandspy juandspy closed this as completed Mar 8, 2022
@chadwhitacre
Copy link
Member

Good luck @juandspy! :)

@github-actions github-actions bot locked and limited conversation to collaborators Mar 30, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants