Coverage for src/hush_hush/_generated/api/audit_log/query_audit_log.py: 80%
64 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-16 16:01 +0000
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-16 16:01 +0000
1# Code generated by openapi-python-client from hush-hush/api/openapi.yaml; DO NOT EDIT.
3import datetime
4from http import HTTPStatus
5from typing import Any
7import httpx
9from ... import errors
10from ...client import AuthenticatedClient, Client
11from ...models.audit_log_entry import AuditLogEntry
12from ...models.error import Error
13from ...models.query_audit_log_order import QueryAuditLogOrder
14from ...types import UNSET, Response, Unset
17def _get_kwargs(
18 *,
19 object_id: str | Unset = UNSET,
20 caller: str | Unset = UNSET,
21 actor: str | Unset = UNSET,
22 from_: datetime.datetime | Unset = UNSET,
23 to: datetime.datetime | Unset = UNSET,
24 after: int | Unset = UNSET,
25 before: int | Unset = UNSET,
26 order: QueryAuditLogOrder | Unset = QueryAuditLogOrder.ASC,
27 limit: int | Unset = 50,
28) -> dict[str, Any]:
30 params: dict[str, Any] = {}
32 params["object_id"] = object_id
34 params["caller"] = caller
36 params["actor"] = actor
38 json_from_: str | Unset = UNSET
39 if not isinstance(from_, Unset):
40 json_from_ = from_.isoformat()
41 params["from"] = json_from_
43 json_to: str | Unset = UNSET
44 if not isinstance(to, Unset):
45 json_to = to.isoformat()
46 params["to"] = json_to
48 params["after"] = after
50 params["before"] = before
52 json_order: str | Unset = UNSET
53 if not isinstance(order, Unset):
54 json_order = order.value
56 params["order"] = json_order
58 params["limit"] = limit
60 params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
62 _kwargs: dict[str, Any] = {
63 "method": "get",
64 "url": "/audit-log",
65 "params": params,
66 }
68 return _kwargs
71def _parse_response(
72 *, client: AuthenticatedClient | Client, response: httpx.Response
73) -> Error | list[AuditLogEntry] | None:
74 if response.status_code == 200:
75 response_200 = []
76 _response_200 = response.json()
77 for response_200_item_data in _response_200:
78 response_200_item = AuditLogEntry.from_dict(response_200_item_data)
80 response_200.append(response_200_item)
82 return response_200
84 if response.status_code == 400:
85 response_400 = Error.from_dict(response.json())
87 return response_400
89 if response.status_code == 422:
90 response_422 = Error.from_dict(response.json())
92 return response_422
94 if client.raise_on_unexpected_status:
95 raise errors.UnexpectedStatus(response.status_code, response.content)
96 else:
97 return None
100def _build_response(
101 *, client: AuthenticatedClient | Client, response: httpx.Response
102) -> Response[Error | list[AuditLogEntry]]:
103 return Response(
104 status_code=HTTPStatus(response.status_code),
105 content=response.content,
106 headers=response.headers,
107 parsed=_parse_response(client=client, response=response),
108 )
111def sync_detailed(
112 *,
113 client: AuthenticatedClient | Client,
114 object_id: str | Unset = UNSET,
115 caller: str | Unset = UNSET,
116 actor: str | Unset = UNSET,
117 from_: datetime.datetime | Unset = UNSET,
118 to: datetime.datetime | Unset = UNSET,
119 after: int | Unset = UNSET,
120 before: int | Unset = UNSET,
121 order: QueryAuditLogOrder | Unset = QueryAuditLogOrder.ASC,
122 limit: int | Unset = 50,
123) -> Response[Error | list[AuditLogEntry]]:
124 """Query the audit log
126 Every create, read, update, and delete call is recorded here -
127 this is what answers "did anyone fetch this ciphertext" during a
128 rotation or incident, since v1 has no pre-fetch access check.
129 Filters combine with AND when more than one is given.
131 Args:
132 object_id (str | Unset): A caller-chosen, unique identifier for an object - what every
133 documented request path (URL, CLI, API) addresses it by. Letters of
134 either case, digits, `_` and `-`, starting with a letter or digit;
135 names are case-sensitive, so `Api_Token` and `api_token` are two
136 secrets. Create and rename follow the same rule. The
137 object's internal id is a separate, opaque value never exposed to
138 or accepted from a caller (specs/secret-objects/spec.md's
139 "Internal id decoupled from user-facing slug" requirement).
140 caller (str | Unset):
141 actor (str | Unset):
142 from_ (datetime.datetime | Unset):
143 to (datetime.datetime | Unset):
144 after (int | Unset):
145 before (int | Unset):
146 order (QueryAuditLogOrder | Unset): Default: QueryAuditLogOrder.ASC.
147 limit (int | Unset): Default: 50.
149 Raises:
150 errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
151 httpx.TimeoutException: If the request takes longer than Client.timeout.
153 Returns:
154 Response[Error | list[AuditLogEntry]]
155 """
157 kwargs = _get_kwargs(
158 object_id=object_id,
159 caller=caller,
160 actor=actor,
161 from_=from_,
162 to=to,
163 after=after,
164 before=before,
165 order=order,
166 limit=limit,
167 )
169 response = client.get_httpx_client().request(
170 **kwargs,
171 )
173 return _build_response(client=client, response=response)
176def sync(
177 *,
178 client: AuthenticatedClient | Client,
179 object_id: str | Unset = UNSET,
180 caller: str | Unset = UNSET,
181 actor: str | Unset = UNSET,
182 from_: datetime.datetime | Unset = UNSET,
183 to: datetime.datetime | Unset = UNSET,
184 after: int | Unset = UNSET,
185 before: int | Unset = UNSET,
186 order: QueryAuditLogOrder | Unset = QueryAuditLogOrder.ASC,
187 limit: int | Unset = 50,
188) -> Error | list[AuditLogEntry] | None:
189 """Query the audit log
191 Every create, read, update, and delete call is recorded here -
192 this is what answers "did anyone fetch this ciphertext" during a
193 rotation or incident, since v1 has no pre-fetch access check.
194 Filters combine with AND when more than one is given.
196 Args:
197 object_id (str | Unset): A caller-chosen, unique identifier for an object - what every
198 documented request path (URL, CLI, API) addresses it by. Letters of
199 either case, digits, `_` and `-`, starting with a letter or digit;
200 names are case-sensitive, so `Api_Token` and `api_token` are two
201 secrets. Create and rename follow the same rule. The
202 object's internal id is a separate, opaque value never exposed to
203 or accepted from a caller (specs/secret-objects/spec.md's
204 "Internal id decoupled from user-facing slug" requirement).
205 caller (str | Unset):
206 actor (str | Unset):
207 from_ (datetime.datetime | Unset):
208 to (datetime.datetime | Unset):
209 after (int | Unset):
210 before (int | Unset):
211 order (QueryAuditLogOrder | Unset): Default: QueryAuditLogOrder.ASC.
212 limit (int | Unset): Default: 50.
214 Raises:
215 errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
216 httpx.TimeoutException: If the request takes longer than Client.timeout.
218 Returns:
219 Error | list[AuditLogEntry]
220 """
222 return sync_detailed(
223 client=client,
224 object_id=object_id,
225 caller=caller,
226 actor=actor,
227 from_=from_,
228 to=to,
229 after=after,
230 before=before,
231 order=order,
232 limit=limit,
233 ).parsed
236async def asyncio_detailed(
237 *,
238 client: AuthenticatedClient | Client,
239 object_id: str | Unset = UNSET,
240 caller: str | Unset = UNSET,
241 actor: str | Unset = UNSET,
242 from_: datetime.datetime | Unset = UNSET,
243 to: datetime.datetime | Unset = UNSET,
244 after: int | Unset = UNSET,
245 before: int | Unset = UNSET,
246 order: QueryAuditLogOrder | Unset = QueryAuditLogOrder.ASC,
247 limit: int | Unset = 50,
248) -> Response[Error | list[AuditLogEntry]]:
249 """Query the audit log
251 Every create, read, update, and delete call is recorded here -
252 this is what answers "did anyone fetch this ciphertext" during a
253 rotation or incident, since v1 has no pre-fetch access check.
254 Filters combine with AND when more than one is given.
256 Args:
257 object_id (str | Unset): A caller-chosen, unique identifier for an object - what every
258 documented request path (URL, CLI, API) addresses it by. Letters of
259 either case, digits, `_` and `-`, starting with a letter or digit;
260 names are case-sensitive, so `Api_Token` and `api_token` are two
261 secrets. Create and rename follow the same rule. The
262 object's internal id is a separate, opaque value never exposed to
263 or accepted from a caller (specs/secret-objects/spec.md's
264 "Internal id decoupled from user-facing slug" requirement).
265 caller (str | Unset):
266 actor (str | Unset):
267 from_ (datetime.datetime | Unset):
268 to (datetime.datetime | Unset):
269 after (int | Unset):
270 before (int | Unset):
271 order (QueryAuditLogOrder | Unset): Default: QueryAuditLogOrder.ASC.
272 limit (int | Unset): Default: 50.
274 Raises:
275 errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
276 httpx.TimeoutException: If the request takes longer than Client.timeout.
278 Returns:
279 Response[Error | list[AuditLogEntry]]
280 """
282 kwargs = _get_kwargs(
283 object_id=object_id,
284 caller=caller,
285 actor=actor,
286 from_=from_,
287 to=to,
288 after=after,
289 before=before,
290 order=order,
291 limit=limit,
292 )
294 response = await client.get_async_httpx_client().request(**kwargs)
296 return _build_response(client=client, response=response)
299async def asyncio(
300 *,
301 client: AuthenticatedClient | Client,
302 object_id: str | Unset = UNSET,
303 caller: str | Unset = UNSET,
304 actor: str | Unset = UNSET,
305 from_: datetime.datetime | Unset = UNSET,
306 to: datetime.datetime | Unset = UNSET,
307 after: int | Unset = UNSET,
308 before: int | Unset = UNSET,
309 order: QueryAuditLogOrder | Unset = QueryAuditLogOrder.ASC,
310 limit: int | Unset = 50,
311) -> Error | list[AuditLogEntry] | None:
312 """Query the audit log
314 Every create, read, update, and delete call is recorded here -
315 this is what answers "did anyone fetch this ciphertext" during a
316 rotation or incident, since v1 has no pre-fetch access check.
317 Filters combine with AND when more than one is given.
319 Args:
320 object_id (str | Unset): A caller-chosen, unique identifier for an object - what every
321 documented request path (URL, CLI, API) addresses it by. Letters of
322 either case, digits, `_` and `-`, starting with a letter or digit;
323 names are case-sensitive, so `Api_Token` and `api_token` are two
324 secrets. Create and rename follow the same rule. The
325 object's internal id is a separate, opaque value never exposed to
326 or accepted from a caller (specs/secret-objects/spec.md's
327 "Internal id decoupled from user-facing slug" requirement).
328 caller (str | Unset):
329 actor (str | Unset):
330 from_ (datetime.datetime | Unset):
331 to (datetime.datetime | Unset):
332 after (int | Unset):
333 before (int | Unset):
334 order (QueryAuditLogOrder | Unset): Default: QueryAuditLogOrder.ASC.
335 limit (int | Unset): Default: 50.
337 Raises:
338 errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
339 httpx.TimeoutException: If the request takes longer than Client.timeout.
341 Returns:
342 Error | list[AuditLogEntry]
343 """
345 return (
346 await asyncio_detailed(
347 client=client,
348 object_id=object_id,
349 caller=caller,
350 actor=actor,
351 from_=from_,
352 to=to,
353 after=after,
354 before=before,
355 order=order,
356 limit=limit,
357 )
358 ).parsed