grepvine 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- grepvine/__init__.py +65 -0
- grepvine/_client.py +159 -0
- grepvine/_generated/__init__.py +8 -0
- grepvine/_generated/api/__init__.py +1 -0
- grepvine/_generated/api/api_keys/__init__.py +1 -0
- grepvine/_generated/api/api_keys/create_api_key.py +160 -0
- grepvine/_generated/api/api_keys/list_api_keys.py +176 -0
- grepvine/_generated/api/api_keys/revoke_api_key.py +159 -0
- grepvine/_generated/api/authentication/__init__.py +1 -0
- grepvine/_generated/api/authentication/change_password.py +163 -0
- grepvine/_generated/api/authentication/check_invitation.py +177 -0
- grepvine/_generated/api/authentication/get_auth_options.py +140 -0
- grepvine/_generated/api/authentication/get_current_user.py +133 -0
- grepvine/_generated/api/authentication/get_username_availability.py +163 -0
- grepvine/_generated/api/authentication/login.py +165 -0
- grepvine/_generated/api/authentication/logout.py +126 -0
- grepvine/_generated/api/authentication/register_user.py +198 -0
- grepvine/_generated/api/device_login/__init__.py +1 -0
- grepvine/_generated/api/device_login/approve_device_authorization.py +163 -0
- grepvine/_generated/api/device_login/deny_device_authorization.py +163 -0
- grepvine/_generated/api/device_login/poll_device_token.py +165 -0
- grepvine/_generated/api/device_login/start_device_authorization.py +160 -0
- grepvine/_generated/api/indexes/__init__.py +1 -0
- grepvine/_generated/api/indexes/create_index.py +189 -0
- grepvine/_generated/api/indexes/delete_index.py +188 -0
- grepvine/_generated/api/indexes/get_index.py +190 -0
- grepvine/_generated/api/indexes/list_indexes.py +215 -0
- grepvine/_generated/api/indexes/update_index.py +227 -0
- grepvine/_generated/api/objects/__init__.py +1 -0
- grepvine/_generated/api/objects/delete_document.py +244 -0
- grepvine/_generated/api/objects/delete_objects.py +238 -0
- grepvine/_generated/api/objects/get_document.py +234 -0
- grepvine/_generated/api/objects/list_documents.py +252 -0
- grepvine/_generated/api/objects/put_document.py +285 -0
- grepvine/_generated/api/objects/put_objects.py +266 -0
- grepvine/_generated/api/organizations/__init__.py +1 -0
- grepvine/_generated/api/organizations/add_organization_member.py +184 -0
- grepvine/_generated/api/organizations/create_organization.py +165 -0
- grepvine/_generated/api/organizations/delete_organization.py +166 -0
- grepvine/_generated/api/organizations/get_organization.py +168 -0
- grepvine/_generated/api/organizations/list_organization_members.py +200 -0
- grepvine/_generated/api/organizations/list_organizations.py +176 -0
- grepvine/_generated/api/organizations/remove_organization_member.py +183 -0
- grepvine/_generated/api/organizations/transfer_organization_ownership.py +182 -0
- grepvine/_generated/api/organizations/update_organization_member.py +206 -0
- grepvine/_generated/api/resources.py +2365 -0
- grepvine/_generated/api/search/__init__.py +1 -0
- grepvine/_generated/api/search/query_index.py +242 -0
- grepvine/_generated/client.py +272 -0
- grepvine/_generated/errors.py +16 -0
- grepvine/_generated/models/__init__.py +129 -0
- grepvine/_generated/models/add_member_request.py +56 -0
- grepvine/_generated/models/add_member_request_role.py +10 -0
- grepvine/_generated/models/api_key.py +104 -0
- grepvine/_generated/models/api_key_created.py +131 -0
- grepvine/_generated/models/api_key_page.py +69 -0
- grepvine/_generated/models/auth_options.py +47 -0
- grepvine/_generated/models/change_password_request.py +51 -0
- grepvine/_generated/models/context_line.py +61 -0
- grepvine/_generated/models/create_api_key_request.py +43 -0
- grepvine/_generated/models/create_index_request.py +80 -0
- grepvine/_generated/models/create_organization_request.py +45 -0
- grepvine/_generated/models/delete_object_record.py +54 -0
- grepvine/_generated/models/delete_objects_request.py +57 -0
- grepvine/_generated/models/device_authorization.py +83 -0
- grepvine/_generated/models/device_authorization_request.py +43 -0
- grepvine/_generated/models/device_decision_request.py +43 -0
- grepvine/_generated/models/device_token_request.py +43 -0
- grepvine/_generated/models/document_page.py +79 -0
- grepvine/_generated/models/document_summary.py +92 -0
- grepvine/_generated/models/error.py +59 -0
- grepvine/_generated/models/index.py +178 -0
- grepvine/_generated/models/index_page.py +69 -0
- grepvine/_generated/models/index_state.py +11 -0
- grepvine/_generated/models/index_summary.py +149 -0
- grepvine/_generated/models/index_tag_changes.py +64 -0
- grepvine/_generated/models/index_tags.py +52 -0
- grepvine/_generated/models/invitation_check_request.py +43 -0
- grepvine/_generated/models/invitation_preview.py +83 -0
- grepvine/_generated/models/invitation_role.py +10 -0
- grepvine/_generated/models/login_request.py +51 -0
- grepvine/_generated/models/match.py +51 -0
- grepvine/_generated/models/member.py +86 -0
- grepvine/_generated/models/member_page.py +69 -0
- grepvine/_generated/models/metadata.py +194 -0
- grepvine/_generated/models/mutation_batch_result.py +57 -0
- grepvine/_generated/models/mutation_result.py +78 -0
- grepvine/_generated/models/organization.py +83 -0
- grepvine/_generated/models/organization_page.py +69 -0
- grepvine/_generated/models/pagination.py +54 -0
- grepvine/_generated/models/put_document_form.py +97 -0
- grepvine/_generated/models/put_document_if_none_match.py +8 -0
- grepvine/_generated/models/put_object_record.py +97 -0
- grepvine/_generated/models/query_page.py +69 -0
- grepvine/_generated/models/query_request.py +122 -0
- grepvine/_generated/models/query_request_mode.py +9 -0
- grepvine/_generated/models/query_result.py +202 -0
- grepvine/_generated/models/register_request.py +73 -0
- grepvine/_generated/models/role.py +11 -0
- grepvine/_generated/models/signup_mode.py +9 -0
- grepvine/_generated/models/staff_role.py +9 -0
- grepvine/_generated/models/tagged_boolean_metadata_value.py +56 -0
- grepvine/_generated/models/tagged_integer_metadata_value.py +56 -0
- grepvine/_generated/models/tagged_metadata.py +163 -0
- grepvine/_generated/models/tagged_number_metadata_value.py +56 -0
- grepvine/_generated/models/tagged_string_metadata_value.py +56 -0
- grepvine/_generated/models/tagged_timestamp_metadata_value.py +58 -0
- grepvine/_generated/models/transfer_ownership_request.py +45 -0
- grepvine/_generated/models/update_index_request.py +68 -0
- grepvine/_generated/models/update_member_request.py +46 -0
- grepvine/_generated/models/update_member_request_role.py +10 -0
- grepvine/_generated/models/user.py +92 -0
- grepvine/_generated/models/username_availability.py +53 -0
- grepvine/_generated/types.py +54 -0
- grepvine/_helpers.py +332 -0
- grepvine/_retry.py +135 -0
- grepvine/errors.py +206 -0
- grepvine/models.py +7 -0
- grepvine/py.typed +0 -0
- grepvine-0.1.0.dist-info/METADATA +464 -0
- grepvine-0.1.0.dist-info/RECORD +124 -0
- grepvine-0.1.0.dist-info/WHEEL +4 -0
- grepvine-0.1.0.dist-info/licenses/LICENSE +202 -0
- grepvine-0.1.0.dist-info/licenses/NOTICE +2 -0
grepvine/__init__.py
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"""Python SDK for the Grepvine search API."""
|
|
2
|
+
|
|
3
|
+
from importlib.metadata import version
|
|
4
|
+
|
|
5
|
+
from grepvine import models
|
|
6
|
+
from grepvine._client import *
|
|
7
|
+
from grepvine._generated.api.resources import (
|
|
8
|
+
Account,
|
|
9
|
+
APIKeys,
|
|
10
|
+
AsyncAccount,
|
|
11
|
+
AsyncAPIKeys,
|
|
12
|
+
AsyncMembers,
|
|
13
|
+
AsyncOrganizations,
|
|
14
|
+
AsyncSearch,
|
|
15
|
+
Members,
|
|
16
|
+
Organizations,
|
|
17
|
+
Search,
|
|
18
|
+
)
|
|
19
|
+
from grepvine._helpers import *
|
|
20
|
+
from grepvine._retry import RetryPolicy
|
|
21
|
+
from grepvine.errors import *
|
|
22
|
+
|
|
23
|
+
__version__ = version("grepvine")
|
|
24
|
+
__all__ = [
|
|
25
|
+
"__version__",
|
|
26
|
+
"models",
|
|
27
|
+
"paginate",
|
|
28
|
+
"Client",
|
|
29
|
+
"AsyncClient",
|
|
30
|
+
"RetryPolicy",
|
|
31
|
+
"Organizations",
|
|
32
|
+
"AsyncOrganizations",
|
|
33
|
+
"Members",
|
|
34
|
+
"AsyncMembers",
|
|
35
|
+
"Indexes",
|
|
36
|
+
"AsyncIndexes",
|
|
37
|
+
"Documents",
|
|
38
|
+
"AsyncDocuments",
|
|
39
|
+
"DocumentInput",
|
|
40
|
+
"MetadataValue",
|
|
41
|
+
"Search",
|
|
42
|
+
"AsyncSearch",
|
|
43
|
+
"APIKeys",
|
|
44
|
+
"AsyncAPIKeys",
|
|
45
|
+
"Account",
|
|
46
|
+
"AsyncAccount",
|
|
47
|
+
"DeviceLogin",
|
|
48
|
+
"AsyncDeviceLogin",
|
|
49
|
+
"GrepvineError",
|
|
50
|
+
"APIError",
|
|
51
|
+
"InvalidRequestError",
|
|
52
|
+
"InvalidPageError",
|
|
53
|
+
"AuthenticationError",
|
|
54
|
+
"PermissionDeniedError",
|
|
55
|
+
"NotFoundError",
|
|
56
|
+
"ConflictError",
|
|
57
|
+
"PreconditionFailedError",
|
|
58
|
+
"PayloadTooLargeError",
|
|
59
|
+
"RangeNotSatisfiableError",
|
|
60
|
+
"RateLimitedError",
|
|
61
|
+
"ServerError",
|
|
62
|
+
"ConfigurationError",
|
|
63
|
+
"TransportError",
|
|
64
|
+
"PartialBatchError",
|
|
65
|
+
]
|
grepvine/_client.py
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"""The synchronous and asynchronous clients."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from importlib.metadata import version
|
|
6
|
+
from typing import Any, Final, Self
|
|
7
|
+
|
|
8
|
+
import httpx
|
|
9
|
+
|
|
10
|
+
from grepvine._generated.api.resources import _GeneratedAsyncClient, _GeneratedClient
|
|
11
|
+
from grepvine._generated.client import Client as _Connection
|
|
12
|
+
from grepvine._helpers import (
|
|
13
|
+
AsyncDeviceLogin,
|
|
14
|
+
AsyncDocuments,
|
|
15
|
+
AsyncIndexes,
|
|
16
|
+
DeviceLogin,
|
|
17
|
+
Documents,
|
|
18
|
+
Indexes,
|
|
19
|
+
)
|
|
20
|
+
from grepvine._retry import AsyncRetryTransport, RetryPolicy, RetryTransport
|
|
21
|
+
from grepvine.errors import ConfigurationError, map_error
|
|
22
|
+
|
|
23
|
+
DEFAULT_ENDPOINT: Final = "https://api.grepvine.ai"
|
|
24
|
+
DEFAULT_TIMEOUT: Final = 60.0
|
|
25
|
+
__all__ = ["AsyncClient", "Client"]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _options(
|
|
29
|
+
api_key: str | None, endpoint: str, timeout: float | httpx.Timeout | None
|
|
30
|
+
) -> dict[str, Any]:
|
|
31
|
+
url = endpoint.rstrip("/")
|
|
32
|
+
if not url.startswith(("https://", "http://")):
|
|
33
|
+
raise ConfigurationError(f"the endpoint must be an http or https URL, not {endpoint!r}")
|
|
34
|
+
headers = {"User-Agent": f"grepvine-python/{version('grepvine')} httpx/{httpx.__version__}"}
|
|
35
|
+
if api_key:
|
|
36
|
+
headers["Authorization"] = f"Bearer {api_key}"
|
|
37
|
+
return {
|
|
38
|
+
"base_url": url if url.endswith("/v1") else f"{url}/v1",
|
|
39
|
+
"headers": headers,
|
|
40
|
+
"timeout": timeout,
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def _session(http: httpx.Client | httpx.AsyncClient, response: httpx.Response) -> None:
|
|
45
|
+
"""Send the CSRF token a sign-in issued with every later request; httpx keeps the cookie."""
|
|
46
|
+
if token := response.headers.get("x-csrf-token"):
|
|
47
|
+
http.headers["X-Csrf-Token"] = token
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class Client(_GeneratedClient):
|
|
51
|
+
"""A client of the Grepvine API.
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
api_key: The API key sent as a bearer token. Without one, only the
|
|
55
|
+
methods that need no credentials work, such as ``account.login``
|
|
56
|
+
and ``device_login.authorize``; after ``account.login`` the
|
|
57
|
+
client uses the signed-in session.
|
|
58
|
+
endpoint: The service URL, with or without ``/v1``.
|
|
59
|
+
timeout: Seconds, or an ``httpx.Timeout``, for each request.
|
|
60
|
+
retry: How requests are retried; see `RetryPolicy`.
|
|
61
|
+
transport: The ``httpx`` transport requests go through, for example
|
|
62
|
+
an ``httpx.MockTransport`` in tests.
|
|
63
|
+
|
|
64
|
+
Use it as a context manager, or call `close`, to release its connections.
|
|
65
|
+
`http` is the ``httpx.Client`` it sends requests with.
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
indexes: Indexes
|
|
69
|
+
documents: Documents
|
|
70
|
+
device_login: DeviceLogin
|
|
71
|
+
|
|
72
|
+
def __init__(
|
|
73
|
+
self,
|
|
74
|
+
*,
|
|
75
|
+
api_key: str | None = None,
|
|
76
|
+
endpoint: str = DEFAULT_ENDPOINT,
|
|
77
|
+
timeout: float | httpx.Timeout | None = DEFAULT_TIMEOUT,
|
|
78
|
+
retry: RetryPolicy | None = None,
|
|
79
|
+
transport: httpx.BaseTransport | None = None,
|
|
80
|
+
) -> None:
|
|
81
|
+
options = _options(api_key, endpoint, timeout)
|
|
82
|
+
inner = transport or httpx.HTTPTransport()
|
|
83
|
+
self.http = httpx.Client(
|
|
84
|
+
**options,
|
|
85
|
+
transport=RetryTransport(inner, retry or RetryPolicy()),
|
|
86
|
+
event_hooks={"response": [self._on_response]},
|
|
87
|
+
)
|
|
88
|
+
connection = _Connection(base_url=options["base_url"]).set_httpx_client(self.http)
|
|
89
|
+
super().__init__(connection)
|
|
90
|
+
self.indexes = Indexes(connection)
|
|
91
|
+
self.documents = Documents(connection)
|
|
92
|
+
self.device_login = DeviceLogin(connection)
|
|
93
|
+
|
|
94
|
+
def _on_response(self, response: httpx.Response) -> None:
|
|
95
|
+
_session(self.http, response)
|
|
96
|
+
if response.status_code >= 400:
|
|
97
|
+
response.read()
|
|
98
|
+
raise map_error(response)
|
|
99
|
+
|
|
100
|
+
def close(self) -> None:
|
|
101
|
+
"""Close the client's connections."""
|
|
102
|
+
self.http.close()
|
|
103
|
+
|
|
104
|
+
def __enter__(self) -> Self:
|
|
105
|
+
return self
|
|
106
|
+
|
|
107
|
+
def __exit__(self, *_: object) -> None:
|
|
108
|
+
self.close()
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
class AsyncClient(_GeneratedAsyncClient):
|
|
112
|
+
"""An asynchronous client of the Grepvine API.
|
|
113
|
+
|
|
114
|
+
It takes the same arguments as `Client`, with an
|
|
115
|
+
``httpx.AsyncBaseTransport`` as ``transport``, and its methods are
|
|
116
|
+
coroutines. Use it with ``async with``, or call `aclose`.
|
|
117
|
+
"""
|
|
118
|
+
|
|
119
|
+
indexes: AsyncIndexes
|
|
120
|
+
documents: AsyncDocuments
|
|
121
|
+
device_login: AsyncDeviceLogin
|
|
122
|
+
|
|
123
|
+
def __init__(
|
|
124
|
+
self,
|
|
125
|
+
*,
|
|
126
|
+
api_key: str | None = None,
|
|
127
|
+
endpoint: str = DEFAULT_ENDPOINT,
|
|
128
|
+
timeout: float | httpx.Timeout | None = DEFAULT_TIMEOUT,
|
|
129
|
+
retry: RetryPolicy | None = None,
|
|
130
|
+
transport: httpx.AsyncBaseTransport | None = None,
|
|
131
|
+
) -> None:
|
|
132
|
+
options = _options(api_key, endpoint, timeout)
|
|
133
|
+
inner = transport or httpx.AsyncHTTPTransport()
|
|
134
|
+
self.http = httpx.AsyncClient(
|
|
135
|
+
**options,
|
|
136
|
+
transport=AsyncRetryTransport(inner, retry or RetryPolicy()),
|
|
137
|
+
event_hooks={"response": [self._on_response]},
|
|
138
|
+
)
|
|
139
|
+
connection = _Connection(base_url=options["base_url"]).set_async_httpx_client(self.http)
|
|
140
|
+
super().__init__(connection)
|
|
141
|
+
self.indexes = AsyncIndexes(connection)
|
|
142
|
+
self.documents = AsyncDocuments(connection)
|
|
143
|
+
self.device_login = AsyncDeviceLogin(connection)
|
|
144
|
+
|
|
145
|
+
async def _on_response(self, response: httpx.Response) -> None:
|
|
146
|
+
_session(self.http, response)
|
|
147
|
+
if response.status_code >= 400:
|
|
148
|
+
await response.aread()
|
|
149
|
+
raise map_error(response)
|
|
150
|
+
|
|
151
|
+
async def aclose(self) -> None:
|
|
152
|
+
"""Close the client's connections."""
|
|
153
|
+
await self.http.aclose()
|
|
154
|
+
|
|
155
|
+
async def __aenter__(self) -> Self:
|
|
156
|
+
return self
|
|
157
|
+
|
|
158
|
+
async def __aexit__(self, *_: object) -> None:
|
|
159
|
+
await self.aclose()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Contains methods for accessing the API"""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Contains endpoint functions for accessing the API"""
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
from http import HTTPStatus
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
import httpx
|
|
5
|
+
|
|
6
|
+
from ...client import AuthenticatedClient, Client
|
|
7
|
+
from ...types import Response
|
|
8
|
+
|
|
9
|
+
from ...models.api_key_created import APIKeyCreated
|
|
10
|
+
from ...models.create_api_key_request import CreateAPIKeyRequest
|
|
11
|
+
from ...models.error import Error
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _get_kwargs(
|
|
15
|
+
*,
|
|
16
|
+
body: CreateAPIKeyRequest,
|
|
17
|
+
) -> dict[str, Any]:
|
|
18
|
+
headers: dict[str, Any] = {}
|
|
19
|
+
|
|
20
|
+
_kwargs: dict[str, Any] = {
|
|
21
|
+
"method": "post",
|
|
22
|
+
"url": "/api-keys",
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
_kwargs["json"] = body.to_dict()
|
|
26
|
+
|
|
27
|
+
headers["Content-Type"] = "application/json"
|
|
28
|
+
|
|
29
|
+
_kwargs["headers"] = headers
|
|
30
|
+
return _kwargs
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _parse_response(
|
|
34
|
+
*, client: AuthenticatedClient | Client, response: httpx.Response
|
|
35
|
+
) -> APIKeyCreated | Error:
|
|
36
|
+
if response.status_code == 201:
|
|
37
|
+
response_201 = APIKeyCreated.from_dict(response.json())
|
|
38
|
+
|
|
39
|
+
return response_201
|
|
40
|
+
|
|
41
|
+
response_default = Error.from_dict(response.json())
|
|
42
|
+
|
|
43
|
+
return response_default
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _build_response(
|
|
47
|
+
*, client: AuthenticatedClient | Client, response: httpx.Response
|
|
48
|
+
) -> Response[APIKeyCreated | Error]:
|
|
49
|
+
return Response(
|
|
50
|
+
status_code=HTTPStatus(response.status_code),
|
|
51
|
+
content=response.content,
|
|
52
|
+
headers=response.headers,
|
|
53
|
+
parsed=_parse_response(client=client, response=response),
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def sync_detailed(
|
|
58
|
+
*,
|
|
59
|
+
client: AuthenticatedClient | Client,
|
|
60
|
+
body: CreateAPIKeyRequest,
|
|
61
|
+
) -> Response[APIKeyCreated | Error]:
|
|
62
|
+
"""Create an API key
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
body (CreateAPIKeyRequest):
|
|
66
|
+
|
|
67
|
+
Raises:
|
|
68
|
+
grepvine.APIError: The service answered with an error.
|
|
69
|
+
grepvine.TransportError: The request could not be delivered.
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
Response[APIKeyCreated | Error]
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
kwargs = _get_kwargs(
|
|
76
|
+
body=body,
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
response = client.get_httpx_client().request(
|
|
80
|
+
**kwargs,
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
return _build_response(client=client, response=response)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def sync(
|
|
87
|
+
*,
|
|
88
|
+
client: AuthenticatedClient | Client,
|
|
89
|
+
body: CreateAPIKeyRequest,
|
|
90
|
+
) -> APIKeyCreated | Error | None:
|
|
91
|
+
"""Create an API key
|
|
92
|
+
|
|
93
|
+
Args:
|
|
94
|
+
body (CreateAPIKeyRequest):
|
|
95
|
+
|
|
96
|
+
Raises:
|
|
97
|
+
grepvine.APIError: The service answered with an error.
|
|
98
|
+
grepvine.TransportError: The request could not be delivered.
|
|
99
|
+
|
|
100
|
+
Returns:
|
|
101
|
+
APIKeyCreated | Error
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
return sync_detailed(
|
|
105
|
+
client=client,
|
|
106
|
+
body=body,
|
|
107
|
+
).parsed
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
async def asyncio_detailed(
|
|
111
|
+
*,
|
|
112
|
+
client: AuthenticatedClient | Client,
|
|
113
|
+
body: CreateAPIKeyRequest,
|
|
114
|
+
) -> Response[APIKeyCreated | Error]:
|
|
115
|
+
"""Create an API key
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
body (CreateAPIKeyRequest):
|
|
119
|
+
|
|
120
|
+
Raises:
|
|
121
|
+
grepvine.APIError: The service answered with an error.
|
|
122
|
+
grepvine.TransportError: The request could not be delivered.
|
|
123
|
+
|
|
124
|
+
Returns:
|
|
125
|
+
Response[APIKeyCreated | Error]
|
|
126
|
+
"""
|
|
127
|
+
|
|
128
|
+
kwargs = _get_kwargs(
|
|
129
|
+
body=body,
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
response = await client.get_async_httpx_client().request(**kwargs)
|
|
133
|
+
|
|
134
|
+
return _build_response(client=client, response=response)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
async def asyncio(
|
|
138
|
+
*,
|
|
139
|
+
client: AuthenticatedClient | Client,
|
|
140
|
+
body: CreateAPIKeyRequest,
|
|
141
|
+
) -> APIKeyCreated | Error | None:
|
|
142
|
+
"""Create an API key
|
|
143
|
+
|
|
144
|
+
Args:
|
|
145
|
+
body (CreateAPIKeyRequest):
|
|
146
|
+
|
|
147
|
+
Raises:
|
|
148
|
+
grepvine.APIError: The service answered with an error.
|
|
149
|
+
grepvine.TransportError: The request could not be delivered.
|
|
150
|
+
|
|
151
|
+
Returns:
|
|
152
|
+
APIKeyCreated | Error
|
|
153
|
+
"""
|
|
154
|
+
|
|
155
|
+
return (
|
|
156
|
+
await asyncio_detailed(
|
|
157
|
+
client=client,
|
|
158
|
+
body=body,
|
|
159
|
+
)
|
|
160
|
+
).parsed
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
from http import HTTPStatus
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
import httpx
|
|
5
|
+
|
|
6
|
+
from ...client import AuthenticatedClient, Client
|
|
7
|
+
from ...types import Response, UNSET
|
|
8
|
+
|
|
9
|
+
from ...models.api_key_page import APIKeyPage
|
|
10
|
+
from ...models.error import Error
|
|
11
|
+
from ...types import Unset
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _get_kwargs(
|
|
15
|
+
*,
|
|
16
|
+
amount: int | Unset = 50,
|
|
17
|
+
page: str | Unset = UNSET,
|
|
18
|
+
) -> dict[str, Any]:
|
|
19
|
+
|
|
20
|
+
params: dict[str, Any] = {}
|
|
21
|
+
|
|
22
|
+
params["amount"] = amount
|
|
23
|
+
|
|
24
|
+
params["page"] = page
|
|
25
|
+
|
|
26
|
+
params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
|
|
27
|
+
|
|
28
|
+
_kwargs: dict[str, Any] = {
|
|
29
|
+
"method": "get",
|
|
30
|
+
"url": "/api-keys",
|
|
31
|
+
"params": params,
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return _kwargs
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def _parse_response(
|
|
38
|
+
*, client: AuthenticatedClient | Client, response: httpx.Response
|
|
39
|
+
) -> APIKeyPage | Error:
|
|
40
|
+
if response.status_code == 200:
|
|
41
|
+
response_200 = APIKeyPage.from_dict(response.json())
|
|
42
|
+
|
|
43
|
+
return response_200
|
|
44
|
+
|
|
45
|
+
response_default = Error.from_dict(response.json())
|
|
46
|
+
|
|
47
|
+
return response_default
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _build_response(
|
|
51
|
+
*, client: AuthenticatedClient | Client, response: httpx.Response
|
|
52
|
+
) -> Response[APIKeyPage | Error]:
|
|
53
|
+
return Response(
|
|
54
|
+
status_code=HTTPStatus(response.status_code),
|
|
55
|
+
content=response.content,
|
|
56
|
+
headers=response.headers,
|
|
57
|
+
parsed=_parse_response(client=client, response=response),
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def sync_detailed(
|
|
62
|
+
*,
|
|
63
|
+
client: AuthenticatedClient | Client,
|
|
64
|
+
amount: int | Unset = 50,
|
|
65
|
+
page: str | Unset = UNSET,
|
|
66
|
+
) -> Response[APIKeyPage | Error]:
|
|
67
|
+
"""List API keys
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
amount (int | Unset): Default: 50.
|
|
71
|
+
page (str | Unset):
|
|
72
|
+
|
|
73
|
+
Raises:
|
|
74
|
+
grepvine.APIError: The service answered with an error.
|
|
75
|
+
grepvine.TransportError: The request could not be delivered.
|
|
76
|
+
|
|
77
|
+
Returns:
|
|
78
|
+
Response[APIKeyPage | Error]
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
kwargs = _get_kwargs(
|
|
82
|
+
amount=amount,
|
|
83
|
+
page=page,
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
response = client.get_httpx_client().request(
|
|
87
|
+
**kwargs,
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
return _build_response(client=client, response=response)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def sync(
|
|
94
|
+
*,
|
|
95
|
+
client: AuthenticatedClient | Client,
|
|
96
|
+
amount: int | Unset = 50,
|
|
97
|
+
page: str | Unset = UNSET,
|
|
98
|
+
) -> APIKeyPage | Error | None:
|
|
99
|
+
"""List API keys
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
amount (int | Unset): Default: 50.
|
|
103
|
+
page (str | Unset):
|
|
104
|
+
|
|
105
|
+
Raises:
|
|
106
|
+
grepvine.APIError: The service answered with an error.
|
|
107
|
+
grepvine.TransportError: The request could not be delivered.
|
|
108
|
+
|
|
109
|
+
Returns:
|
|
110
|
+
APIKeyPage | Error
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
return sync_detailed(
|
|
114
|
+
client=client,
|
|
115
|
+
amount=amount,
|
|
116
|
+
page=page,
|
|
117
|
+
).parsed
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
async def asyncio_detailed(
|
|
121
|
+
*,
|
|
122
|
+
client: AuthenticatedClient | Client,
|
|
123
|
+
amount: int | Unset = 50,
|
|
124
|
+
page: str | Unset = UNSET,
|
|
125
|
+
) -> Response[APIKeyPage | Error]:
|
|
126
|
+
"""List API keys
|
|
127
|
+
|
|
128
|
+
Args:
|
|
129
|
+
amount (int | Unset): Default: 50.
|
|
130
|
+
page (str | Unset):
|
|
131
|
+
|
|
132
|
+
Raises:
|
|
133
|
+
grepvine.APIError: The service answered with an error.
|
|
134
|
+
grepvine.TransportError: The request could not be delivered.
|
|
135
|
+
|
|
136
|
+
Returns:
|
|
137
|
+
Response[APIKeyPage | Error]
|
|
138
|
+
"""
|
|
139
|
+
|
|
140
|
+
kwargs = _get_kwargs(
|
|
141
|
+
amount=amount,
|
|
142
|
+
page=page,
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
response = await client.get_async_httpx_client().request(**kwargs)
|
|
146
|
+
|
|
147
|
+
return _build_response(client=client, response=response)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
async def asyncio(
|
|
151
|
+
*,
|
|
152
|
+
client: AuthenticatedClient | Client,
|
|
153
|
+
amount: int | Unset = 50,
|
|
154
|
+
page: str | Unset = UNSET,
|
|
155
|
+
) -> APIKeyPage | Error | None:
|
|
156
|
+
"""List API keys
|
|
157
|
+
|
|
158
|
+
Args:
|
|
159
|
+
amount (int | Unset): Default: 50.
|
|
160
|
+
page (str | Unset):
|
|
161
|
+
|
|
162
|
+
Raises:
|
|
163
|
+
grepvine.APIError: The service answered with an error.
|
|
164
|
+
grepvine.TransportError: The request could not be delivered.
|
|
165
|
+
|
|
166
|
+
Returns:
|
|
167
|
+
APIKeyPage | Error
|
|
168
|
+
"""
|
|
169
|
+
|
|
170
|
+
return (
|
|
171
|
+
await asyncio_detailed(
|
|
172
|
+
client=client,
|
|
173
|
+
amount=amount,
|
|
174
|
+
page=page,
|
|
175
|
+
)
|
|
176
|
+
).parsed
|