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

1# Code generated by openapi-python-client from hush-hush/api/openapi.yaml; DO NOT EDIT. 

2 

3import datetime 

4from http import HTTPStatus 

5from typing import Any 

6 

7import httpx 

8 

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 

15 

16 

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]: 

29 

30 params: dict[str, Any] = {} 

31 

32 params["object_id"] = object_id 

33 

34 params["caller"] = caller 

35 

36 params["actor"] = actor 

37 

38 json_from_: str | Unset = UNSET 

39 if not isinstance(from_, Unset): 

40 json_from_ = from_.isoformat() 

41 params["from"] = json_from_ 

42 

43 json_to: str | Unset = UNSET 

44 if not isinstance(to, Unset): 

45 json_to = to.isoformat() 

46 params["to"] = json_to 

47 

48 params["after"] = after 

49 

50 params["before"] = before 

51 

52 json_order: str | Unset = UNSET 

53 if not isinstance(order, Unset): 

54 json_order = order.value 

55 

56 params["order"] = json_order 

57 

58 params["limit"] = limit 

59 

60 params = {k: v for k, v in params.items() if v is not UNSET and v is not None} 

61 

62 _kwargs: dict[str, Any] = { 

63 "method": "get", 

64 "url": "/audit-log", 

65 "params": params, 

66 } 

67 

68 return _kwargs 

69 

70 

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) 

79 

80 response_200.append(response_200_item) 

81 

82 return response_200 

83 

84 if response.status_code == 400: 

85 response_400 = Error.from_dict(response.json()) 

86 

87 return response_400 

88 

89 if response.status_code == 422: 

90 response_422 = Error.from_dict(response.json()) 

91 

92 return response_422 

93 

94 if client.raise_on_unexpected_status: 

95 raise errors.UnexpectedStatus(response.status_code, response.content) 

96 else: 

97 return None 

98 

99 

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 ) 

109 

110 

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 

125 

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. 

130 

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. 

148 

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. 

152 

153 Returns: 

154 Response[Error | list[AuditLogEntry]] 

155 """ 

156 

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 ) 

168 

169 response = client.get_httpx_client().request( 

170 **kwargs, 

171 ) 

172 

173 return _build_response(client=client, response=response) 

174 

175 

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 

190 

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. 

195 

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. 

213 

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. 

217 

218 Returns: 

219 Error | list[AuditLogEntry] 

220 """ 

221 

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 

234 

235 

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 

250 

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. 

255 

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. 

273 

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. 

277 

278 Returns: 

279 Response[Error | list[AuditLogEntry]] 

280 """ 

281 

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 ) 

293 

294 response = await client.get_async_httpx_client().request(**kwargs) 

295 

296 return _build_response(client=client, response=response) 

297 

298 

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 

313 

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. 

318 

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. 

336 

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. 

340 

341 Returns: 

342 Error | list[AuditLogEntry] 

343 """ 

344 

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