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.
Files changed (124) hide show
  1. grepvine/__init__.py +65 -0
  2. grepvine/_client.py +159 -0
  3. grepvine/_generated/__init__.py +8 -0
  4. grepvine/_generated/api/__init__.py +1 -0
  5. grepvine/_generated/api/api_keys/__init__.py +1 -0
  6. grepvine/_generated/api/api_keys/create_api_key.py +160 -0
  7. grepvine/_generated/api/api_keys/list_api_keys.py +176 -0
  8. grepvine/_generated/api/api_keys/revoke_api_key.py +159 -0
  9. grepvine/_generated/api/authentication/__init__.py +1 -0
  10. grepvine/_generated/api/authentication/change_password.py +163 -0
  11. grepvine/_generated/api/authentication/check_invitation.py +177 -0
  12. grepvine/_generated/api/authentication/get_auth_options.py +140 -0
  13. grepvine/_generated/api/authentication/get_current_user.py +133 -0
  14. grepvine/_generated/api/authentication/get_username_availability.py +163 -0
  15. grepvine/_generated/api/authentication/login.py +165 -0
  16. grepvine/_generated/api/authentication/logout.py +126 -0
  17. grepvine/_generated/api/authentication/register_user.py +198 -0
  18. grepvine/_generated/api/device_login/__init__.py +1 -0
  19. grepvine/_generated/api/device_login/approve_device_authorization.py +163 -0
  20. grepvine/_generated/api/device_login/deny_device_authorization.py +163 -0
  21. grepvine/_generated/api/device_login/poll_device_token.py +165 -0
  22. grepvine/_generated/api/device_login/start_device_authorization.py +160 -0
  23. grepvine/_generated/api/indexes/__init__.py +1 -0
  24. grepvine/_generated/api/indexes/create_index.py +189 -0
  25. grepvine/_generated/api/indexes/delete_index.py +188 -0
  26. grepvine/_generated/api/indexes/get_index.py +190 -0
  27. grepvine/_generated/api/indexes/list_indexes.py +215 -0
  28. grepvine/_generated/api/indexes/update_index.py +227 -0
  29. grepvine/_generated/api/objects/__init__.py +1 -0
  30. grepvine/_generated/api/objects/delete_document.py +244 -0
  31. grepvine/_generated/api/objects/delete_objects.py +238 -0
  32. grepvine/_generated/api/objects/get_document.py +234 -0
  33. grepvine/_generated/api/objects/list_documents.py +252 -0
  34. grepvine/_generated/api/objects/put_document.py +285 -0
  35. grepvine/_generated/api/objects/put_objects.py +266 -0
  36. grepvine/_generated/api/organizations/__init__.py +1 -0
  37. grepvine/_generated/api/organizations/add_organization_member.py +184 -0
  38. grepvine/_generated/api/organizations/create_organization.py +165 -0
  39. grepvine/_generated/api/organizations/delete_organization.py +166 -0
  40. grepvine/_generated/api/organizations/get_organization.py +168 -0
  41. grepvine/_generated/api/organizations/list_organization_members.py +200 -0
  42. grepvine/_generated/api/organizations/list_organizations.py +176 -0
  43. grepvine/_generated/api/organizations/remove_organization_member.py +183 -0
  44. grepvine/_generated/api/organizations/transfer_organization_ownership.py +182 -0
  45. grepvine/_generated/api/organizations/update_organization_member.py +206 -0
  46. grepvine/_generated/api/resources.py +2365 -0
  47. grepvine/_generated/api/search/__init__.py +1 -0
  48. grepvine/_generated/api/search/query_index.py +242 -0
  49. grepvine/_generated/client.py +272 -0
  50. grepvine/_generated/errors.py +16 -0
  51. grepvine/_generated/models/__init__.py +129 -0
  52. grepvine/_generated/models/add_member_request.py +56 -0
  53. grepvine/_generated/models/add_member_request_role.py +10 -0
  54. grepvine/_generated/models/api_key.py +104 -0
  55. grepvine/_generated/models/api_key_created.py +131 -0
  56. grepvine/_generated/models/api_key_page.py +69 -0
  57. grepvine/_generated/models/auth_options.py +47 -0
  58. grepvine/_generated/models/change_password_request.py +51 -0
  59. grepvine/_generated/models/context_line.py +61 -0
  60. grepvine/_generated/models/create_api_key_request.py +43 -0
  61. grepvine/_generated/models/create_index_request.py +80 -0
  62. grepvine/_generated/models/create_organization_request.py +45 -0
  63. grepvine/_generated/models/delete_object_record.py +54 -0
  64. grepvine/_generated/models/delete_objects_request.py +57 -0
  65. grepvine/_generated/models/device_authorization.py +83 -0
  66. grepvine/_generated/models/device_authorization_request.py +43 -0
  67. grepvine/_generated/models/device_decision_request.py +43 -0
  68. grepvine/_generated/models/device_token_request.py +43 -0
  69. grepvine/_generated/models/document_page.py +79 -0
  70. grepvine/_generated/models/document_summary.py +92 -0
  71. grepvine/_generated/models/error.py +59 -0
  72. grepvine/_generated/models/index.py +178 -0
  73. grepvine/_generated/models/index_page.py +69 -0
  74. grepvine/_generated/models/index_state.py +11 -0
  75. grepvine/_generated/models/index_summary.py +149 -0
  76. grepvine/_generated/models/index_tag_changes.py +64 -0
  77. grepvine/_generated/models/index_tags.py +52 -0
  78. grepvine/_generated/models/invitation_check_request.py +43 -0
  79. grepvine/_generated/models/invitation_preview.py +83 -0
  80. grepvine/_generated/models/invitation_role.py +10 -0
  81. grepvine/_generated/models/login_request.py +51 -0
  82. grepvine/_generated/models/match.py +51 -0
  83. grepvine/_generated/models/member.py +86 -0
  84. grepvine/_generated/models/member_page.py +69 -0
  85. grepvine/_generated/models/metadata.py +194 -0
  86. grepvine/_generated/models/mutation_batch_result.py +57 -0
  87. grepvine/_generated/models/mutation_result.py +78 -0
  88. grepvine/_generated/models/organization.py +83 -0
  89. grepvine/_generated/models/organization_page.py +69 -0
  90. grepvine/_generated/models/pagination.py +54 -0
  91. grepvine/_generated/models/put_document_form.py +97 -0
  92. grepvine/_generated/models/put_document_if_none_match.py +8 -0
  93. grepvine/_generated/models/put_object_record.py +97 -0
  94. grepvine/_generated/models/query_page.py +69 -0
  95. grepvine/_generated/models/query_request.py +122 -0
  96. grepvine/_generated/models/query_request_mode.py +9 -0
  97. grepvine/_generated/models/query_result.py +202 -0
  98. grepvine/_generated/models/register_request.py +73 -0
  99. grepvine/_generated/models/role.py +11 -0
  100. grepvine/_generated/models/signup_mode.py +9 -0
  101. grepvine/_generated/models/staff_role.py +9 -0
  102. grepvine/_generated/models/tagged_boolean_metadata_value.py +56 -0
  103. grepvine/_generated/models/tagged_integer_metadata_value.py +56 -0
  104. grepvine/_generated/models/tagged_metadata.py +163 -0
  105. grepvine/_generated/models/tagged_number_metadata_value.py +56 -0
  106. grepvine/_generated/models/tagged_string_metadata_value.py +56 -0
  107. grepvine/_generated/models/tagged_timestamp_metadata_value.py +58 -0
  108. grepvine/_generated/models/transfer_ownership_request.py +45 -0
  109. grepvine/_generated/models/update_index_request.py +68 -0
  110. grepvine/_generated/models/update_member_request.py +46 -0
  111. grepvine/_generated/models/update_member_request_role.py +10 -0
  112. grepvine/_generated/models/user.py +92 -0
  113. grepvine/_generated/models/username_availability.py +53 -0
  114. grepvine/_generated/types.py +54 -0
  115. grepvine/_helpers.py +332 -0
  116. grepvine/_retry.py +135 -0
  117. grepvine/errors.py +206 -0
  118. grepvine/models.py +7 -0
  119. grepvine/py.typed +0 -0
  120. grepvine-0.1.0.dist-info/METADATA +464 -0
  121. grepvine-0.1.0.dist-info/RECORD +124 -0
  122. grepvine-0.1.0.dist-info/WHEEL +4 -0
  123. grepvine-0.1.0.dist-info/licenses/LICENSE +202 -0
  124. 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,8 @@
1
+ """A client library for accessing Grepvine API"""
2
+
3
+ from .client import AuthenticatedClient, Client
4
+
5
+ __all__ = (
6
+ "AuthenticatedClient",
7
+ "Client",
8
+ )
@@ -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