YaTracker
Asyncio Yandex Tracker API client
Documentation: https://olegt0rr.github.io/YaTracker/
API docs: https://yandex.cloud/en/docs/tracker/about-api
Features
- Fully asynchronous, built on
aiohttp— no blocking calls, no threads. - Responses are parsed into
pydanticv2 models, withdatetimefields already converted. - Typed end to end:
@overloads keep your own issue/queue models flowing through the return types. - Supports both Yandex 360 (
X-Org-ID+ OAuth) and Yandex Cloud (X-Cloud-Org-ID+ IAM) organizations. - Covers issues, queues, components, projects (both the legacy
/projectsAPI and the entities API behind projects, portfolios and goals), macros, boards (including columns and sprints), comments, checklists, worklogs, attachments, priorities, bulk changes, external applications and remote links, and import of issues, comments, links and attachments. - Local (custom) queue fields are supported via your own model subclasses.
- Pluggable transport: swap
aiohttpfor any client by subclassingBaseClient.
Attention!
- All
selfproperties are renamed tourl, becauseselfis a reserved name in Python. Aurl=keyword argument is sent to the API asurl; models embedded in a request body keep the API'sselfkey. - All
camelCaseproperties are renamed topythonic_case. - All datetime values are converted to Python
datetime.datetimeobjects. - Methods are named by the author, because the Yandex API has no clear method names.
How to install
pip install yatracker
How to use
from yatracker import YaTracker
tracker = YaTracker(org_id=..., token=...)
async def foo():
# create an issue
issue = await tracker.create_issue("New Issue", "KEY")
# get an issue
issue = await tracker.get_issue("KEY-1")
# update an issue (just pass kwargs)
issue = await tracker.edit_issue("KEY-1", description="Hello World")
# get transitions (a dict keyed by transition id)
transitions = await issue.get_transitions()
# execute a transition
close = transitions.get("close")
if close is not None:
await close.execute()
# don't forget to close tracker on app shutdown
async def on_shutdown():
await tracker.close()
YaTracker is also an async context manager, which closes the session for you:
async with YaTracker(org_id=..., token=...) as tracker:
issue = await tracker.get_issue("KEY-1")
Organizations and tokens
Pass exactly one organization id and exactly one token.
# Yandex 360 organization (sends `X-Org-ID`) with an OAuth token
tracker = YaTracker(org_id=..., token=...)
# Yandex Cloud organization (sends `X-Cloud-Org-ID`) with an IAM token
tracker = YaTracker(cloud_org_id=..., iam_token=...)
org_id and cloud_org_id are mutually exclusive, so are token and
iam_token. API v3 is used by default, v2 is still available via
YaTracker(..., api_version="v2").
Error handling
Every response with a status of 300 or above is raised as a YaTrackerError
subclass:
from yatracker.exceptions import ObjectNotFoundError, YaTrackerError
try:
issue = await tracker.get_issue("KEY-1")
except ObjectNotFoundError:
... # 404: wrong id or key
except YaTrackerError as e:
... # anything else the API rejected
NotAuthorizedError (401), SufficientRightsError (403),
ObjectNotFoundError (404) and AlreadyExistsError (409) are the
specialised cases; any other status raises the base YaTrackerError with
the response body as its message.
See the error handling guide for details.
More
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yatracker-2026.9.0.tar.gz.
File metadata
- Download URL: yatracker-2026.9.0.tar.gz
- Upload date:
- Size: 148.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23bbcebbfad6cebbfe6d675816905333d7ff1b3866f39a3b109e80490675d358
|
|
| MD5 |
9ba794a3425d09e9bf2bef366a2d847c
|
|
| BLAKE2b-256 |
a636ffb4898c3dfc3361f86599ed8f9b04160bd78e8b44772ee057fda752eb61
|
Provenance
The following attestation bundles were made for yatracker-2026.9.0.tar.gz:
Publisher:
publish.yml on Olegt0rr/YaTracker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yatracker-2026.9.0.tar.gz -
Subject digest:
23bbcebbfad6cebbfe6d675816905333d7ff1b3866f39a3b109e80490675d358 - Sigstore transparency entry: 2690801529
- Sigstore integration time:
-
Permalink:
Olegt0rr/YaTracker@c4473cb1405e17e2f809fa00a7510197984cab16 -
Branch / Tag:
refs/tags/v2026.9.0 - Owner: https://github.com/Olegt0rr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c4473cb1405e17e2f809fa00a7510197984cab16 -
Trigger Event:
push
-
Statement type:
File details
Details for the file yatracker-2026.9.0-py3-none-any.whl.
File metadata
- Download URL: yatracker-2026.9.0-py3-none-any.whl
- Upload date:
- Size: 75.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65c1c063cbf9877abbe3eaa16de454fa605605d6370441685c0317127600a4c9
|
|
| MD5 |
d32a80d6860c5833578ceccc15667b9c
|
|
| BLAKE2b-256 |
bb1eb291aed00711160a0ac39098581afb4e0c05b78e1249d2b03482c754e358
|
Provenance
The following attestation bundles were made for yatracker-2026.9.0-py3-none-any.whl:
Publisher:
publish.yml on Olegt0rr/YaTracker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yatracker-2026.9.0-py3-none-any.whl -
Subject digest:
65c1c063cbf9877abbe3eaa16de454fa605605d6370441685c0317127600a4c9 - Sigstore transparency entry: 2690801600
- Sigstore integration time:
-
Permalink:
Olegt0rr/YaTracker@c4473cb1405e17e2f809fa00a7510197984cab16 -
Branch / Tag:
refs/tags/v2026.9.0 - Owner: https://github.com/Olegt0rr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c4473cb1405e17e2f809fa00a7510197984cab16 -
Trigger Event:
push
-
Statement type: