singer-io / singer-io/tap-github
Stitch - Projects (classic) has been deprecated in favor of the new Projects experience
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 76
- Forks
- 86
- PR merge metrics
- No merged PRs in 30d
Description
Our Stitch integration has been failing due to Github sunsetted the projects api. However, in our company, we don't use projects. Is it possible to bypass this as a short term fix?
HTTP-error-code: 410, Error: {'message': 'Projects (classic) has been deprecated in favor of the new Projects experience.', 'documentation_url': 'https://docs.github.com/en/issues/planning-and-tracking-with-projects/automating-your-project/using-the-api-to-manage-projects', 'status': '410'}
Here's the log around the error:
2025-04-11 23:06:08,265Z tap - INFO HTTP request to "issues" endpoint took 0.110s, returned status code 200
2025-04-11 23:06:08,266Z tap - INFO replicated 0 records from "issues" endpoint
2025-04-11 23:06:08,268Z tap - INFO Final url is: https://api.github.com/repos/tenantopia/shrike/projects?state=all
2025-04-11 23:06:08,271Z main - INFO State update: adding currently_syncing = null
2025-04-11 23:06:08,331Z tap - INFO METRIC Point(metric_type='timer', metric='http_request_duration', value=0.0616912841796875, tags={'endpoint': 'projects', 'status': 'failed'})
2025-04-11 23:06:08,331Z tap - INFO replicated 0 records from "projects" endpoint
2025-04-11 23:06:08,331Z tap - CRITICAL HTTP-error-code: 410, Error: {'message': 'Projects (classic) has been deprecated in favor of the new Projects experience.', 'documentation_url': 'https://docs.github.com/en/issues/planning-and-tracking-with-projects/automating-your-project/using-the-api-to-manage-projects', 'status': '410'}
2025-04-11 23:06:08,331Z tap - Traceback (most recent call last):
2025-04-11 23:06:08,331Z tap - File "/code/orchestrator/tap-env/bin/tap-github", line 8, in <module>
2025-04-11 23:06:08,331Z tap - sys.exit(main())
2025-04-11 23:06:08,331Z tap - File "/code/orchestrator/tap-env/lib/python3.9/site-packages/singer/utils.py", line 229, in wrapped
2025-04-11 23:06:08,331Z tap - return fnc(*args, **kwargs)
2025-04-11 23:06:08,331Z tap - File "/code/orchestrator/tap-env/lib/python3.9/site-packages/tap_github/__init__.py", line 39, in main
2025-04-11 23:06:08,331Z tap - _sync(client, config, state, catalog)
2025-04-11 23:06:08,331Z tap - File "/code/orchestrator/tap-env/lib/python3.9/site-packages/tap_github/sync.py", line 209, in sync
2025-04-11 23:06:08,331Z tap - do_sync(catalog, streams_to_sync_for_repos, selected_stream_ids, client, start_date, state, repo)
2025-04-11 23:06:08,331Z tap - File "/code/orchestrator/tap-env/lib/python3.9/site-packages/tap_github/sync.py", line 231, in do_sync
2025-04-11 23:06:08,331Z tap - state = stream_obj.sync_endpoint(client = client,
2025-04-11 23:06:08,331Z tap - File "/code/orchestrator/tap-env/lib/python3.9/site-packages/tap_github/streams.py", line 297, in sync_endpoint
2025-04-11 23:06:08,331Z tap - for response in client.authed_get_all_pages(
2025-04-11 23:06:08,331Z tap - File "/code/orchestrator/tap-env/lib/python3.9/site-packages/tap_github/client.py", line 227, in authed_get_all_pages
2025-04-11 23:06:08,331Z tap - r = self.authed_get(source, url, headers, stream, should_skip_404)
2025-04-11 23:06:08,331Z tap - File "/code/orchestrator/tap-env/lib/python3.9/site-packages/backoff/_sync.py", line 94, in retry
2025-04-11 23:06:08,331Z tap - ret = target(*args, **kwargs)
2025-04-11 23:06:08,331Z tap - File "/code/orchestrator/tap-env/lib/python3.9/site-packages/tap_github/client.py", line 211, in authed_get
2025-04-11 23:06:08,331Z tap - raise_for_error(resp, source, stream, self, should_skip_404)
2025-04-11 23:06:08,331Z tap - File "/code/orchestrator/tap-env/lib/python3.9/site-packages/tap_github/client.py", line 129, in raise_for_error
2025-04-11 23:06:08,331Z tap - raise exc(message) from None
2025-04-11 23:06:08,331Z tap - tap_github.client.GithubException: HTTP-error-code: 410, Error: {'message': 'Projects (classic) has been deprecated in favor of the new Projects experience.', 'documentation_url': 'https://docs.github.com/en/issues/planning-and-tracking-with-projects/automating-your-project/using-the-api-to-manage-projects', 'status': '410'}
2025-04-11 23:06:08,356Z main - INFO State update: changing currently_syncing from null to "projects"
2025-04-11 23:06:08,356Z target - INFO Requests complete, stopping loop
2025-04-11 23:06:08,394Z main - INFO Target exited normally with status 0
2025-04-11 23:06:08,397Z main - INFO No tunnel subprocess to tear down
2025-04-11 23:06:08,397Z main - INFO Exit status is: Discovery succeeded. Tap failed with code 1 and error message: "HTTP-error-code: 410, Error: {'message': 'Projects (classic) has been deprecated in favor of the new Projects experience.', 'documentation_url': 'https://docs.github.com/en/issues/planning-and-tracking-with-projects/automating-your-project/using-the-api-to-manage-projects', 'status': '410'}". Target succeeded.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the projects stream in tap_github/streams.py and trace its request through tap_github/client.py, especially raise_for_error and authed_get. Reproduce the 410 response from the projects endpoint, then verify the tap completes without failing when that endpoint is unavailable and other streams continue to sync.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github, python
- Domain
- api
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100