-
Notifications
You must be signed in to change notification settings - Fork 19
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
Add "Create API Token" and "Delete API Token" calls #148
Open
WRansohoff
wants to merge
18
commits into
axiomhq:main
Choose a base branch
from
memfault:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
fb8ec94
Initial dataclasses for POST /tokens attributes
WRansohoff 62bb76f
Initial API calls - enough to test with, but they need error handling…
WRansohoff b1c783d
Update 'create API token' call to use optional parameters.
WRansohoff fc3db9b
Dataclass for returning API token response data.
WRansohoff 1a1d22d
Add a test, add token dataclasses to __init__, make permission types …
WRansohoff c9dcb38
Add trailing newline to __init__.py
WRansohoff 079f096
Merge pull request #1 from memfault/api_tokens
WRansohoff 7eeb14f
Address merge conflicts between API token methods and the upstream br…
WRansohoff 1196706
Linting
WRansohoff eee0e09
Lint API token dataclass properties
WRansohoff abfa59c
poetry black reformat
WRansohoff b7ed013
More API token dataclass linting.
WRansohoff 45ca752
Merge pull request #3 from memfault/sync_fork_v050
WRansohoff e6ae982
Merge from upstream, resolve conflicts
WRansohoff 4e6846c
Update imports to account for new structure
WRansohoff 36946ee
Lint tokens file
WRansohoff 7bfffa5
Merge pull request #4 from memfault/willr/axiom_py_080_update
WRansohoff 1e14877
Resolve merge conflicts
WRansohoff File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,121 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
from dataclasses import dataclass, field | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
from typing import Literal, Optional | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@dataclass | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
class TokenDatasetCapabilities: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# pylint: disable=unsubscriptable-object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TokenDatasetCapabilities describes the dataset-level permissions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
which a token can be assigned. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Each token can have multiple dataset-level capability objects; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
one per dataset. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to ingest data. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ingest: Optional[list[Literal["create"]]] = field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to query data. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
query: Optional[list[Literal["read"]]] = field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use starred queries. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
starredQueries: Optional[ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
list[Literal["create", "read", "update", "delete"]] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
] = field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use virtual fields. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
virtualFields: Optional[ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
list[Literal["create", "read", "update", "delete"]] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
] = field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+15
to
+26
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is missing data, trim and vacuum:
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@dataclass | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
class TokenOrganizationCapabilities: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# pylint: disable=unsubscriptable-object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TokenOrganizationCapabilities describes the org-level permissions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
which a token can be assigned. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use annotations. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
annotations: Optional[ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
list[Literal["create", "read", "update", "delete"]] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
] = field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use api tokens. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
apiTokens: Optional[ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
list[Literal["create", "read", "update", "delete"]] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
] = field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to access billing. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Missing audit log:
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
billing: Optional[list[Literal["read", "update"]]] = field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use dashboards. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dashboards: Optional[ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
list[Literal["create", "read", "update", "delete"]] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
] = field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use datasets. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
datasets: Optional[list[Literal["create", "read", "update", "delete"]]] = ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use endpoints. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
endpoints: Optional[ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
list[Literal["create", "read", "update", "delete"]] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
] = field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use flows. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
flows: Optional[list[Literal["create", "read", "update", "delete"]]] = ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use integrations. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
integrations: Optional[ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
list[Literal["create", "read", "update", "delete"]] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
] = field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use monitors. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
monitors: Optional[list[Literal["create", "read", "update", "delete"]]] = ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use notifiers. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
notifiers: Optional[ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
list[Literal["create", "read", "update", "delete"]] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
] = field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use role-based access controls. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rbac: Optional[list[Literal["create", "read", "update", "delete"]]] = ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use shared access keys. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sharedAccessKeys: Optional[list[Literal["read", "update"]]] = field( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
default=None | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Ability to use users. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
users: Optional[list[Literal["create", "read", "update", "delete"]]] = ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@dataclass | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
class TokenAttributes: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# pylint: disable=unsubscriptable-object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TokenAttributes describes the set of input parameters that the | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
POST /tokens API accepts. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Name for the token. Required. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name: str | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# The token's dataset-level capabilities. Keyed on dataset name. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
datasetCapabilities: Optional[dict[str, TokenDatasetCapabilities]] = field( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
default=None | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Description for the API token. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
description: Optional[str] = field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Expiration date for the API token. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
expiresAt: Optional[str] = field(default=None) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# The token's organization-level capabilities. Optional. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
orgCapabilities: Optional[TokenOrganizationCapabilities] = field( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
default=None | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@dataclass | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
class Token: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Token contains the response from a call to POST /tokens. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
It includes the API token itself, and an ID which can be used to reference it later. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
id: str | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
token: str |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please move this into a
TokenClient
intokens.py
, similar toaxiom-py/src/axiom_py/datasets.py
Lines 49 to 55 in c9ec206