Coverage for fingerprint_server_sdk/api/fingerprint_api.py: 84%

279 statements  

« prev     ^ index     » next       coverage.py v7.14.3, created at 2026-07-14 10:45 +0000

1""" 

2Server API 

3Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. 

4Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. 

5The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. 

6 

7The version of the OpenAPI document: 4 

8Contact: support@fingerprint.com 

9Generated by OpenAPI Generator (https://openapi-generator.tech) 

10 

11Do not edit the class manually. 

12""" # noqa: E501 

13 

14from datetime import date, datetime 

15from typing import Annotated, Any, Optional, Union # noqa: UP035 

16 

17from pydantic import Field, StrictBool, StrictFloat, StrictInt, StrictStr, validate_call 

18 

19from fingerprint_server_sdk.api_client import ApiClient, RequestSerialized 

20from fingerprint_server_sdk.api_response import ApiResponse 

21from fingerprint_server_sdk.configuration import Configuration 

22from fingerprint_server_sdk.models.bot_info_category import BotInfoCategory 

23from fingerprint_server_sdk.models.bot_info_confidence import BotInfoConfidence 

24from fingerprint_server_sdk.models.bot_info_identity import BotInfoIdentity 

25from fingerprint_server_sdk.models.event import Event 

26from fingerprint_server_sdk.models.event_search import EventSearch 

27from fingerprint_server_sdk.models.event_update import EventUpdate 

28from fingerprint_server_sdk.models.search_events_bot import SearchEventsBot 

29from fingerprint_server_sdk.models.search_events_bot_info import SearchEventsBotInfo 

30from fingerprint_server_sdk.models.search_events_end_parameter import SearchEventsEndParameter 

31from fingerprint_server_sdk.models.search_events_incremental_identification_status import ( 

32 SearchEventsIncrementalIdentificationStatus, 

33) 

34from fingerprint_server_sdk.models.search_events_rare_device_percentile_bucket import ( 

35 SearchEventsRareDevicePercentileBucket, 

36) 

37from fingerprint_server_sdk.models.search_events_sdk_platform import SearchEventsSdkPlatform 

38from fingerprint_server_sdk.models.search_events_source import SearchEventsSource 

39from fingerprint_server_sdk.models.search_events_start_parameter import SearchEventsStartParameter 

40from fingerprint_server_sdk.models.search_events_vpn_confidence import SearchEventsVpnConfidence 

41from fingerprint_server_sdk.rest import RESTResponseType 

42 

43# Type alias for query and form parameter values 

44ParamValue = Union[ 

45 list[BotInfoCategory], 

46 list[BotInfoIdentity], 

47 list[BotInfoConfidence], 

48 list[SearchEventsSource], 

49 str, 

50 int, 

51 float, 

52 bool, 

53 list[str], 

54] 

55 

56 

57class FingerprintApi: 

58 """Fingerprint Python Server SDK 

59 

60 Fingerprint (https://fingerprint.com) is a device intelligence platform offering industry-leading accuracy. Fingerprint Server API allows you to search, update, and delete identification events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. 

61 

62 :param configuration: API client configuration. 

63 """ 

64 

65 def __init__(self, configuration: Configuration) -> None: 

66 self.api_client = ApiClient(configuration) 

67 

68 @validate_call 

69 def delete_visitor_data( 

70 self, 

71 visitor_id: Annotated[ 

72 StrictStr, 

73 Field( 

74 description='The [visitor ID](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) you want to delete.' 

75 ), 

76 ], 

77 _request_timeout: Union[ 

78 None, 

79 Annotated[StrictFloat, Field(gt=0)], 

80 tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], 

81 ] = None, 

82 _request_auth: Optional[dict[StrictStr, Any]] = None, 

83 _content_type: Optional[StrictStr] = None, 

84 _headers: Optional[dict[StrictStr, Any]] = None, 

85 ) -> None: 

86 """Delete a visitor ID 

87 

88 Use this API to request the deletion of all data associated with a specific visitor ID. Upon a request to delete data for a visitor ID, - The data collected from the corresponding browser (or device) will be deleted asynchronously, typically within a few minutes. This data will no longer be available to identify this browser (or device). When the same browser (or device) revisits, it will receive a new visitor ID. - The identification events made from this browser (or device) in the past 10 days are typically deleted within 24 hrs. - The identification events made from this browser (or device) outside of the 10 days will be purged as per your [data retention period](https://docs.fingerprint.com/docs/regions#data-retention). The following timeline illustrates which events are deleted and which remain after a DELETE API request: ``` Day 1: First visit from browser A. (Assigned visitor ID: VID1000) Day 2: Browser A revisits. (Assigned the same visitor ID: VID1000) Day 13: Browser A revisits. (Assigned the same visitor ID: VID1000) Day 14: Delete VID1000 Day 15: Browser A re-visits. (Assigned a different visitor ID: VID9999) Day 15: GET /events/day-13 (Returns 404. The event is within the 10 days of deleting VID1000 and will have been deleted) Day 16: GET /events/day-2 (Returns 200. The event is outside of the 10 days of deleting VID1000 and is still available) ``` ### Availability This API is available only for Enterprise plans **upon request**. If you are interested, please [contact our support team](https://fingerprint.com/support/). ### Rate limits and daily quota The rate limits and daily quota for this API **differ** from those for our other API. The maximum number of DELETE requests that can be made in an hour cannot exceed 30 RPH, and the maximum number that can be made in a day cannot exceed 500 RPD. You can request an increase to these limits by contacting [our support team](https://fingerprint.com/support/). 

89 

90 :param visitor_id: The [visitor ID](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) you want to delete. (required) 

91 :type visitor_id: str 

92 :param _request_timeout: timeout setting for this request. If one 

93 number provided, it will be total request 

94 timeout. It can also be a pair (tuple) of 

95 (connection, read) timeouts. 

96 :type _request_timeout: int, tuple(int, int), optional 

97 :param _request_auth: set to override the auth_settings for an a single 

98 request; this effectively ignores the 

99 authentication in the spec for a single request. 

100 :type _request_auth: dict, optional 

101 :param _content_type: force content-type for the request. 

102 :type _content_type: str, Optional 

103 :param _headers: set to override the headers for a single 

104 request; this effectively ignores the headers 

105 in the spec for a single request. 

106 :type _headers: dict, optional 

107 :return: Returns the result object. 

108 """ # noqa: E501 

109 

110 _param = self._delete_visitor_data_serialize( 

111 visitor_id=visitor_id, 

112 _request_auth=_request_auth, 

113 _content_type=_content_type, 

114 _headers=_headers, 

115 ) 

116 

117 _response_types_map: dict[str, Optional[str]] = { 

118 '200': None, 

119 '400': 'ErrorResponse', 

120 '403': 'ErrorResponse', 

121 '404': 'ErrorResponse', 

122 '429': 'ErrorResponse', 

123 } 

124 

125 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) 

126 response_data.read() 

127 self.api_client.response_deserialize( 

128 response_data=response_data, 

129 response_types_map=_response_types_map, 

130 ) 

131 

132 @validate_call 

133 def delete_visitor_data_with_http_info( 

134 self, 

135 visitor_id: Annotated[ 

136 StrictStr, 

137 Field( 

138 description='The [visitor ID](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) you want to delete.' 

139 ), 

140 ], 

141 _request_timeout: Union[ 

142 None, 

143 Annotated[StrictFloat, Field(gt=0)], 

144 tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], 

145 ] = None, 

146 _request_auth: Optional[dict[StrictStr, Any]] = None, 

147 _content_type: Optional[StrictStr] = None, 

148 _headers: Optional[dict[StrictStr, Any]] = None, 

149 ) -> ApiResponse[None]: 

150 """Delete a visitor ID 

151 

152 Use this API to request the deletion of all data associated with a specific visitor ID. Upon a request to delete data for a visitor ID, - The data collected from the corresponding browser (or device) will be deleted asynchronously, typically within a few minutes. This data will no longer be available to identify this browser (or device). When the same browser (or device) revisits, it will receive a new visitor ID. - The identification events made from this browser (or device) in the past 10 days are typically deleted within 24 hrs. - The identification events made from this browser (or device) outside of the 10 days will be purged as per your [data retention period](https://docs.fingerprint.com/docs/regions#data-retention). The following timeline illustrates which events are deleted and which remain after a DELETE API request: ``` Day 1: First visit from browser A. (Assigned visitor ID: VID1000) Day 2: Browser A revisits. (Assigned the same visitor ID: VID1000) Day 13: Browser A revisits. (Assigned the same visitor ID: VID1000) Day 14: Delete VID1000 Day 15: Browser A re-visits. (Assigned a different visitor ID: VID9999) Day 15: GET /events/day-13 (Returns 404. The event is within the 10 days of deleting VID1000 and will have been deleted) Day 16: GET /events/day-2 (Returns 200. The event is outside of the 10 days of deleting VID1000 and is still available) ``` ### Availability This API is available only for Enterprise plans **upon request**. If you are interested, please [contact our support team](https://fingerprint.com/support/). ### Rate limits and daily quota The rate limits and daily quota for this API **differ** from those for our other API. The maximum number of DELETE requests that can be made in an hour cannot exceed 30 RPH, and the maximum number that can be made in a day cannot exceed 500 RPD. You can request an increase to these limits by contacting [our support team](https://fingerprint.com/support/). 

153 

154 :param visitor_id: The [visitor ID](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) you want to delete. (required) 

155 :type visitor_id: str 

156 :param _request_timeout: timeout setting for this request. If one 

157 number provided, it will be total request 

158 timeout. It can also be a pair (tuple) of 

159 (connection, read) timeouts. 

160 :type _request_timeout: int, tuple(int, int), optional 

161 :param _request_auth: set to override the auth_settings for an a single 

162 request; this effectively ignores the 

163 authentication in the spec for a single request. 

164 :type _request_auth: dict, optional 

165 :param _content_type: force content-type for the request. 

166 :type _content_type: str, Optional 

167 :param _headers: set to override the headers for a single 

168 request; this effectively ignores the headers 

169 in the spec for a single request. 

170 :type _headers: dict, optional 

171 :return: Returns the result object. 

172 """ # noqa: E501 

173 

174 _param = self._delete_visitor_data_serialize( 

175 visitor_id=visitor_id, 

176 _request_auth=_request_auth, 

177 _content_type=_content_type, 

178 _headers=_headers, 

179 ) 

180 

181 _response_types_map: dict[str, Optional[str]] = { 

182 '200': None, 

183 '400': 'ErrorResponse', 

184 '403': 'ErrorResponse', 

185 '404': 'ErrorResponse', 

186 '429': 'ErrorResponse', 

187 } 

188 

189 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) 

190 response_data.read() 

191 return self.api_client.response_deserialize( 

192 response_data=response_data, 

193 response_types_map=_response_types_map, 

194 ) 

195 

196 @validate_call 

197 def delete_visitor_data_without_preload_content( 

198 self, 

199 visitor_id: Annotated[ 

200 StrictStr, 

201 Field( 

202 description='The [visitor ID](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) you want to delete.' 

203 ), 

204 ], 

205 _request_timeout: Union[ 

206 None, 

207 Annotated[StrictFloat, Field(gt=0)], 

208 tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], 

209 ] = None, 

210 _request_auth: Optional[dict[StrictStr, Any]] = None, 

211 _content_type: Optional[StrictStr] = None, 

212 _headers: Optional[dict[StrictStr, Any]] = None, 

213 ) -> RESTResponseType: 

214 """Delete a visitor ID 

215 

216 Use this API to request the deletion of all data associated with a specific visitor ID. Upon a request to delete data for a visitor ID, - The data collected from the corresponding browser (or device) will be deleted asynchronously, typically within a few minutes. This data will no longer be available to identify this browser (or device). When the same browser (or device) revisits, it will receive a new visitor ID. - The identification events made from this browser (or device) in the past 10 days are typically deleted within 24 hrs. - The identification events made from this browser (or device) outside of the 10 days will be purged as per your [data retention period](https://docs.fingerprint.com/docs/regions#data-retention). The following timeline illustrates which events are deleted and which remain after a DELETE API request: ``` Day 1: First visit from browser A. (Assigned visitor ID: VID1000) Day 2: Browser A revisits. (Assigned the same visitor ID: VID1000) Day 13: Browser A revisits. (Assigned the same visitor ID: VID1000) Day 14: Delete VID1000 Day 15: Browser A re-visits. (Assigned a different visitor ID: VID9999) Day 15: GET /events/day-13 (Returns 404. The event is within the 10 days of deleting VID1000 and will have been deleted) Day 16: GET /events/day-2 (Returns 200. The event is outside of the 10 days of deleting VID1000 and is still available) ``` ### Availability This API is available only for Enterprise plans **upon request**. If you are interested, please [contact our support team](https://fingerprint.com/support/). ### Rate limits and daily quota The rate limits and daily quota for this API **differ** from those for our other API. The maximum number of DELETE requests that can be made in an hour cannot exceed 30 RPH, and the maximum number that can be made in a day cannot exceed 500 RPD. You can request an increase to these limits by contacting [our support team](https://fingerprint.com/support/). 

217 

218 :param visitor_id: The [visitor ID](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) you want to delete. (required) 

219 :type visitor_id: str 

220 :param _request_timeout: timeout setting for this request. If one 

221 number provided, it will be total request 

222 timeout. It can also be a pair (tuple) of 

223 (connection, read) timeouts. 

224 :type _request_timeout: int, tuple(int, int), optional 

225 :param _request_auth: set to override the auth_settings for an a single 

226 request; this effectively ignores the 

227 authentication in the spec for a single request. 

228 :type _request_auth: dict, optional 

229 :param _content_type: force content-type for the request. 

230 :type _content_type: str, Optional 

231 :param _headers: set to override the headers for a single 

232 request; this effectively ignores the headers 

233 in the spec for a single request. 

234 :type _headers: dict, optional 

235 :return: Returns the result object. 

236 """ # noqa: E501 

237 

238 _param = self._delete_visitor_data_serialize( 

239 visitor_id=visitor_id, 

240 _request_auth=_request_auth, 

241 _content_type=_content_type, 

242 _headers=_headers, 

243 ) 

244 

245 _response_types_map: dict[str, Optional[str]] = { 

246 '200': None, 

247 '400': 'ErrorResponse', 

248 '403': 'ErrorResponse', 

249 '404': 'ErrorResponse', 

250 '429': 'ErrorResponse', 

251 } 

252 

253 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) 

254 return response_data.response 

255 

256 def _delete_visitor_data_serialize( 

257 self, 

258 visitor_id: str, 

259 _request_auth: Optional[dict[StrictStr, Any]], 

260 _content_type: Optional[StrictStr], 

261 _headers: Optional[dict[StrictStr, Any]], 

262 ) -> RequestSerialized: 

263 

264 _collection_formats: dict[str, str] = {} 

265 

266 _path_params: dict[str, str] = {} 

267 _query_params: list[tuple[str, ParamValue]] = [] 

268 _header_params: dict[str, Optional[str]] = _headers or {} 

269 _form_params: list[tuple[str, ParamValue]] = [] 

270 _files: dict[ 

271 str, 

272 Union[str, bytes, list[str], list[bytes], tuple[str, bytes], list[tuple[str, bytes]]], 

273 ] = {} 

274 _body_params: Optional[Any] = None 

275 

276 # process the path parameters 

277 if visitor_id is not None: 

278 _path_params['visitor_id'] = visitor_id 

279 

280 # set the HTTP header `Accept` 

281 if 'Accept' not in _header_params: 

282 _header_params['Accept'] = self.api_client.select_header_accept(['application/json']) 

283 

284 # authentication setting 

285 _auth_settings: list[str] = ['bearerAuth'] 

286 

287 return self.api_client.param_serialize( 

288 method='DELETE', 

289 resource_path='/visitors/{visitor_id}', 

290 path_params=_path_params, 

291 query_params=_query_params, 

292 header_params=_header_params, 

293 body=_body_params, 

294 post_params=_form_params, 

295 files=_files, 

296 auth_settings=_auth_settings, 

297 collection_formats=_collection_formats, 

298 _request_auth=_request_auth, 

299 ) 

300 

301 @validate_call 

302 def get_event( 

303 self, 

304 event_id: Annotated[ 

305 StrictStr, 

306 Field( 

307 description='The unique [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id) of each identification request (`requestId` can be used in its place).' 

308 ), 

309 ], 

310 ruleset_id: Annotated[ 

311 Optional[StrictStr], 

312 Field( 

313 description='The ID of the ruleset to evaluate against the event, producing the action to take for this event. The resulting action is returned in the `rule_action` attribute of the response. ' 

314 ), 

315 ] = None, 

316 _request_timeout: Union[ 

317 None, 

318 Annotated[StrictFloat, Field(gt=0)], 

319 tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], 

320 ] = None, 

321 _request_auth: Optional[dict[StrictStr, Any]] = None, 

322 _content_type: Optional[StrictStr] = None, 

323 _headers: Optional[dict[StrictStr, Any]] = None, 

324 ) -> Event: 

325 """Get an event by event ID 

326 

327 Get a detailed analysis of an individual identification event, including Smart Signals. Use `event_id` as the URL path parameter. This API method is scoped to a request, i.e. all returned information is by `event_id`. 

328 

329 :param event_id: The unique [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id) of each identification request (`requestId` can be used in its place). (required) 

330 :type event_id: str 

331 :param ruleset_id: The ID of the ruleset to evaluate against the event, producing the action to take for this event. The resulting action is returned in the `rule_action` attribute of the response. 

332 :type ruleset_id: str 

333 :param _request_timeout: timeout setting for this request. If one 

334 number provided, it will be total request 

335 timeout. It can also be a pair (tuple) of 

336 (connection, read) timeouts. 

337 :type _request_timeout: int, tuple(int, int), optional 

338 :param _request_auth: set to override the auth_settings for an a single 

339 request; this effectively ignores the 

340 authentication in the spec for a single request. 

341 :type _request_auth: dict, optional 

342 :param _content_type: force content-type for the request. 

343 :type _content_type: str, Optional 

344 :param _headers: set to override the headers for a single 

345 request; this effectively ignores the headers 

346 in the spec for a single request. 

347 :type _headers: dict, optional 

348 :return: Returns the result object. 

349 """ # noqa: E501 

350 

351 _param = self._get_event_serialize( 

352 event_id=event_id, 

353 ruleset_id=ruleset_id, 

354 _request_auth=_request_auth, 

355 _content_type=_content_type, 

356 _headers=_headers, 

357 ) 

358 

359 _response_types_map: dict[str, Optional[str]] = { 

360 '200': 'Event', 

361 '400': 'ErrorResponse', 

362 '403': 'ErrorResponse', 

363 '404': 'ErrorResponse', 

364 '429': 'ErrorResponse', 

365 '500': 'ErrorResponse', 

366 } 

367 

368 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) 

369 response_data.read() 

370 return self.api_client.response_deserialize( 

371 response_data=response_data, 

372 response_types_map=_response_types_map, 

373 ).data 

374 

375 @validate_call 

376 def get_event_with_http_info( 

377 self, 

378 event_id: Annotated[ 

379 StrictStr, 

380 Field( 

381 description='The unique [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id) of each identification request (`requestId` can be used in its place).' 

382 ), 

383 ], 

384 ruleset_id: Annotated[ 

385 Optional[StrictStr], 

386 Field( 

387 description='The ID of the ruleset to evaluate against the event, producing the action to take for this event. The resulting action is returned in the `rule_action` attribute of the response. ' 

388 ), 

389 ] = None, 

390 _request_timeout: Union[ 

391 None, 

392 Annotated[StrictFloat, Field(gt=0)], 

393 tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], 

394 ] = None, 

395 _request_auth: Optional[dict[StrictStr, Any]] = None, 

396 _content_type: Optional[StrictStr] = None, 

397 _headers: Optional[dict[StrictStr, Any]] = None, 

398 ) -> ApiResponse[Event]: 

399 """Get an event by event ID 

400 

401 Get a detailed analysis of an individual identification event, including Smart Signals. Use `event_id` as the URL path parameter. This API method is scoped to a request, i.e. all returned information is by `event_id`. 

402 

403 :param event_id: The unique [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id) of each identification request (`requestId` can be used in its place). (required) 

404 :type event_id: str 

405 :param ruleset_id: The ID of the ruleset to evaluate against the event, producing the action to take for this event. The resulting action is returned in the `rule_action` attribute of the response. 

406 :type ruleset_id: str 

407 :param _request_timeout: timeout setting for this request. If one 

408 number provided, it will be total request 

409 timeout. It can also be a pair (tuple) of 

410 (connection, read) timeouts. 

411 :type _request_timeout: int, tuple(int, int), optional 

412 :param _request_auth: set to override the auth_settings for an a single 

413 request; this effectively ignores the 

414 authentication in the spec for a single request. 

415 :type _request_auth: dict, optional 

416 :param _content_type: force content-type for the request. 

417 :type _content_type: str, Optional 

418 :param _headers: set to override the headers for a single 

419 request; this effectively ignores the headers 

420 in the spec for a single request. 

421 :type _headers: dict, optional 

422 :return: Returns the result object. 

423 """ # noqa: E501 

424 

425 _param = self._get_event_serialize( 

426 event_id=event_id, 

427 ruleset_id=ruleset_id, 

428 _request_auth=_request_auth, 

429 _content_type=_content_type, 

430 _headers=_headers, 

431 ) 

432 

433 _response_types_map: dict[str, Optional[str]] = { 

434 '200': 'Event', 

435 '400': 'ErrorResponse', 

436 '403': 'ErrorResponse', 

437 '404': 'ErrorResponse', 

438 '429': 'ErrorResponse', 

439 '500': 'ErrorResponse', 

440 } 

441 

442 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) 

443 response_data.read() 

444 return self.api_client.response_deserialize( 

445 response_data=response_data, 

446 response_types_map=_response_types_map, 

447 ) 

448 

449 @validate_call 

450 def get_event_without_preload_content( 

451 self, 

452 event_id: Annotated[ 

453 StrictStr, 

454 Field( 

455 description='The unique [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id) of each identification request (`requestId` can be used in its place).' 

456 ), 

457 ], 

458 ruleset_id: Annotated[ 

459 Optional[StrictStr], 

460 Field( 

461 description='The ID of the ruleset to evaluate against the event, producing the action to take for this event. The resulting action is returned in the `rule_action` attribute of the response. ' 

462 ), 

463 ] = None, 

464 _request_timeout: Union[ 

465 None, 

466 Annotated[StrictFloat, Field(gt=0)], 

467 tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], 

468 ] = None, 

469 _request_auth: Optional[dict[StrictStr, Any]] = None, 

470 _content_type: Optional[StrictStr] = None, 

471 _headers: Optional[dict[StrictStr, Any]] = None, 

472 ) -> RESTResponseType: 

473 """Get an event by event ID 

474 

475 Get a detailed analysis of an individual identification event, including Smart Signals. Use `event_id` as the URL path parameter. This API method is scoped to a request, i.e. all returned information is by `event_id`. 

476 

477 :param event_id: The unique [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id) of each identification request (`requestId` can be used in its place). (required) 

478 :type event_id: str 

479 :param ruleset_id: The ID of the ruleset to evaluate against the event, producing the action to take for this event. The resulting action is returned in the `rule_action` attribute of the response. 

480 :type ruleset_id: str 

481 :param _request_timeout: timeout setting for this request. If one 

482 number provided, it will be total request 

483 timeout. It can also be a pair (tuple) of 

484 (connection, read) timeouts. 

485 :type _request_timeout: int, tuple(int, int), optional 

486 :param _request_auth: set to override the auth_settings for an a single 

487 request; this effectively ignores the 

488 authentication in the spec for a single request. 

489 :type _request_auth: dict, optional 

490 :param _content_type: force content-type for the request. 

491 :type _content_type: str, Optional 

492 :param _headers: set to override the headers for a single 

493 request; this effectively ignores the headers 

494 in the spec for a single request. 

495 :type _headers: dict, optional 

496 :return: Returns the result object. 

497 """ # noqa: E501 

498 

499 _param = self._get_event_serialize( 

500 event_id=event_id, 

501 ruleset_id=ruleset_id, 

502 _request_auth=_request_auth, 

503 _content_type=_content_type, 

504 _headers=_headers, 

505 ) 

506 

507 _response_types_map: dict[str, Optional[str]] = { 

508 '200': 'Event', 

509 '400': 'ErrorResponse', 

510 '403': 'ErrorResponse', 

511 '404': 'ErrorResponse', 

512 '429': 'ErrorResponse', 

513 '500': 'ErrorResponse', 

514 } 

515 

516 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) 

517 return response_data.response 

518 

519 def _get_event_serialize( 

520 self, 

521 event_id: str, 

522 ruleset_id: Optional[str], 

523 _request_auth: Optional[dict[StrictStr, Any]], 

524 _content_type: Optional[StrictStr], 

525 _headers: Optional[dict[StrictStr, Any]], 

526 ) -> RequestSerialized: 

527 

528 _collection_formats: dict[str, str] = {} 

529 

530 _path_params: dict[str, str] = {} 

531 _query_params: list[tuple[str, ParamValue]] = [] 

532 _header_params: dict[str, Optional[str]] = _headers or {} 

533 _form_params: list[tuple[str, ParamValue]] = [] 

534 _files: dict[ 

535 str, 

536 Union[str, bytes, list[str], list[bytes], tuple[str, bytes], list[tuple[str, bytes]]], 

537 ] = {} 

538 _body_params: Optional[Any] = None 

539 

540 # process the path parameters 

541 if event_id is not None: 

542 _path_params['event_id'] = event_id 

543 

544 # process the query parameters 

545 if ruleset_id is not None: 

546 _query_params.append(('ruleset_id', ruleset_id)) 

547 

548 # set the HTTP header `Accept` 

549 if 'Accept' not in _header_params: 

550 _header_params['Accept'] = self.api_client.select_header_accept(['application/json']) 

551 

552 # authentication setting 

553 _auth_settings: list[str] = ['bearerAuth'] 

554 

555 return self.api_client.param_serialize( 

556 method='GET', 

557 resource_path='/events/{event_id}', 

558 path_params=_path_params, 

559 query_params=_query_params, 

560 header_params=_header_params, 

561 body=_body_params, 

562 post_params=_form_params, 

563 files=_files, 

564 auth_settings=_auth_settings, 

565 collection_formats=_collection_formats, 

566 _request_auth=_request_auth, 

567 ) 

568 

569 @validate_call 

570 def search_events( 

571 self, 

572 limit: Annotated[ 

573 Optional[Annotated[int, Field(le=100, strict=True, ge=1)]], 

574 Field( 

575 description='Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. ' 

576 ), 

577 ] = None, 

578 pagination_key: Annotated[ 

579 Optional[StrictStr], 

580 Field( 

581 description='Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` ' 

582 ), 

583 ] = None, 

584 visitor_id: Annotated[ 

585 Optional[StrictStr], 

586 Field( 

587 description='Unique [visitor identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) issued by Fingerprint Identification and all active Smart Signals. Filter events by matching Visitor ID (`identification.visitor_id` property). ' 

588 ), 

589 ] = None, 

590 high_recall_id: Annotated[ 

591 Optional[StrictStr], 

592 Field( 

593 description='The High Recall ID is a supplementary browser identifier designed for use cases that require wider coverage over precision. Compared to the standard visitor ID, the High Recall ID strives to match incoming browsers more generously (rather than precisely) with existing browsers and thus identifies fewer browsers as new. The High Recall ID is best suited for use cases that are sensitive to browsers being identified as new and where mismatched browsers are not detrimental. Filter events by matching High Recall ID (`supplementary_id_high_recall.visitor_id` property). ' 

594 ), 

595 ] = None, 

596 bot: Annotated[ 

597 Optional[SearchEventsBot], 

598 Field( 

599 description='Filter events by the Bot Detection result, specifically: `all` - events where any kind of bot was detected. `good` - events where a good bot was detected. `bad` - events where a bad bot was detected. `none` - events where no bot was detected. > Note: When using this parameter, only events with the `bot` property set to a valid value are returned. Events without a `bot` Smart Signal result are left out of the response. ' 

600 ), 

601 ] = None, 

602 bot_info: Annotated[ 

603 Optional[SearchEventsBotInfo], 

604 Field( 

605 description='Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. ' 

606 ), 

607 ] = None, 

608 bot_info_category: Annotated[ 

609 Optional[list[BotInfoCategory]], 

610 Field( 

611 description='Filter events by their Bot Info Category. Multiple categories can be provided using the repeated keys syntax. For example, `bot_info_category=ai_agent&bot_info_category=ai_assistant`, will match events with a Bot Info Category of `ai_agent` or `ai_assistant`. Other notations like comma-separated or bracket notation are not supported. ' 

612 ), 

613 ] = None, 

614 bot_info_identity: Annotated[ 

615 Optional[list[BotInfoIdentity]], 

616 Field( 

617 description='Filter events by their Bot Info Identity type. Multiple identity types can be provided using the repeated keys syntax. For example, `bot_info_identity=verified&bot_info_identity=signed`, will match events with a Bot Info Identity of `verified` or `signed`. Other notations like comma-separated or bracket notation are not supported. ' 

618 ), 

619 ] = None, 

620 bot_info_confidence: Annotated[ 

621 Optional[list[BotInfoConfidence]], 

622 Field( 

623 description='Filter events by their Bot Info Confidence. Multiple confidences can be provided using the repeated keys syntax. For example, `bot_info_confidence=high&bot_info_confidence=medium`, will match events with a Bot Info Confidence of `high` or `medium`. Other notations like comma-separated or bracket notation are not supported. ' 

624 ), 

625 ] = None, 

626 bot_info_provider: Annotated[ 

627 Optional[list[StrictStr]], 

628 Field( 

629 description='Filter events by their Bot Info Provider. The provider must match exactly, partial or wildcard matching is not supported. Multiple Providers can be provided using the repeated keys syntax. For example, `bot_info_provider=OpenAI&bot_info_provider=AWS`, will match events with a Bot Info Provider of `OpenAI` or `AWS`. Other notations like comma-separated or bracket notation are not supported. ' 

630 ), 

631 ] = None, 

632 bot_info_name: Annotated[ 

633 Optional[list[StrictStr]], 

634 Field( 

635 description='Filter events by their Bot Info Name. The name must match exactly, partial or wildcard matching is not supported. Multiple Names can be provided using the repeated keys syntax. For example, `bot_info_name=ChatGPT%20Agent&bot_info_name=Bedrock%20AgentCore`, will match events with a Bot Info Name of `ChatGPT Agent` or `Bedrock AgentCore`. Other notations like comma-separated or bracket notation are not supported. ' 

636 ), 

637 ] = None, 

638 ip_address: Annotated[ 

639 Optional[StrictStr], 

640 Field( 

641 description='Filter events by IP address or IP range (if CIDR notation is used). If CIDR notation is not used, a /32 for IPv4 or /128 for IPv6 is assumed. Examples of range based queries: 10.0.0.0/24, 192.168.0.1/32 ' 

642 ), 

643 ] = None, 

644 asn: Annotated[ 

645 Optional[StrictStr], 

646 Field( 

647 description="Filter events by the ASN associated with the event's IP address. This corresponds to the `ip_info.(v4|v6).asn` property in the response. " 

648 ), 

649 ] = None, 

650 linked_id: Annotated[ 

651 Optional[StrictStr], 

652 Field( 

653 description='Filter events by your custom identifier. You can use [linked Ids](https://docs.fingerprint.com/reference/js-agent-v4-get-function#linkedid) to associate identification requests with your own identifier, for example, session Id, purchase Id, or transaction Id. You can then use this `linked_id` parameter to retrieve all events associated with your custom identifier. ' 

654 ), 

655 ] = None, 

656 url: Annotated[ 

657 Optional[StrictStr], 

658 Field( 

659 description='Filter events by the URL (`url` property) associated with the event. ' 

660 ), 

661 ] = None, 

662 bundle_id: Annotated[ 

663 Optional[StrictStr], 

664 Field(description='Filter events by the Bundle ID (iOS) associated with the event. '), 

665 ] = None, 

666 package_name: Annotated[ 

667 Optional[StrictStr], 

668 Field( 

669 description='Filter events by the Package Name (Android) associated with the event. ' 

670 ), 

671 ] = None, 

672 origin: Annotated[ 

673 Optional[StrictStr], 

674 Field( 

675 description='Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) ' 

676 ), 

677 ] = None, 

678 start: Annotated[ 

679 Optional[SearchEventsStartParameter], 

680 Field( 

681 description="Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. ", 

682 ), 

683 ] = None, 

684 end: Annotated[ 

685 Optional[SearchEventsEndParameter], 

686 Field( 

687 description="Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. ", 

688 ), 

689 ] = None, 

690 reverse: Annotated[ 

691 Optional[StrictBool], 

692 Field( 

693 description='When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). ' 

694 ), 

695 ] = None, 

696 suspect: Annotated[ 

697 Optional[StrictBool], 

698 Field( 

699 description='Filter events previously tagged as suspicious via the [Update API](https://docs.fingerprint.com/reference/server-api-v4-update-event). > Note: When using this parameter, only events with the `suspect` property explicitly set to `true` or `false` are returned. Events with undefined `suspect` property are left out of the response. ' 

700 ), 

701 ] = None, 

702 vpn: Annotated[ 

703 Optional[StrictBool], 

704 Field( 

705 description='Filter events by VPN Detection result. > Note: When using this parameter, only events with the `vpn` property set to `true` or `false` are returned. Events without a `vpn` Smart Signal result are left out of the response. ' 

706 ), 

707 ] = None, 

708 virtual_machine: Annotated[ 

709 Optional[StrictBool], 

710 Field( 

711 description='Filter events by Virtual Machine Detection result. > Note: When using this parameter, only events with the `virtual_machine` property set to `true` or `false` are returned. Events without a `virtual_machine` Smart Signal result are left out of the response. ' 

712 ), 

713 ] = None, 

714 tampering: Annotated[ 

715 Optional[StrictBool], 

716 Field( 

717 description='Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' 

718 ), 

719 ] = None, 

720 anti_detect_browser: Annotated[ 

721 Optional[StrictBool], 

722 Field( 

723 description='Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' 

724 ), 

725 ] = None, 

726 incognito: Annotated[ 

727 Optional[StrictBool], 

728 Field( 

729 description='Filter events by Browser Incognito Detection result. > Note: When using this parameter, only events with the `incognito` property set to `true` or `false` are returned. Events without an `incognito` Smart Signal result are left out of the response. ' 

730 ), 

731 ] = None, 

732 privacy_settings: Annotated[ 

733 Optional[StrictBool], 

734 Field( 

735 description='Filter events by Privacy Settings Detection result. > Note: When using this parameter, only events with the `privacy_settings` property set to `true` or `false` are returned. Events without a `privacy_settings` Smart Signal result are left out of the response. ' 

736 ), 

737 ] = None, 

738 jailbroken: Annotated[ 

739 Optional[StrictBool], 

740 Field( 

741 description='Filter events by Jailbroken Device Detection result. > Note: When using this parameter, only events with the `jailbroken` property set to `true` or `false` are returned. Events without a `jailbroken` Smart Signal result are left out of the response. ' 

742 ), 

743 ] = None, 

744 frida: Annotated[ 

745 Optional[StrictBool], 

746 Field( 

747 description='Filter events by Frida Detection result. > Note: When using this parameter, only events with the `frida` property set to `true` or `false` are returned. Events without a `frida` Smart Signal result are left out of the response. ' 

748 ), 

749 ] = None, 

750 factory_reset: Annotated[ 

751 Optional[StrictBool], 

752 Field( 

753 description='Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. ' 

754 ), 

755 ] = None, 

756 cloned_app: Annotated[ 

757 Optional[StrictBool], 

758 Field( 

759 description='Filter events by Cloned App Detection result. > Note: When using this parameter, only events with the `cloned_app` property set to `true` or `false` are returned. Events without a `cloned_app` Smart Signal result are left out of the response. ' 

760 ), 

761 ] = None, 

762 emulator: Annotated[ 

763 Optional[StrictBool], 

764 Field( 

765 description='Filter events by Android Emulator Detection result. > Note: When using this parameter, only events with the `emulator` property set to `true` or `false` are returned. Events without an `emulator` Smart Signal result are left out of the response. ' 

766 ), 

767 ] = None, 

768 root_apps: Annotated[ 

769 Optional[StrictBool], 

770 Field( 

771 description='Filter events by Rooted Device Detection result. > Note: When using this parameter, only events with the `root_apps` property set to `true` or `false` are returned. Events without a `root_apps` Smart Signal result are left out of the response. ' 

772 ), 

773 ] = None, 

774 vpn_confidence: Annotated[ 

775 Optional[SearchEventsVpnConfidence], 

776 Field( 

777 description='Filter events by VPN Detection result confidence level. `high` - events with high VPN Detection confidence. `medium` - events with medium VPN Detection confidence. `low` - events with low VPN Detection confidence. > Note: When using this parameter, only events with the `vpn.confidence` property set to a valid value are returned. Events without a `vpn` Smart Signal result are left out of the response. ' 

778 ), 

779 ] = None, 

780 min_suspect_score: Annotated[ 

781 Optional[Union[StrictFloat, StrictInt]], 

782 Field( 

783 description='Filter events with Suspect Score result above a provided minimum threshold. > Note: When using this parameter, only events where the `suspect_score` property set to a value exceeding your threshold are returned. Events without a `suspect_score` Smart Signal result are left out of the response. ' 

784 ), 

785 ] = None, 

786 developer_tools: Annotated[ 

787 Optional[StrictBool], 

788 Field( 

789 description='Filter events by Developer Tools detection result. > Note: When using this parameter, only events with the `developer_tools` property set to `true` or `false` are returned. Events without a `developer_tools` Smart Signal result are left out of the response. ' 

790 ), 

791 ] = None, 

792 location_spoofing: Annotated[ 

793 Optional[StrictBool], 

794 Field( 

795 description='Filter events by Location Spoofing detection result. > Note: When using this parameter, only events with the `location_spoofing` property set to `true` or `false` are returned. Events without a `location_spoofing` Smart Signal result are left out of the response. ' 

796 ), 

797 ] = None, 

798 mitm_attack: Annotated[ 

799 Optional[StrictBool], 

800 Field( 

801 description='Filter events by MITM (Man-in-the-Middle) Attack detection result. > Note: When using this parameter, only events with the `mitm_attack` property set to `true` or `false` are returned. Events without a `mitm_attack` Smart Signal result are left out of the response. ' 

802 ), 

803 ] = None, 

804 rare_device: Annotated[ 

805 Optional[StrictBool], 

806 Field( 

807 description='Filter events by Device Rarity detection result. > Note: When using this parameter, only events with the `rare_device` property set to `true` or `false` are returned. Events without a Device Rarity Smart Signal result are left out of the response. > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). ' 

808 ), 

809 ] = None, 

810 rare_device_percentile_bucket: Annotated[ 

811 Optional[SearchEventsRareDevicePercentileBucket], 

812 Field( 

813 description='Filter events by Device Rarity percentile bucket. `<p95` - device configuration is in the bottom 95% (most common). `p95-p99` - device is in the 95th to 99th percentile. `p99-p99.5` - device is in the 99th to 99.5th percentile. `p99.5-p99.9` - device is in the 99.5th to 99.9th percentile. `p99.9+` - device is in the top 0.1% (rarest). `not_seen` - device configuration has never been observed before. > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). ' 

814 ), 

815 ] = None, 

816 proxy: Annotated[ 

817 Optional[StrictBool], 

818 Field( 

819 description='Filter events by Proxy detection result. > Note: When using this parameter, only events with the `proxy` property set to `true` or `false` are returned. Events without a `proxy` Smart Signal result are left out of the response. ' 

820 ), 

821 ] = None, 

822 sdk_version: Annotated[ 

823 Optional[StrictStr], 

824 Field( 

825 description='Filter events by a specific SDK version associated with the identification event (`sdk.version` property). Example: `3.11.14` ' 

826 ), 

827 ] = None, 

828 sdk_platform: Annotated[ 

829 Optional[SearchEventsSdkPlatform], 

830 Field( 

831 description='Filter events by the SDK Platform associated with the identification event (`sdk.platform` property) . `js` - Javascript agent (Web). `ios` - Apple iOS based devices. `android` - Android based devices. ' 

832 ), 

833 ] = None, 

834 environment: Annotated[ 

835 Optional[list[StrictStr]], 

836 Field( 

837 description='Filter for events by providing one or more environment IDs (`environment_id` property). ### Array syntax To provide multiple environment IDs, use the repeated keys syntax (`environment=env1&environment=env2`). Other notations like comma-separated (`environment=env1,env2`) or bracket notation (`environment[]=env1&environment[]=env2`) are not supported. ' 

838 ), 

839 ] = None, 

840 proximity_id: Annotated[ 

841 Optional[StrictStr], 

842 Field( 

843 description='Filter events by the most precise Proximity ID provided by default. > Note: When using this parameter, only events with the `proximity.id` property matching the provided ID are returned. Events without a `proximity` result are left out of the response. ' 

844 ), 

845 ] = None, 

846 total_hits: Annotated[ 

847 Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], 

848 Field( 

849 description='When set, the response will include a `total_hits` property with a count of total query matches across all pages, up to the specified limit. ' 

850 ), 

851 ] = None, 

852 tor_node: Annotated[ 

853 Optional[StrictBool], 

854 Field( 

855 description='Filter events by Tor Node detection result. > Note: When using this parameter, only events with the `tor_node` property set to `true` or `false` are returned. Events without a `tor_node` detection result are left out of the response. ' 

856 ), 

857 ] = None, 

858 incremental_identification_status: Annotated[ 

859 Optional[SearchEventsIncrementalIdentificationStatus], 

860 Field( 

861 description='Filter events by their incremental identification status (`incremental_identification_status` property). Non incremental identification events are left out of the response. ' 

862 ), 

863 ] = None, 

864 simulator: Annotated[ 

865 Optional[StrictBool], 

866 Field( 

867 description='Filter events by iOS Simulator Detection result. > Note: When using this parameter, only events with the `simulator` property set to `true` or `false` are returned. Events without a `simulator` Smart Signal result are left out of the response. ' 

868 ), 

869 ] = None, 

870 source: Annotated[ 

871 Optional[Annotated[list[SearchEventsSource], Field(max_length=1)]], 

872 Field( 

873 description='Selects the source of events to search. When omitted, only traditional identification events generated from devices are returned (the default behavior). When set to `edge`, only Automation Intelligence (Edge) events are returned. > Note: The Automation Intelligence API is in public preview testing phase. If you encounter any issues, please [contact](https://fingerprint.com/support/) our support team. ' 

874 ), 

875 ] = None, 

876 _request_timeout: Union[ 

877 None, 

878 Annotated[StrictFloat, Field(gt=0)], 

879 tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], 

880 ] = None, 

881 _request_auth: Optional[dict[StrictStr, Any]] = None, 

882 _content_type: Optional[StrictStr] = None, 

883 _headers: Optional[dict[StrictStr, Any]] = None, 

884 ) -> EventSearch: 

885 """Search events 

886 

887 ## Search The `/v4/events` endpoint provides a convenient way to search for past events based on specific parameters. Typical use cases and queries include: - Searching for events associated with a single `visitor_id` within a time range to get historical behavior of a visitor. - Searching for events associated with a single `linked_id` within a time range to get all events associated with your internal account identifier. - Excluding all bot traffic from the query (`good` and `bad` bots) By default, the API searches events from the last 7 days, sorts them by newest first and returns the last 10 events. - Use `start` and `end` to specify the time range of the search. - Use `reverse=true` to sort the results oldest first. - Use `limit` to specify the number of events to return. - Use `pagination_key` to get the next page of results if there are more than `limit` events. ### Filtering events with the `suspect` flag The `/v4/events` endpoint unlocks a powerful method for fraud protection analytics. The `suspect` flag is exposed in all events where it was previously set by the update API. You can also apply the `suspect` query parameter as a filter to find all potentially fraudulent activity that you previously marked as `suspect`. This helps identify patterns of fraudulent behavior. ### Environment scoping If you use a secret key that is scoped to an environment, you will only get events associated with the same environment. With a workspace-scoped environment, you will get events from all environments. Smart Signals not activated for your workspace or are not included in the response. 

888 

889 :param limit: Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. 

890 :type limit: int 

891 :param pagination_key: Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` 

892 :type pagination_key: str 

893 :param visitor_id: Unique [visitor identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) issued by Fingerprint Identification and all active Smart Signals. Filter events by matching Visitor ID (`identification.visitor_id` property). 

894 :type visitor_id: str 

895 :param high_recall_id: The High Recall ID is a supplementary browser identifier designed for use cases that require wider coverage over precision. Compared to the standard visitor ID, the High Recall ID strives to match incoming browsers more generously (rather than precisely) with existing browsers and thus identifies fewer browsers as new. The High Recall ID is best suited for use cases that are sensitive to browsers being identified as new and where mismatched browsers are not detrimental. Filter events by matching High Recall ID (`supplementary_id_high_recall.visitor_id` property). 

896 :type high_recall_id: str 

897 :param bot: Filter events by the Bot Detection result, specifically: `all` - events where any kind of bot was detected. `good` - events where a good bot was detected. `bad` - events where a bad bot was detected. `none` - events where no bot was detected. > Note: When using this parameter, only events with the `bot` property set to a valid value are returned. Events without a `bot` Smart Signal result are left out of the response. 

898 :type bot: SearchEventsBot 

899 :param bot_info: Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. 

900 :type bot_info: SearchEventsBotInfo 

901 :param bot_info_category: Filter events by their Bot Info Category. Multiple categories can be provided using the repeated keys syntax. For example, `bot_info_category=ai_agent&bot_info_category=ai_assistant`, will match events with a Bot Info Category of `ai_agent` or `ai_assistant`. Other notations like comma-separated or bracket notation are not supported. 

902 :type bot_info_category: List[BotInfoCategory] 

903 :param bot_info_identity: Filter events by their Bot Info Identity type. Multiple identity types can be provided using the repeated keys syntax. For example, `bot_info_identity=verified&bot_info_identity=signed`, will match events with a Bot Info Identity of `verified` or `signed`. Other notations like comma-separated or bracket notation are not supported. 

904 :type bot_info_identity: List[BotInfoIdentity] 

905 :param bot_info_confidence: Filter events by their Bot Info Confidence. Multiple confidences can be provided using the repeated keys syntax. For example, `bot_info_confidence=high&bot_info_confidence=medium`, will match events with a Bot Info Confidence of `high` or `medium`. Other notations like comma-separated or bracket notation are not supported. 

906 :type bot_info_confidence: List[BotInfoConfidence] 

907 :param bot_info_provider: Filter events by their Bot Info Provider. The provider must match exactly, partial or wildcard matching is not supported. Multiple Providers can be provided using the repeated keys syntax. For example, `bot_info_provider=OpenAI&bot_info_provider=AWS`, will match events with a Bot Info Provider of `OpenAI` or `AWS`. Other notations like comma-separated or bracket notation are not supported. 

908 :type bot_info_provider: List[str] 

909 :param bot_info_name: Filter events by their Bot Info Name. The name must match exactly, partial or wildcard matching is not supported. Multiple Names can be provided using the repeated keys syntax. For example, `bot_info_name=ChatGPT%20Agent&bot_info_name=Bedrock%20AgentCore`, will match events with a Bot Info Name of `ChatGPT Agent` or `Bedrock AgentCore`. Other notations like comma-separated or bracket notation are not supported. 

910 :type bot_info_name: List[str] 

911 :param ip_address: Filter events by IP address or IP range (if CIDR notation is used). If CIDR notation is not used, a /32 for IPv4 or /128 for IPv6 is assumed. Examples of range based queries: 10.0.0.0/24, 192.168.0.1/32 

912 :type ip_address: str 

913 :param asn: Filter events by the ASN associated with the event's IP address. This corresponds to the `ip_info.(v4|v6).asn` property in the response. 

914 :type asn: str 

915 :param linked_id: Filter events by your custom identifier. You can use [linked Ids](https://docs.fingerprint.com/reference/js-agent-v4-get-function#linkedid) to associate identification requests with your own identifier, for example, session Id, purchase Id, or transaction Id. You can then use this `linked_id` parameter to retrieve all events associated with your custom identifier. 

916 :type linked_id: str 

917 :param url: Filter events by the URL (`url` property) associated with the event. 

918 :type url: str 

919 :param bundle_id: Filter events by the Bundle ID (iOS) associated with the event. 

920 :type bundle_id: str 

921 :param package_name: Filter events by the Package Name (Android) associated with the event. 

922 :type package_name: str 

923 :param origin: Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) 

924 :type origin: str 

925 :param start: Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. 

926 :type start: SearchEventsStartParameter 

927 :param end: Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. 

928 :type end: SearchEventsEndParameter 

929 :param reverse: When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). 

930 :type reverse: bool 

931 :param suspect: Filter events previously tagged as suspicious via the [Update API](https://docs.fingerprint.com/reference/server-api-v4-update-event). > Note: When using this parameter, only events with the `suspect` property explicitly set to `true` or `false` are returned. Events with undefined `suspect` property are left out of the response. 

932 :type suspect: bool 

933 :param vpn: Filter events by VPN Detection result. > Note: When using this parameter, only events with the `vpn` property set to `true` or `false` are returned. Events without a `vpn` Smart Signal result are left out of the response. 

934 :type vpn: bool 

935 :param virtual_machine: Filter events by Virtual Machine Detection result. > Note: When using this parameter, only events with the `virtual_machine` property set to `true` or `false` are returned. Events without a `virtual_machine` Smart Signal result are left out of the response. 

936 :type virtual_machine: bool 

937 :param tampering: Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. 

938 :type tampering: bool 

939 :param anti_detect_browser: Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. 

940 :type anti_detect_browser: bool 

941 :param incognito: Filter events by Browser Incognito Detection result. > Note: When using this parameter, only events with the `incognito` property set to `true` or `false` are returned. Events without an `incognito` Smart Signal result are left out of the response. 

942 :type incognito: bool 

943 :param privacy_settings: Filter events by Privacy Settings Detection result. > Note: When using this parameter, only events with the `privacy_settings` property set to `true` or `false` are returned. Events without a `privacy_settings` Smart Signal result are left out of the response. 

944 :type privacy_settings: bool 

945 :param jailbroken: Filter events by Jailbroken Device Detection result. > Note: When using this parameter, only events with the `jailbroken` property set to `true` or `false` are returned. Events without a `jailbroken` Smart Signal result are left out of the response. 

946 :type jailbroken: bool 

947 :param frida: Filter events by Frida Detection result. > Note: When using this parameter, only events with the `frida` property set to `true` or `false` are returned. Events without a `frida` Smart Signal result are left out of the response. 

948 :type frida: bool 

949 :param factory_reset: Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. 

950 :type factory_reset: bool 

951 :param cloned_app: Filter events by Cloned App Detection result. > Note: When using this parameter, only events with the `cloned_app` property set to `true` or `false` are returned. Events without a `cloned_app` Smart Signal result are left out of the response. 

952 :type cloned_app: bool 

953 :param emulator: Filter events by Android Emulator Detection result. > Note: When using this parameter, only events with the `emulator` property set to `true` or `false` are returned. Events without an `emulator` Smart Signal result are left out of the response. 

954 :type emulator: bool 

955 :param root_apps: Filter events by Rooted Device Detection result. > Note: When using this parameter, only events with the `root_apps` property set to `true` or `false` are returned. Events without a `root_apps` Smart Signal result are left out of the response. 

956 :type root_apps: bool 

957 :param vpn_confidence: Filter events by VPN Detection result confidence level. `high` - events with high VPN Detection confidence. `medium` - events with medium VPN Detection confidence. `low` - events with low VPN Detection confidence. > Note: When using this parameter, only events with the `vpn.confidence` property set to a valid value are returned. Events without a `vpn` Smart Signal result are left out of the response. 

958 :type vpn_confidence: SearchEventsVpnConfidence 

959 :param min_suspect_score: Filter events with Suspect Score result above a provided minimum threshold. > Note: When using this parameter, only events where the `suspect_score` property set to a value exceeding your threshold are returned. Events without a `suspect_score` Smart Signal result are left out of the response. 

960 :type min_suspect_score: float 

961 :param developer_tools: Filter events by Developer Tools detection result. > Note: When using this parameter, only events with the `developer_tools` property set to `true` or `false` are returned. Events without a `developer_tools` Smart Signal result are left out of the response. 

962 :type developer_tools: bool 

963 :param location_spoofing: Filter events by Location Spoofing detection result. > Note: When using this parameter, only events with the `location_spoofing` property set to `true` or `false` are returned. Events without a `location_spoofing` Smart Signal result are left out of the response. 

964 :type location_spoofing: bool 

965 :param mitm_attack: Filter events by MITM (Man-in-the-Middle) Attack detection result. > Note: When using this parameter, only events with the `mitm_attack` property set to `true` or `false` are returned. Events without a `mitm_attack` Smart Signal result are left out of the response. 

966 :type mitm_attack: bool 

967 :param rare_device: Filter events by Device Rarity detection result. > Note: When using this parameter, only events with the `rare_device` property set to `true` or `false` are returned. Events without a Device Rarity Smart Signal result are left out of the response. > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). 

968 :type rare_device: bool 

969 :param rare_device_percentile_bucket: Filter events by Device Rarity percentile bucket. `<p95` - device configuration is in the bottom 95% (most common). `p95-p99` - device is in the 95th to 99th percentile. `p99-p99.5` - device is in the 99th to 99.5th percentile. `p99.5-p99.9` - device is in the 99.5th to 99.9th percentile. `p99.9+` - device is in the top 0.1% (rarest). `not_seen` - device configuration has never been observed before. > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). 

970 :type rare_device_percentile_bucket: SearchEventsRareDevicePercentileBucket 

971 :param proxy: Filter events by Proxy detection result. > Note: When using this parameter, only events with the `proxy` property set to `true` or `false` are returned. Events without a `proxy` Smart Signal result are left out of the response. 

972 :type proxy: bool 

973 :param sdk_version: Filter events by a specific SDK version associated with the identification event (`sdk.version` property). Example: `3.11.14` 

974 :type sdk_version: str 

975 :param sdk_platform: Filter events by the SDK Platform associated with the identification event (`sdk.platform` property) . `js` - Javascript agent (Web). `ios` - Apple iOS based devices. `android` - Android based devices. 

976 :type sdk_platform: SearchEventsSdkPlatform 

977 :param environment: Filter for events by providing one or more environment IDs (`environment_id` property). ### Array syntax To provide multiple environment IDs, use the repeated keys syntax (`environment=env1&environment=env2`). Other notations like comma-separated (`environment=env1,env2`) or bracket notation (`environment[]=env1&environment[]=env2`) are not supported. 

978 :type environment: List[str] 

979 :param proximity_id: Filter events by the most precise Proximity ID provided by default. > Note: When using this parameter, only events with the `proximity.id` property matching the provided ID are returned. Events without a `proximity` result are left out of the response. 

980 :type proximity_id: str 

981 :param total_hits: When set, the response will include a `total_hits` property with a count of total query matches across all pages, up to the specified limit. 

982 :type total_hits: int 

983 :param tor_node: Filter events by Tor Node detection result. > Note: When using this parameter, only events with the `tor_node` property set to `true` or `false` are returned. Events without a `tor_node` detection result are left out of the response. 

984 :type tor_node: bool 

985 :param incremental_identification_status: Filter events by their incremental identification status (`incremental_identification_status` property). Non incremental identification events are left out of the response. 

986 :type incremental_identification_status: SearchEventsIncrementalIdentificationStatus 

987 :param simulator: Filter events by iOS Simulator Detection result. > Note: When using this parameter, only events with the `simulator` property set to `true` or `false` are returned. Events without a `simulator` Smart Signal result are left out of the response. 

988 :type simulator: bool 

989 :param source: Selects the source of events to search. When omitted, only traditional identification events generated from devices are returned (the default behavior). When set to `edge`, only Automation Intelligence (Edge) events are returned. > Note: The Automation Intelligence API is in public preview testing phase. If you encounter any issues, please [contact](https://fingerprint.com/support/) our support team. 

990 :type source: List[SearchEventsSource] 

991 :param _request_timeout: timeout setting for this request. If one 

992 number provided, it will be total request 

993 timeout. It can also be a pair (tuple) of 

994 (connection, read) timeouts. 

995 :type _request_timeout: int, tuple(int, int), optional 

996 :param _request_auth: set to override the auth_settings for an a single 

997 request; this effectively ignores the 

998 authentication in the spec for a single request. 

999 :type _request_auth: dict, optional 

1000 :param _content_type: force content-type for the request. 

1001 :type _content_type: str, Optional 

1002 :param _headers: set to override the headers for a single 

1003 request; this effectively ignores the headers 

1004 in the spec for a single request. 

1005 :type _headers: dict, optional 

1006 :return: Returns the result object. 

1007 """ # noqa: E501 

1008 

1009 _param = self._search_events_serialize( 

1010 limit=limit, 

1011 pagination_key=pagination_key, 

1012 visitor_id=visitor_id, 

1013 high_recall_id=high_recall_id, 

1014 bot=bot, 

1015 bot_info=bot_info, 

1016 bot_info_category=bot_info_category, 

1017 bot_info_identity=bot_info_identity, 

1018 bot_info_confidence=bot_info_confidence, 

1019 bot_info_provider=bot_info_provider, 

1020 bot_info_name=bot_info_name, 

1021 ip_address=ip_address, 

1022 asn=asn, 

1023 linked_id=linked_id, 

1024 url=url, 

1025 bundle_id=bundle_id, 

1026 package_name=package_name, 

1027 origin=origin, 

1028 start=start, 

1029 end=end, 

1030 reverse=reverse, 

1031 suspect=suspect, 

1032 vpn=vpn, 

1033 virtual_machine=virtual_machine, 

1034 tampering=tampering, 

1035 anti_detect_browser=anti_detect_browser, 

1036 incognito=incognito, 

1037 privacy_settings=privacy_settings, 

1038 jailbroken=jailbroken, 

1039 frida=frida, 

1040 factory_reset=factory_reset, 

1041 cloned_app=cloned_app, 

1042 emulator=emulator, 

1043 root_apps=root_apps, 

1044 vpn_confidence=vpn_confidence, 

1045 min_suspect_score=min_suspect_score, 

1046 developer_tools=developer_tools, 

1047 location_spoofing=location_spoofing, 

1048 mitm_attack=mitm_attack, 

1049 rare_device=rare_device, 

1050 rare_device_percentile_bucket=rare_device_percentile_bucket, 

1051 proxy=proxy, 

1052 sdk_version=sdk_version, 

1053 sdk_platform=sdk_platform, 

1054 environment=environment, 

1055 proximity_id=proximity_id, 

1056 total_hits=total_hits, 

1057 tor_node=tor_node, 

1058 incremental_identification_status=incremental_identification_status, 

1059 simulator=simulator, 

1060 source=source, 

1061 _request_auth=_request_auth, 

1062 _content_type=_content_type, 

1063 _headers=_headers, 

1064 ) 

1065 

1066 _response_types_map: dict[str, Optional[str]] = { 

1067 '200': 'EventSearch', 

1068 '400': 'ErrorResponse', 

1069 '403': 'ErrorResponse', 

1070 '404': 'ErrorResponse', 

1071 '500': 'ErrorResponse', 

1072 } 

1073 

1074 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) 

1075 response_data.read() 

1076 return self.api_client.response_deserialize( 

1077 response_data=response_data, 

1078 response_types_map=_response_types_map, 

1079 ).data 

1080 

1081 @validate_call 

1082 def search_events_with_http_info( 

1083 self, 

1084 limit: Annotated[ 

1085 Optional[Annotated[int, Field(le=100, strict=True, ge=1)]], 

1086 Field( 

1087 description='Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. ' 

1088 ), 

1089 ] = None, 

1090 pagination_key: Annotated[ 

1091 Optional[StrictStr], 

1092 Field( 

1093 description='Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` ' 

1094 ), 

1095 ] = None, 

1096 visitor_id: Annotated[ 

1097 Optional[StrictStr], 

1098 Field( 

1099 description='Unique [visitor identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) issued by Fingerprint Identification and all active Smart Signals. Filter events by matching Visitor ID (`identification.visitor_id` property). ' 

1100 ), 

1101 ] = None, 

1102 high_recall_id: Annotated[ 

1103 Optional[StrictStr], 

1104 Field( 

1105 description='The High Recall ID is a supplementary browser identifier designed for use cases that require wider coverage over precision. Compared to the standard visitor ID, the High Recall ID strives to match incoming browsers more generously (rather than precisely) with existing browsers and thus identifies fewer browsers as new. The High Recall ID is best suited for use cases that are sensitive to browsers being identified as new and where mismatched browsers are not detrimental. Filter events by matching High Recall ID (`supplementary_id_high_recall.visitor_id` property). ' 

1106 ), 

1107 ] = None, 

1108 bot: Annotated[ 

1109 Optional[SearchEventsBot], 

1110 Field( 

1111 description='Filter events by the Bot Detection result, specifically: `all` - events where any kind of bot was detected. `good` - events where a good bot was detected. `bad` - events where a bad bot was detected. `none` - events where no bot was detected. > Note: When using this parameter, only events with the `bot` property set to a valid value are returned. Events without a `bot` Smart Signal result are left out of the response. ' 

1112 ), 

1113 ] = None, 

1114 bot_info: Annotated[ 

1115 Optional[SearchEventsBotInfo], 

1116 Field( 

1117 description='Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. ' 

1118 ), 

1119 ] = None, 

1120 bot_info_category: Annotated[ 

1121 Optional[list[BotInfoCategory]], 

1122 Field( 

1123 description='Filter events by their Bot Info Category. Multiple categories can be provided using the repeated keys syntax. For example, `bot_info_category=ai_agent&bot_info_category=ai_assistant`, will match events with a Bot Info Category of `ai_agent` or `ai_assistant`. Other notations like comma-separated or bracket notation are not supported. ' 

1124 ), 

1125 ] = None, 

1126 bot_info_identity: Annotated[ 

1127 Optional[list[BotInfoIdentity]], 

1128 Field( 

1129 description='Filter events by their Bot Info Identity type. Multiple identity types can be provided using the repeated keys syntax. For example, `bot_info_identity=verified&bot_info_identity=signed`, will match events with a Bot Info Identity of `verified` or `signed`. Other notations like comma-separated or bracket notation are not supported. ' 

1130 ), 

1131 ] = None, 

1132 bot_info_confidence: Annotated[ 

1133 Optional[list[BotInfoConfidence]], 

1134 Field( 

1135 description='Filter events by their Bot Info Confidence. Multiple confidences can be provided using the repeated keys syntax. For example, `bot_info_confidence=high&bot_info_confidence=medium`, will match events with a Bot Info Confidence of `high` or `medium`. Other notations like comma-separated or bracket notation are not supported. ' 

1136 ), 

1137 ] = None, 

1138 bot_info_provider: Annotated[ 

1139 Optional[list[StrictStr]], 

1140 Field( 

1141 description='Filter events by their Bot Info Provider. The provider must match exactly, partial or wildcard matching is not supported. Multiple Providers can be provided using the repeated keys syntax. For example, `bot_info_provider=OpenAI&bot_info_provider=AWS`, will match events with a Bot Info Provider of `OpenAI` or `AWS`. Other notations like comma-separated or bracket notation are not supported. ' 

1142 ), 

1143 ] = None, 

1144 bot_info_name: Annotated[ 

1145 Optional[list[StrictStr]], 

1146 Field( 

1147 description='Filter events by their Bot Info Name. The name must match exactly, partial or wildcard matching is not supported. Multiple Names can be provided using the repeated keys syntax. For example, `bot_info_name=ChatGPT%20Agent&bot_info_name=Bedrock%20AgentCore`, will match events with a Bot Info Name of `ChatGPT Agent` or `Bedrock AgentCore`. Other notations like comma-separated or bracket notation are not supported. ' 

1148 ), 

1149 ] = None, 

1150 ip_address: Annotated[ 

1151 Optional[StrictStr], 

1152 Field( 

1153 description='Filter events by IP address or IP range (if CIDR notation is used). If CIDR notation is not used, a /32 for IPv4 or /128 for IPv6 is assumed. Examples of range based queries: 10.0.0.0/24, 192.168.0.1/32 ' 

1154 ), 

1155 ] = None, 

1156 asn: Annotated[ 

1157 Optional[StrictStr], 

1158 Field( 

1159 description="Filter events by the ASN associated with the event's IP address. This corresponds to the `ip_info.(v4|v6).asn` property in the response. " 

1160 ), 

1161 ] = None, 

1162 linked_id: Annotated[ 

1163 Optional[StrictStr], 

1164 Field( 

1165 description='Filter events by your custom identifier. You can use [linked Ids](https://docs.fingerprint.com/reference/js-agent-v4-get-function#linkedid) to associate identification requests with your own identifier, for example, session Id, purchase Id, or transaction Id. You can then use this `linked_id` parameter to retrieve all events associated with your custom identifier. ' 

1166 ), 

1167 ] = None, 

1168 url: Annotated[ 

1169 Optional[StrictStr], 

1170 Field( 

1171 description='Filter events by the URL (`url` property) associated with the event. ' 

1172 ), 

1173 ] = None, 

1174 bundle_id: Annotated[ 

1175 Optional[StrictStr], 

1176 Field(description='Filter events by the Bundle ID (iOS) associated with the event. '), 

1177 ] = None, 

1178 package_name: Annotated[ 

1179 Optional[StrictStr], 

1180 Field( 

1181 description='Filter events by the Package Name (Android) associated with the event. ' 

1182 ), 

1183 ] = None, 

1184 origin: Annotated[ 

1185 Optional[StrictStr], 

1186 Field( 

1187 description='Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) ' 

1188 ), 

1189 ] = None, 

1190 start: Annotated[ 

1191 Optional[SearchEventsStartParameter], 

1192 Field( 

1193 description="Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. ", 

1194 ), 

1195 ] = None, 

1196 end: Annotated[ 

1197 Optional[SearchEventsEndParameter], 

1198 Field( 

1199 description="Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. ", 

1200 ), 

1201 ] = None, 

1202 reverse: Annotated[ 

1203 Optional[StrictBool], 

1204 Field( 

1205 description='When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). ' 

1206 ), 

1207 ] = None, 

1208 suspect: Annotated[ 

1209 Optional[StrictBool], 

1210 Field( 

1211 description='Filter events previously tagged as suspicious via the [Update API](https://docs.fingerprint.com/reference/server-api-v4-update-event). > Note: When using this parameter, only events with the `suspect` property explicitly set to `true` or `false` are returned. Events with undefined `suspect` property are left out of the response. ' 

1212 ), 

1213 ] = None, 

1214 vpn: Annotated[ 

1215 Optional[StrictBool], 

1216 Field( 

1217 description='Filter events by VPN Detection result. > Note: When using this parameter, only events with the `vpn` property set to `true` or `false` are returned. Events without a `vpn` Smart Signal result are left out of the response. ' 

1218 ), 

1219 ] = None, 

1220 virtual_machine: Annotated[ 

1221 Optional[StrictBool], 

1222 Field( 

1223 description='Filter events by Virtual Machine Detection result. > Note: When using this parameter, only events with the `virtual_machine` property set to `true` or `false` are returned. Events without a `virtual_machine` Smart Signal result are left out of the response. ' 

1224 ), 

1225 ] = None, 

1226 tampering: Annotated[ 

1227 Optional[StrictBool], 

1228 Field( 

1229 description='Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' 

1230 ), 

1231 ] = None, 

1232 anti_detect_browser: Annotated[ 

1233 Optional[StrictBool], 

1234 Field( 

1235 description='Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' 

1236 ), 

1237 ] = None, 

1238 incognito: Annotated[ 

1239 Optional[StrictBool], 

1240 Field( 

1241 description='Filter events by Browser Incognito Detection result. > Note: When using this parameter, only events with the `incognito` property set to `true` or `false` are returned. Events without an `incognito` Smart Signal result are left out of the response. ' 

1242 ), 

1243 ] = None, 

1244 privacy_settings: Annotated[ 

1245 Optional[StrictBool], 

1246 Field( 

1247 description='Filter events by Privacy Settings Detection result. > Note: When using this parameter, only events with the `privacy_settings` property set to `true` or `false` are returned. Events without a `privacy_settings` Smart Signal result are left out of the response. ' 

1248 ), 

1249 ] = None, 

1250 jailbroken: Annotated[ 

1251 Optional[StrictBool], 

1252 Field( 

1253 description='Filter events by Jailbroken Device Detection result. > Note: When using this parameter, only events with the `jailbroken` property set to `true` or `false` are returned. Events without a `jailbroken` Smart Signal result are left out of the response. ' 

1254 ), 

1255 ] = None, 

1256 frida: Annotated[ 

1257 Optional[StrictBool], 

1258 Field( 

1259 description='Filter events by Frida Detection result. > Note: When using this parameter, only events with the `frida` property set to `true` or `false` are returned. Events without a `frida` Smart Signal result are left out of the response. ' 

1260 ), 

1261 ] = None, 

1262 factory_reset: Annotated[ 

1263 Optional[StrictBool], 

1264 Field( 

1265 description='Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. ' 

1266 ), 

1267 ] = None, 

1268 cloned_app: Annotated[ 

1269 Optional[StrictBool], 

1270 Field( 

1271 description='Filter events by Cloned App Detection result. > Note: When using this parameter, only events with the `cloned_app` property set to `true` or `false` are returned. Events without a `cloned_app` Smart Signal result are left out of the response. ' 

1272 ), 

1273 ] = None, 

1274 emulator: Annotated[ 

1275 Optional[StrictBool], 

1276 Field( 

1277 description='Filter events by Android Emulator Detection result. > Note: When using this parameter, only events with the `emulator` property set to `true` or `false` are returned. Events without an `emulator` Smart Signal result are left out of the response. ' 

1278 ), 

1279 ] = None, 

1280 root_apps: Annotated[ 

1281 Optional[StrictBool], 

1282 Field( 

1283 description='Filter events by Rooted Device Detection result. > Note: When using this parameter, only events with the `root_apps` property set to `true` or `false` are returned. Events without a `root_apps` Smart Signal result are left out of the response. ' 

1284 ), 

1285 ] = None, 

1286 vpn_confidence: Annotated[ 

1287 Optional[SearchEventsVpnConfidence], 

1288 Field( 

1289 description='Filter events by VPN Detection result confidence level. `high` - events with high VPN Detection confidence. `medium` - events with medium VPN Detection confidence. `low` - events with low VPN Detection confidence. > Note: When using this parameter, only events with the `vpn.confidence` property set to a valid value are returned. Events without a `vpn` Smart Signal result are left out of the response. ' 

1290 ), 

1291 ] = None, 

1292 min_suspect_score: Annotated[ 

1293 Optional[Union[StrictFloat, StrictInt]], 

1294 Field( 

1295 description='Filter events with Suspect Score result above a provided minimum threshold. > Note: When using this parameter, only events where the `suspect_score` property set to a value exceeding your threshold are returned. Events without a `suspect_score` Smart Signal result are left out of the response. ' 

1296 ), 

1297 ] = None, 

1298 developer_tools: Annotated[ 

1299 Optional[StrictBool], 

1300 Field( 

1301 description='Filter events by Developer Tools detection result. > Note: When using this parameter, only events with the `developer_tools` property set to `true` or `false` are returned. Events without a `developer_tools` Smart Signal result are left out of the response. ' 

1302 ), 

1303 ] = None, 

1304 location_spoofing: Annotated[ 

1305 Optional[StrictBool], 

1306 Field( 

1307 description='Filter events by Location Spoofing detection result. > Note: When using this parameter, only events with the `location_spoofing` property set to `true` or `false` are returned. Events without a `location_spoofing` Smart Signal result are left out of the response. ' 

1308 ), 

1309 ] = None, 

1310 mitm_attack: Annotated[ 

1311 Optional[StrictBool], 

1312 Field( 

1313 description='Filter events by MITM (Man-in-the-Middle) Attack detection result. > Note: When using this parameter, only events with the `mitm_attack` property set to `true` or `false` are returned. Events without a `mitm_attack` Smart Signal result are left out of the response. ' 

1314 ), 

1315 ] = None, 

1316 rare_device: Annotated[ 

1317 Optional[StrictBool], 

1318 Field( 

1319 description='Filter events by Device Rarity detection result. > Note: When using this parameter, only events with the `rare_device` property set to `true` or `false` are returned. Events without a Device Rarity Smart Signal result are left out of the response. > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). ' 

1320 ), 

1321 ] = None, 

1322 rare_device_percentile_bucket: Annotated[ 

1323 Optional[SearchEventsRareDevicePercentileBucket], 

1324 Field( 

1325 description='Filter events by Device Rarity percentile bucket. `<p95` - device configuration is in the bottom 95% (most common). `p95-p99` - device is in the 95th to 99th percentile. `p99-p99.5` - device is in the 99th to 99.5th percentile. `p99.5-p99.9` - device is in the 99.5th to 99.9th percentile. `p99.9+` - device is in the top 0.1% (rarest). `not_seen` - device configuration has never been observed before. > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). ' 

1326 ), 

1327 ] = None, 

1328 proxy: Annotated[ 

1329 Optional[StrictBool], 

1330 Field( 

1331 description='Filter events by Proxy detection result. > Note: When using this parameter, only events with the `proxy` property set to `true` or `false` are returned. Events without a `proxy` Smart Signal result are left out of the response. ' 

1332 ), 

1333 ] = None, 

1334 sdk_version: Annotated[ 

1335 Optional[StrictStr], 

1336 Field( 

1337 description='Filter events by a specific SDK version associated with the identification event (`sdk.version` property). Example: `3.11.14` ' 

1338 ), 

1339 ] = None, 

1340 sdk_platform: Annotated[ 

1341 Optional[SearchEventsSdkPlatform], 

1342 Field( 

1343 description='Filter events by the SDK Platform associated with the identification event (`sdk.platform` property) . `js` - Javascript agent (Web). `ios` - Apple iOS based devices. `android` - Android based devices. ' 

1344 ), 

1345 ] = None, 

1346 environment: Annotated[ 

1347 Optional[list[StrictStr]], 

1348 Field( 

1349 description='Filter for events by providing one or more environment IDs (`environment_id` property). ### Array syntax To provide multiple environment IDs, use the repeated keys syntax (`environment=env1&environment=env2`). Other notations like comma-separated (`environment=env1,env2`) or bracket notation (`environment[]=env1&environment[]=env2`) are not supported. ' 

1350 ), 

1351 ] = None, 

1352 proximity_id: Annotated[ 

1353 Optional[StrictStr], 

1354 Field( 

1355 description='Filter events by the most precise Proximity ID provided by default. > Note: When using this parameter, only events with the `proximity.id` property matching the provided ID are returned. Events without a `proximity` result are left out of the response. ' 

1356 ), 

1357 ] = None, 

1358 total_hits: Annotated[ 

1359 Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], 

1360 Field( 

1361 description='When set, the response will include a `total_hits` property with a count of total query matches across all pages, up to the specified limit. ' 

1362 ), 

1363 ] = None, 

1364 tor_node: Annotated[ 

1365 Optional[StrictBool], 

1366 Field( 

1367 description='Filter events by Tor Node detection result. > Note: When using this parameter, only events with the `tor_node` property set to `true` or `false` are returned. Events without a `tor_node` detection result are left out of the response. ' 

1368 ), 

1369 ] = None, 

1370 incremental_identification_status: Annotated[ 

1371 Optional[SearchEventsIncrementalIdentificationStatus], 

1372 Field( 

1373 description='Filter events by their incremental identification status (`incremental_identification_status` property). Non incremental identification events are left out of the response. ' 

1374 ), 

1375 ] = None, 

1376 simulator: Annotated[ 

1377 Optional[StrictBool], 

1378 Field( 

1379 description='Filter events by iOS Simulator Detection result. > Note: When using this parameter, only events with the `simulator` property set to `true` or `false` are returned. Events without a `simulator` Smart Signal result are left out of the response. ' 

1380 ), 

1381 ] = None, 

1382 source: Annotated[ 

1383 Optional[Annotated[list[SearchEventsSource], Field(max_length=1)]], 

1384 Field( 

1385 description='Selects the source of events to search. When omitted, only traditional identification events generated from devices are returned (the default behavior). When set to `edge`, only Automation Intelligence (Edge) events are returned. > Note: The Automation Intelligence API is in public preview testing phase. If you encounter any issues, please [contact](https://fingerprint.com/support/) our support team. ' 

1386 ), 

1387 ] = None, 

1388 _request_timeout: Union[ 

1389 None, 

1390 Annotated[StrictFloat, Field(gt=0)], 

1391 tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], 

1392 ] = None, 

1393 _request_auth: Optional[dict[StrictStr, Any]] = None, 

1394 _content_type: Optional[StrictStr] = None, 

1395 _headers: Optional[dict[StrictStr, Any]] = None, 

1396 ) -> ApiResponse[EventSearch]: 

1397 """Search events 

1398 

1399 ## Search The `/v4/events` endpoint provides a convenient way to search for past events based on specific parameters. Typical use cases and queries include: - Searching for events associated with a single `visitor_id` within a time range to get historical behavior of a visitor. - Searching for events associated with a single `linked_id` within a time range to get all events associated with your internal account identifier. - Excluding all bot traffic from the query (`good` and `bad` bots) By default, the API searches events from the last 7 days, sorts them by newest first and returns the last 10 events. - Use `start` and `end` to specify the time range of the search. - Use `reverse=true` to sort the results oldest first. - Use `limit` to specify the number of events to return. - Use `pagination_key` to get the next page of results if there are more than `limit` events. ### Filtering events with the `suspect` flag The `/v4/events` endpoint unlocks a powerful method for fraud protection analytics. The `suspect` flag is exposed in all events where it was previously set by the update API. You can also apply the `suspect` query parameter as a filter to find all potentially fraudulent activity that you previously marked as `suspect`. This helps identify patterns of fraudulent behavior. ### Environment scoping If you use a secret key that is scoped to an environment, you will only get events associated with the same environment. With a workspace-scoped environment, you will get events from all environments. Smart Signals not activated for your workspace or are not included in the response. 

1400 

1401 :param limit: Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. 

1402 :type limit: int 

1403 :param pagination_key: Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` 

1404 :type pagination_key: str 

1405 :param visitor_id: Unique [visitor identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) issued by Fingerprint Identification and all active Smart Signals. Filter events by matching Visitor ID (`identification.visitor_id` property). 

1406 :type visitor_id: str 

1407 :param high_recall_id: The High Recall ID is a supplementary browser identifier designed for use cases that require wider coverage over precision. Compared to the standard visitor ID, the High Recall ID strives to match incoming browsers more generously (rather than precisely) with existing browsers and thus identifies fewer browsers as new. The High Recall ID is best suited for use cases that are sensitive to browsers being identified as new and where mismatched browsers are not detrimental. Filter events by matching High Recall ID (`supplementary_id_high_recall.visitor_id` property). 

1408 :type high_recall_id: str 

1409 :param bot: Filter events by the Bot Detection result, specifically: `all` - events where any kind of bot was detected. `good` - events where a good bot was detected. `bad` - events where a bad bot was detected. `none` - events where no bot was detected. > Note: When using this parameter, only events with the `bot` property set to a valid value are returned. Events without a `bot` Smart Signal result are left out of the response. 

1410 :type bot: SearchEventsBot 

1411 :param bot_info: Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. 

1412 :type bot_info: SearchEventsBotInfo 

1413 :param bot_info_category: Filter events by their Bot Info Category. Multiple categories can be provided using the repeated keys syntax. For example, `bot_info_category=ai_agent&bot_info_category=ai_assistant`, will match events with a Bot Info Category of `ai_agent` or `ai_assistant`. Other notations like comma-separated or bracket notation are not supported. 

1414 :type bot_info_category: List[BotInfoCategory] 

1415 :param bot_info_identity: Filter events by their Bot Info Identity type. Multiple identity types can be provided using the repeated keys syntax. For example, `bot_info_identity=verified&bot_info_identity=signed`, will match events with a Bot Info Identity of `verified` or `signed`. Other notations like comma-separated or bracket notation are not supported. 

1416 :type bot_info_identity: List[BotInfoIdentity] 

1417 :param bot_info_confidence: Filter events by their Bot Info Confidence. Multiple confidences can be provided using the repeated keys syntax. For example, `bot_info_confidence=high&bot_info_confidence=medium`, will match events with a Bot Info Confidence of `high` or `medium`. Other notations like comma-separated or bracket notation are not supported. 

1418 :type bot_info_confidence: List[BotInfoConfidence] 

1419 :param bot_info_provider: Filter events by their Bot Info Provider. The provider must match exactly, partial or wildcard matching is not supported. Multiple Providers can be provided using the repeated keys syntax. For example, `bot_info_provider=OpenAI&bot_info_provider=AWS`, will match events with a Bot Info Provider of `OpenAI` or `AWS`. Other notations like comma-separated or bracket notation are not supported. 

1420 :type bot_info_provider: List[str] 

1421 :param bot_info_name: Filter events by their Bot Info Name. The name must match exactly, partial or wildcard matching is not supported. Multiple Names can be provided using the repeated keys syntax. For example, `bot_info_name=ChatGPT%20Agent&bot_info_name=Bedrock%20AgentCore`, will match events with a Bot Info Name of `ChatGPT Agent` or `Bedrock AgentCore`. Other notations like comma-separated or bracket notation are not supported. 

1422 :type bot_info_name: List[str] 

1423 :param ip_address: Filter events by IP address or IP range (if CIDR notation is used). If CIDR notation is not used, a /32 for IPv4 or /128 for IPv6 is assumed. Examples of range based queries: 10.0.0.0/24, 192.168.0.1/32 

1424 :type ip_address: str 

1425 :param asn: Filter events by the ASN associated with the event's IP address. This corresponds to the `ip_info.(v4|v6).asn` property in the response. 

1426 :type asn: str 

1427 :param linked_id: Filter events by your custom identifier. You can use [linked Ids](https://docs.fingerprint.com/reference/js-agent-v4-get-function#linkedid) to associate identification requests with your own identifier, for example, session Id, purchase Id, or transaction Id. You can then use this `linked_id` parameter to retrieve all events associated with your custom identifier. 

1428 :type linked_id: str 

1429 :param url: Filter events by the URL (`url` property) associated with the event. 

1430 :type url: str 

1431 :param bundle_id: Filter events by the Bundle ID (iOS) associated with the event. 

1432 :type bundle_id: str 

1433 :param package_name: Filter events by the Package Name (Android) associated with the event. 

1434 :type package_name: str 

1435 :param origin: Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) 

1436 :type origin: str 

1437 :param start: Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. 

1438 :type start: SearchEventsStartParameter 

1439 :param end: Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. 

1440 :type end: SearchEventsEndParameter 

1441 :param reverse: When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). 

1442 :type reverse: bool 

1443 :param suspect: Filter events previously tagged as suspicious via the [Update API](https://docs.fingerprint.com/reference/server-api-v4-update-event). > Note: When using this parameter, only events with the `suspect` property explicitly set to `true` or `false` are returned. Events with undefined `suspect` property are left out of the response. 

1444 :type suspect: bool 

1445 :param vpn: Filter events by VPN Detection result. > Note: When using this parameter, only events with the `vpn` property set to `true` or `false` are returned. Events without a `vpn` Smart Signal result are left out of the response. 

1446 :type vpn: bool 

1447 :param virtual_machine: Filter events by Virtual Machine Detection result. > Note: When using this parameter, only events with the `virtual_machine` property set to `true` or `false` are returned. Events without a `virtual_machine` Smart Signal result are left out of the response. 

1448 :type virtual_machine: bool 

1449 :param tampering: Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. 

1450 :type tampering: bool 

1451 :param anti_detect_browser: Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. 

1452 :type anti_detect_browser: bool 

1453 :param incognito: Filter events by Browser Incognito Detection result. > Note: When using this parameter, only events with the `incognito` property set to `true` or `false` are returned. Events without an `incognito` Smart Signal result are left out of the response. 

1454 :type incognito: bool 

1455 :param privacy_settings: Filter events by Privacy Settings Detection result. > Note: When using this parameter, only events with the `privacy_settings` property set to `true` or `false` are returned. Events without a `privacy_settings` Smart Signal result are left out of the response. 

1456 :type privacy_settings: bool 

1457 :param jailbroken: Filter events by Jailbroken Device Detection result. > Note: When using this parameter, only events with the `jailbroken` property set to `true` or `false` are returned. Events without a `jailbroken` Smart Signal result are left out of the response. 

1458 :type jailbroken: bool 

1459 :param frida: Filter events by Frida Detection result. > Note: When using this parameter, only events with the `frida` property set to `true` or `false` are returned. Events without a `frida` Smart Signal result are left out of the response. 

1460 :type frida: bool 

1461 :param factory_reset: Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. 

1462 :type factory_reset: bool 

1463 :param cloned_app: Filter events by Cloned App Detection result. > Note: When using this parameter, only events with the `cloned_app` property set to `true` or `false` are returned. Events without a `cloned_app` Smart Signal result are left out of the response. 

1464 :type cloned_app: bool 

1465 :param emulator: Filter events by Android Emulator Detection result. > Note: When using this parameter, only events with the `emulator` property set to `true` or `false` are returned. Events without an `emulator` Smart Signal result are left out of the response. 

1466 :type emulator: bool 

1467 :param root_apps: Filter events by Rooted Device Detection result. > Note: When using this parameter, only events with the `root_apps` property set to `true` or `false` are returned. Events without a `root_apps` Smart Signal result are left out of the response. 

1468 :type root_apps: bool 

1469 :param vpn_confidence: Filter events by VPN Detection result confidence level. `high` - events with high VPN Detection confidence. `medium` - events with medium VPN Detection confidence. `low` - events with low VPN Detection confidence. > Note: When using this parameter, only events with the `vpn.confidence` property set to a valid value are returned. Events without a `vpn` Smart Signal result are left out of the response. 

1470 :type vpn_confidence: SearchEventsVpnConfidence 

1471 :param min_suspect_score: Filter events with Suspect Score result above a provided minimum threshold. > Note: When using this parameter, only events where the `suspect_score` property set to a value exceeding your threshold are returned. Events without a `suspect_score` Smart Signal result are left out of the response. 

1472 :type min_suspect_score: float 

1473 :param developer_tools: Filter events by Developer Tools detection result. > Note: When using this parameter, only events with the `developer_tools` property set to `true` or `false` are returned. Events without a `developer_tools` Smart Signal result are left out of the response. 

1474 :type developer_tools: bool 

1475 :param location_spoofing: Filter events by Location Spoofing detection result. > Note: When using this parameter, only events with the `location_spoofing` property set to `true` or `false` are returned. Events without a `location_spoofing` Smart Signal result are left out of the response. 

1476 :type location_spoofing: bool 

1477 :param mitm_attack: Filter events by MITM (Man-in-the-Middle) Attack detection result. > Note: When using this parameter, only events with the `mitm_attack` property set to `true` or `false` are returned. Events without a `mitm_attack` Smart Signal result are left out of the response. 

1478 :type mitm_attack: bool 

1479 :param rare_device: Filter events by Device Rarity detection result. > Note: When using this parameter, only events with the `rare_device` property set to `true` or `false` are returned. Events without a Device Rarity Smart Signal result are left out of the response. > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). 

1480 :type rare_device: bool 

1481 :param rare_device_percentile_bucket: Filter events by Device Rarity percentile bucket. `<p95` - device configuration is in the bottom 95% (most common). `p95-p99` - device is in the 95th to 99th percentile. `p99-p99.5` - device is in the 99th to 99.5th percentile. `p99.5-p99.9` - device is in the 99.5th to 99.9th percentile. `p99.9+` - device is in the top 0.1% (rarest). `not_seen` - device configuration has never been observed before. > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). 

1482 :type rare_device_percentile_bucket: SearchEventsRareDevicePercentileBucket 

1483 :param proxy: Filter events by Proxy detection result. > Note: When using this parameter, only events with the `proxy` property set to `true` or `false` are returned. Events without a `proxy` Smart Signal result are left out of the response. 

1484 :type proxy: bool 

1485 :param sdk_version: Filter events by a specific SDK version associated with the identification event (`sdk.version` property). Example: `3.11.14` 

1486 :type sdk_version: str 

1487 :param sdk_platform: Filter events by the SDK Platform associated with the identification event (`sdk.platform` property) . `js` - Javascript agent (Web). `ios` - Apple iOS based devices. `android` - Android based devices. 

1488 :type sdk_platform: SearchEventsSdkPlatform 

1489 :param environment: Filter for events by providing one or more environment IDs (`environment_id` property). ### Array syntax To provide multiple environment IDs, use the repeated keys syntax (`environment=env1&environment=env2`). Other notations like comma-separated (`environment=env1,env2`) or bracket notation (`environment[]=env1&environment[]=env2`) are not supported. 

1490 :type environment: List[str] 

1491 :param proximity_id: Filter events by the most precise Proximity ID provided by default. > Note: When using this parameter, only events with the `proximity.id` property matching the provided ID are returned. Events without a `proximity` result are left out of the response. 

1492 :type proximity_id: str 

1493 :param total_hits: When set, the response will include a `total_hits` property with a count of total query matches across all pages, up to the specified limit. 

1494 :type total_hits: int 

1495 :param tor_node: Filter events by Tor Node detection result. > Note: When using this parameter, only events with the `tor_node` property set to `true` or `false` are returned. Events without a `tor_node` detection result are left out of the response. 

1496 :type tor_node: bool 

1497 :param incremental_identification_status: Filter events by their incremental identification status (`incremental_identification_status` property). Non incremental identification events are left out of the response. 

1498 :type incremental_identification_status: SearchEventsIncrementalIdentificationStatus 

1499 :param simulator: Filter events by iOS Simulator Detection result. > Note: When using this parameter, only events with the `simulator` property set to `true` or `false` are returned. Events without a `simulator` Smart Signal result are left out of the response. 

1500 :type simulator: bool 

1501 :param source: Selects the source of events to search. When omitted, only traditional identification events generated from devices are returned (the default behavior). When set to `edge`, only Automation Intelligence (Edge) events are returned. > Note: The Automation Intelligence API is in public preview testing phase. If you encounter any issues, please [contact](https://fingerprint.com/support/) our support team. 

1502 :type source: List[SearchEventsSource] 

1503 :param _request_timeout: timeout setting for this request. If one 

1504 number provided, it will be total request 

1505 timeout. It can also be a pair (tuple) of 

1506 (connection, read) timeouts. 

1507 :type _request_timeout: int, tuple(int, int), optional 

1508 :param _request_auth: set to override the auth_settings for an a single 

1509 request; this effectively ignores the 

1510 authentication in the spec for a single request. 

1511 :type _request_auth: dict, optional 

1512 :param _content_type: force content-type for the request. 

1513 :type _content_type: str, Optional 

1514 :param _headers: set to override the headers for a single 

1515 request; this effectively ignores the headers 

1516 in the spec for a single request. 

1517 :type _headers: dict, optional 

1518 :return: Returns the result object. 

1519 """ # noqa: E501 

1520 

1521 _param = self._search_events_serialize( 

1522 limit=limit, 

1523 pagination_key=pagination_key, 

1524 visitor_id=visitor_id, 

1525 high_recall_id=high_recall_id, 

1526 bot=bot, 

1527 bot_info=bot_info, 

1528 bot_info_category=bot_info_category, 

1529 bot_info_identity=bot_info_identity, 

1530 bot_info_confidence=bot_info_confidence, 

1531 bot_info_provider=bot_info_provider, 

1532 bot_info_name=bot_info_name, 

1533 ip_address=ip_address, 

1534 asn=asn, 

1535 linked_id=linked_id, 

1536 url=url, 

1537 bundle_id=bundle_id, 

1538 package_name=package_name, 

1539 origin=origin, 

1540 start=start, 

1541 end=end, 

1542 reverse=reverse, 

1543 suspect=suspect, 

1544 vpn=vpn, 

1545 virtual_machine=virtual_machine, 

1546 tampering=tampering, 

1547 anti_detect_browser=anti_detect_browser, 

1548 incognito=incognito, 

1549 privacy_settings=privacy_settings, 

1550 jailbroken=jailbroken, 

1551 frida=frida, 

1552 factory_reset=factory_reset, 

1553 cloned_app=cloned_app, 

1554 emulator=emulator, 

1555 root_apps=root_apps, 

1556 vpn_confidence=vpn_confidence, 

1557 min_suspect_score=min_suspect_score, 

1558 developer_tools=developer_tools, 

1559 location_spoofing=location_spoofing, 

1560 mitm_attack=mitm_attack, 

1561 rare_device=rare_device, 

1562 rare_device_percentile_bucket=rare_device_percentile_bucket, 

1563 proxy=proxy, 

1564 sdk_version=sdk_version, 

1565 sdk_platform=sdk_platform, 

1566 environment=environment, 

1567 proximity_id=proximity_id, 

1568 total_hits=total_hits, 

1569 tor_node=tor_node, 

1570 incremental_identification_status=incremental_identification_status, 

1571 simulator=simulator, 

1572 source=source, 

1573 _request_auth=_request_auth, 

1574 _content_type=_content_type, 

1575 _headers=_headers, 

1576 ) 

1577 

1578 _response_types_map: dict[str, Optional[str]] = { 

1579 '200': 'EventSearch', 

1580 '400': 'ErrorResponse', 

1581 '403': 'ErrorResponse', 

1582 '404': 'ErrorResponse', 

1583 '500': 'ErrorResponse', 

1584 } 

1585 

1586 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) 

1587 response_data.read() 

1588 return self.api_client.response_deserialize( 

1589 response_data=response_data, 

1590 response_types_map=_response_types_map, 

1591 ) 

1592 

1593 @validate_call 

1594 def search_events_without_preload_content( 

1595 self, 

1596 limit: Annotated[ 

1597 Optional[Annotated[int, Field(le=100, strict=True, ge=1)]], 

1598 Field( 

1599 description='Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. ' 

1600 ), 

1601 ] = None, 

1602 pagination_key: Annotated[ 

1603 Optional[StrictStr], 

1604 Field( 

1605 description='Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` ' 

1606 ), 

1607 ] = None, 

1608 visitor_id: Annotated[ 

1609 Optional[StrictStr], 

1610 Field( 

1611 description='Unique [visitor identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) issued by Fingerprint Identification and all active Smart Signals. Filter events by matching Visitor ID (`identification.visitor_id` property). ' 

1612 ), 

1613 ] = None, 

1614 high_recall_id: Annotated[ 

1615 Optional[StrictStr], 

1616 Field( 

1617 description='The High Recall ID is a supplementary browser identifier designed for use cases that require wider coverage over precision. Compared to the standard visitor ID, the High Recall ID strives to match incoming browsers more generously (rather than precisely) with existing browsers and thus identifies fewer browsers as new. The High Recall ID is best suited for use cases that are sensitive to browsers being identified as new and where mismatched browsers are not detrimental. Filter events by matching High Recall ID (`supplementary_id_high_recall.visitor_id` property). ' 

1618 ), 

1619 ] = None, 

1620 bot: Annotated[ 

1621 Optional[SearchEventsBot], 

1622 Field( 

1623 description='Filter events by the Bot Detection result, specifically: `all` - events where any kind of bot was detected. `good` - events where a good bot was detected. `bad` - events where a bad bot was detected. `none` - events where no bot was detected. > Note: When using this parameter, only events with the `bot` property set to a valid value are returned. Events without a `bot` Smart Signal result are left out of the response. ' 

1624 ), 

1625 ] = None, 

1626 bot_info: Annotated[ 

1627 Optional[SearchEventsBotInfo], 

1628 Field( 

1629 description='Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. ' 

1630 ), 

1631 ] = None, 

1632 bot_info_category: Annotated[ 

1633 Optional[list[BotInfoCategory]], 

1634 Field( 

1635 description='Filter events by their Bot Info Category. Multiple categories can be provided using the repeated keys syntax. For example, `bot_info_category=ai_agent&bot_info_category=ai_assistant`, will match events with a Bot Info Category of `ai_agent` or `ai_assistant`. Other notations like comma-separated or bracket notation are not supported. ' 

1636 ), 

1637 ] = None, 

1638 bot_info_identity: Annotated[ 

1639 Optional[list[BotInfoIdentity]], 

1640 Field( 

1641 description='Filter events by their Bot Info Identity type. Multiple identity types can be provided using the repeated keys syntax. For example, `bot_info_identity=verified&bot_info_identity=signed`, will match events with a Bot Info Identity of `verified` or `signed`. Other notations like comma-separated or bracket notation are not supported. ' 

1642 ), 

1643 ] = None, 

1644 bot_info_confidence: Annotated[ 

1645 Optional[list[BotInfoConfidence]], 

1646 Field( 

1647 description='Filter events by their Bot Info Confidence. Multiple confidences can be provided using the repeated keys syntax. For example, `bot_info_confidence=high&bot_info_confidence=medium`, will match events with a Bot Info Confidence of `high` or `medium`. Other notations like comma-separated or bracket notation are not supported. ' 

1648 ), 

1649 ] = None, 

1650 bot_info_provider: Annotated[ 

1651 Optional[list[StrictStr]], 

1652 Field( 

1653 description='Filter events by their Bot Info Provider. The provider must match exactly, partial or wildcard matching is not supported. Multiple Providers can be provided using the repeated keys syntax. For example, `bot_info_provider=OpenAI&bot_info_provider=AWS`, will match events with a Bot Info Provider of `OpenAI` or `AWS`. Other notations like comma-separated or bracket notation are not supported. ' 

1654 ), 

1655 ] = None, 

1656 bot_info_name: Annotated[ 

1657 Optional[list[StrictStr]], 

1658 Field( 

1659 description='Filter events by their Bot Info Name. The name must match exactly, partial or wildcard matching is not supported. Multiple Names can be provided using the repeated keys syntax. For example, `bot_info_name=ChatGPT%20Agent&bot_info_name=Bedrock%20AgentCore`, will match events with a Bot Info Name of `ChatGPT Agent` or `Bedrock AgentCore`. Other notations like comma-separated or bracket notation are not supported. ' 

1660 ), 

1661 ] = None, 

1662 ip_address: Annotated[ 

1663 Optional[StrictStr], 

1664 Field( 

1665 description='Filter events by IP address or IP range (if CIDR notation is used). If CIDR notation is not used, a /32 for IPv4 or /128 for IPv6 is assumed. Examples of range based queries: 10.0.0.0/24, 192.168.0.1/32 ' 

1666 ), 

1667 ] = None, 

1668 asn: Annotated[ 

1669 Optional[StrictStr], 

1670 Field( 

1671 description="Filter events by the ASN associated with the event's IP address. This corresponds to the `ip_info.(v4|v6).asn` property in the response. " 

1672 ), 

1673 ] = None, 

1674 linked_id: Annotated[ 

1675 Optional[StrictStr], 

1676 Field( 

1677 description='Filter events by your custom identifier. You can use [linked Ids](https://docs.fingerprint.com/reference/js-agent-v4-get-function#linkedid) to associate identification requests with your own identifier, for example, session Id, purchase Id, or transaction Id. You can then use this `linked_id` parameter to retrieve all events associated with your custom identifier. ' 

1678 ), 

1679 ] = None, 

1680 url: Annotated[ 

1681 Optional[StrictStr], 

1682 Field( 

1683 description='Filter events by the URL (`url` property) associated with the event. ' 

1684 ), 

1685 ] = None, 

1686 bundle_id: Annotated[ 

1687 Optional[StrictStr], 

1688 Field(description='Filter events by the Bundle ID (iOS) associated with the event. '), 

1689 ] = None, 

1690 package_name: Annotated[ 

1691 Optional[StrictStr], 

1692 Field( 

1693 description='Filter events by the Package Name (Android) associated with the event. ' 

1694 ), 

1695 ] = None, 

1696 origin: Annotated[ 

1697 Optional[StrictStr], 

1698 Field( 

1699 description='Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) ' 

1700 ), 

1701 ] = None, 

1702 start: Annotated[ 

1703 Optional[SearchEventsStartParameter], 

1704 Field( 

1705 description="Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. ", 

1706 ), 

1707 ] = None, 

1708 end: Annotated[ 

1709 Optional[SearchEventsEndParameter], 

1710 Field( 

1711 description="Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. ", 

1712 ), 

1713 ] = None, 

1714 reverse: Annotated[ 

1715 Optional[StrictBool], 

1716 Field( 

1717 description='When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). ' 

1718 ), 

1719 ] = None, 

1720 suspect: Annotated[ 

1721 Optional[StrictBool], 

1722 Field( 

1723 description='Filter events previously tagged as suspicious via the [Update API](https://docs.fingerprint.com/reference/server-api-v4-update-event). > Note: When using this parameter, only events with the `suspect` property explicitly set to `true` or `false` are returned. Events with undefined `suspect` property are left out of the response. ' 

1724 ), 

1725 ] = None, 

1726 vpn: Annotated[ 

1727 Optional[StrictBool], 

1728 Field( 

1729 description='Filter events by VPN Detection result. > Note: When using this parameter, only events with the `vpn` property set to `true` or `false` are returned. Events without a `vpn` Smart Signal result are left out of the response. ' 

1730 ), 

1731 ] = None, 

1732 virtual_machine: Annotated[ 

1733 Optional[StrictBool], 

1734 Field( 

1735 description='Filter events by Virtual Machine Detection result. > Note: When using this parameter, only events with the `virtual_machine` property set to `true` or `false` are returned. Events without a `virtual_machine` Smart Signal result are left out of the response. ' 

1736 ), 

1737 ] = None, 

1738 tampering: Annotated[ 

1739 Optional[StrictBool], 

1740 Field( 

1741 description='Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' 

1742 ), 

1743 ] = None, 

1744 anti_detect_browser: Annotated[ 

1745 Optional[StrictBool], 

1746 Field( 

1747 description='Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' 

1748 ), 

1749 ] = None, 

1750 incognito: Annotated[ 

1751 Optional[StrictBool], 

1752 Field( 

1753 description='Filter events by Browser Incognito Detection result. > Note: When using this parameter, only events with the `incognito` property set to `true` or `false` are returned. Events without an `incognito` Smart Signal result are left out of the response. ' 

1754 ), 

1755 ] = None, 

1756 privacy_settings: Annotated[ 

1757 Optional[StrictBool], 

1758 Field( 

1759 description='Filter events by Privacy Settings Detection result. > Note: When using this parameter, only events with the `privacy_settings` property set to `true` or `false` are returned. Events without a `privacy_settings` Smart Signal result are left out of the response. ' 

1760 ), 

1761 ] = None, 

1762 jailbroken: Annotated[ 

1763 Optional[StrictBool], 

1764 Field( 

1765 description='Filter events by Jailbroken Device Detection result. > Note: When using this parameter, only events with the `jailbroken` property set to `true` or `false` are returned. Events without a `jailbroken` Smart Signal result are left out of the response. ' 

1766 ), 

1767 ] = None, 

1768 frida: Annotated[ 

1769 Optional[StrictBool], 

1770 Field( 

1771 description='Filter events by Frida Detection result. > Note: When using this parameter, only events with the `frida` property set to `true` or `false` are returned. Events without a `frida` Smart Signal result are left out of the response. ' 

1772 ), 

1773 ] = None, 

1774 factory_reset: Annotated[ 

1775 Optional[StrictBool], 

1776 Field( 

1777 description='Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. ' 

1778 ), 

1779 ] = None, 

1780 cloned_app: Annotated[ 

1781 Optional[StrictBool], 

1782 Field( 

1783 description='Filter events by Cloned App Detection result. > Note: When using this parameter, only events with the `cloned_app` property set to `true` or `false` are returned. Events without a `cloned_app` Smart Signal result are left out of the response. ' 

1784 ), 

1785 ] = None, 

1786 emulator: Annotated[ 

1787 Optional[StrictBool], 

1788 Field( 

1789 description='Filter events by Android Emulator Detection result. > Note: When using this parameter, only events with the `emulator` property set to `true` or `false` are returned. Events without an `emulator` Smart Signal result are left out of the response. ' 

1790 ), 

1791 ] = None, 

1792 root_apps: Annotated[ 

1793 Optional[StrictBool], 

1794 Field( 

1795 description='Filter events by Rooted Device Detection result. > Note: When using this parameter, only events with the `root_apps` property set to `true` or `false` are returned. Events without a `root_apps` Smart Signal result are left out of the response. ' 

1796 ), 

1797 ] = None, 

1798 vpn_confidence: Annotated[ 

1799 Optional[SearchEventsVpnConfidence], 

1800 Field( 

1801 description='Filter events by VPN Detection result confidence level. `high` - events with high VPN Detection confidence. `medium` - events with medium VPN Detection confidence. `low` - events with low VPN Detection confidence. > Note: When using this parameter, only events with the `vpn.confidence` property set to a valid value are returned. Events without a `vpn` Smart Signal result are left out of the response. ' 

1802 ), 

1803 ] = None, 

1804 min_suspect_score: Annotated[ 

1805 Optional[Union[StrictFloat, StrictInt]], 

1806 Field( 

1807 description='Filter events with Suspect Score result above a provided minimum threshold. > Note: When using this parameter, only events where the `suspect_score` property set to a value exceeding your threshold are returned. Events without a `suspect_score` Smart Signal result are left out of the response. ' 

1808 ), 

1809 ] = None, 

1810 developer_tools: Annotated[ 

1811 Optional[StrictBool], 

1812 Field( 

1813 description='Filter events by Developer Tools detection result. > Note: When using this parameter, only events with the `developer_tools` property set to `true` or `false` are returned. Events without a `developer_tools` Smart Signal result are left out of the response. ' 

1814 ), 

1815 ] = None, 

1816 location_spoofing: Annotated[ 

1817 Optional[StrictBool], 

1818 Field( 

1819 description='Filter events by Location Spoofing detection result. > Note: When using this parameter, only events with the `location_spoofing` property set to `true` or `false` are returned. Events without a `location_spoofing` Smart Signal result are left out of the response. ' 

1820 ), 

1821 ] = None, 

1822 mitm_attack: Annotated[ 

1823 Optional[StrictBool], 

1824 Field( 

1825 description='Filter events by MITM (Man-in-the-Middle) Attack detection result. > Note: When using this parameter, only events with the `mitm_attack` property set to `true` or `false` are returned. Events without a `mitm_attack` Smart Signal result are left out of the response. ' 

1826 ), 

1827 ] = None, 

1828 rare_device: Annotated[ 

1829 Optional[StrictBool], 

1830 Field( 

1831 description='Filter events by Device Rarity detection result. > Note: When using this parameter, only events with the `rare_device` property set to `true` or `false` are returned. Events without a Device Rarity Smart Signal result are left out of the response. > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). ' 

1832 ), 

1833 ] = None, 

1834 rare_device_percentile_bucket: Annotated[ 

1835 Optional[SearchEventsRareDevicePercentileBucket], 

1836 Field( 

1837 description='Filter events by Device Rarity percentile bucket. `<p95` - device configuration is in the bottom 95% (most common). `p95-p99` - device is in the 95th to 99th percentile. `p99-p99.5` - device is in the 99th to 99.5th percentile. `p99.5-p99.9` - device is in the 99.5th to 99.9th percentile. `p99.9+` - device is in the top 0.1% (rarest). `not_seen` - device configuration has never been observed before. > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). ' 

1838 ), 

1839 ] = None, 

1840 proxy: Annotated[ 

1841 Optional[StrictBool], 

1842 Field( 

1843 description='Filter events by Proxy detection result. > Note: When using this parameter, only events with the `proxy` property set to `true` or `false` are returned. Events without a `proxy` Smart Signal result are left out of the response. ' 

1844 ), 

1845 ] = None, 

1846 sdk_version: Annotated[ 

1847 Optional[StrictStr], 

1848 Field( 

1849 description='Filter events by a specific SDK version associated with the identification event (`sdk.version` property). Example: `3.11.14` ' 

1850 ), 

1851 ] = None, 

1852 sdk_platform: Annotated[ 

1853 Optional[SearchEventsSdkPlatform], 

1854 Field( 

1855 description='Filter events by the SDK Platform associated with the identification event (`sdk.platform` property) . `js` - Javascript agent (Web). `ios` - Apple iOS based devices. `android` - Android based devices. ' 

1856 ), 

1857 ] = None, 

1858 environment: Annotated[ 

1859 Optional[list[StrictStr]], 

1860 Field( 

1861 description='Filter for events by providing one or more environment IDs (`environment_id` property). ### Array syntax To provide multiple environment IDs, use the repeated keys syntax (`environment=env1&environment=env2`). Other notations like comma-separated (`environment=env1,env2`) or bracket notation (`environment[]=env1&environment[]=env2`) are not supported. ' 

1862 ), 

1863 ] = None, 

1864 proximity_id: Annotated[ 

1865 Optional[StrictStr], 

1866 Field( 

1867 description='Filter events by the most precise Proximity ID provided by default. > Note: When using this parameter, only events with the `proximity.id` property matching the provided ID are returned. Events without a `proximity` result are left out of the response. ' 

1868 ), 

1869 ] = None, 

1870 total_hits: Annotated[ 

1871 Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], 

1872 Field( 

1873 description='When set, the response will include a `total_hits` property with a count of total query matches across all pages, up to the specified limit. ' 

1874 ), 

1875 ] = None, 

1876 tor_node: Annotated[ 

1877 Optional[StrictBool], 

1878 Field( 

1879 description='Filter events by Tor Node detection result. > Note: When using this parameter, only events with the `tor_node` property set to `true` or `false` are returned. Events without a `tor_node` detection result are left out of the response. ' 

1880 ), 

1881 ] = None, 

1882 incremental_identification_status: Annotated[ 

1883 Optional[SearchEventsIncrementalIdentificationStatus], 

1884 Field( 

1885 description='Filter events by their incremental identification status (`incremental_identification_status` property). Non incremental identification events are left out of the response. ' 

1886 ), 

1887 ] = None, 

1888 simulator: Annotated[ 

1889 Optional[StrictBool], 

1890 Field( 

1891 description='Filter events by iOS Simulator Detection result. > Note: When using this parameter, only events with the `simulator` property set to `true` or `false` are returned. Events without a `simulator` Smart Signal result are left out of the response. ' 

1892 ), 

1893 ] = None, 

1894 source: Annotated[ 

1895 Optional[Annotated[list[SearchEventsSource], Field(max_length=1)]], 

1896 Field( 

1897 description='Selects the source of events to search. When omitted, only traditional identification events generated from devices are returned (the default behavior). When set to `edge`, only Automation Intelligence (Edge) events are returned. > Note: The Automation Intelligence API is in public preview testing phase. If you encounter any issues, please [contact](https://fingerprint.com/support/) our support team. ' 

1898 ), 

1899 ] = None, 

1900 _request_timeout: Union[ 

1901 None, 

1902 Annotated[StrictFloat, Field(gt=0)], 

1903 tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], 

1904 ] = None, 

1905 _request_auth: Optional[dict[StrictStr, Any]] = None, 

1906 _content_type: Optional[StrictStr] = None, 

1907 _headers: Optional[dict[StrictStr, Any]] = None, 

1908 ) -> RESTResponseType: 

1909 """Search events 

1910 

1911 ## Search The `/v4/events` endpoint provides a convenient way to search for past events based on specific parameters. Typical use cases and queries include: - Searching for events associated with a single `visitor_id` within a time range to get historical behavior of a visitor. - Searching for events associated with a single `linked_id` within a time range to get all events associated with your internal account identifier. - Excluding all bot traffic from the query (`good` and `bad` bots) By default, the API searches events from the last 7 days, sorts them by newest first and returns the last 10 events. - Use `start` and `end` to specify the time range of the search. - Use `reverse=true` to sort the results oldest first. - Use `limit` to specify the number of events to return. - Use `pagination_key` to get the next page of results if there are more than `limit` events. ### Filtering events with the `suspect` flag The `/v4/events` endpoint unlocks a powerful method for fraud protection analytics. The `suspect` flag is exposed in all events where it was previously set by the update API. You can also apply the `suspect` query parameter as a filter to find all potentially fraudulent activity that you previously marked as `suspect`. This helps identify patterns of fraudulent behavior. ### Environment scoping If you use a secret key that is scoped to an environment, you will only get events associated with the same environment. With a workspace-scoped environment, you will get events from all environments. Smart Signals not activated for your workspace or are not included in the response. 

1912 

1913 :param limit: Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. 

1914 :type limit: int 

1915 :param pagination_key: Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` 

1916 :type pagination_key: str 

1917 :param visitor_id: Unique [visitor identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) issued by Fingerprint Identification and all active Smart Signals. Filter events by matching Visitor ID (`identification.visitor_id` property). 

1918 :type visitor_id: str 

1919 :param high_recall_id: The High Recall ID is a supplementary browser identifier designed for use cases that require wider coverage over precision. Compared to the standard visitor ID, the High Recall ID strives to match incoming browsers more generously (rather than precisely) with existing browsers and thus identifies fewer browsers as new. The High Recall ID is best suited for use cases that are sensitive to browsers being identified as new and where mismatched browsers are not detrimental. Filter events by matching High Recall ID (`supplementary_id_high_recall.visitor_id` property). 

1920 :type high_recall_id: str 

1921 :param bot: Filter events by the Bot Detection result, specifically: `all` - events where any kind of bot was detected. `good` - events where a good bot was detected. `bad` - events where a bad bot was detected. `none` - events where no bot was detected. > Note: When using this parameter, only events with the `bot` property set to a valid value are returned. Events without a `bot` Smart Signal result are left out of the response. 

1922 :type bot: SearchEventsBot 

1923 :param bot_info: Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. 

1924 :type bot_info: SearchEventsBotInfo 

1925 :param bot_info_category: Filter events by their Bot Info Category. Multiple categories can be provided using the repeated keys syntax. For example, `bot_info_category=ai_agent&bot_info_category=ai_assistant`, will match events with a Bot Info Category of `ai_agent` or `ai_assistant`. Other notations like comma-separated or bracket notation are not supported. 

1926 :type bot_info_category: List[BotInfoCategory] 

1927 :param bot_info_identity: Filter events by their Bot Info Identity type. Multiple identity types can be provided using the repeated keys syntax. For example, `bot_info_identity=verified&bot_info_identity=signed`, will match events with a Bot Info Identity of `verified` or `signed`. Other notations like comma-separated or bracket notation are not supported. 

1928 :type bot_info_identity: List[BotInfoIdentity] 

1929 :param bot_info_confidence: Filter events by their Bot Info Confidence. Multiple confidences can be provided using the repeated keys syntax. For example, `bot_info_confidence=high&bot_info_confidence=medium`, will match events with a Bot Info Confidence of `high` or `medium`. Other notations like comma-separated or bracket notation are not supported. 

1930 :type bot_info_confidence: List[BotInfoConfidence] 

1931 :param bot_info_provider: Filter events by their Bot Info Provider. The provider must match exactly, partial or wildcard matching is not supported. Multiple Providers can be provided using the repeated keys syntax. For example, `bot_info_provider=OpenAI&bot_info_provider=AWS`, will match events with a Bot Info Provider of `OpenAI` or `AWS`. Other notations like comma-separated or bracket notation are not supported. 

1932 :type bot_info_provider: List[str] 

1933 :param bot_info_name: Filter events by their Bot Info Name. The name must match exactly, partial or wildcard matching is not supported. Multiple Names can be provided using the repeated keys syntax. For example, `bot_info_name=ChatGPT%20Agent&bot_info_name=Bedrock%20AgentCore`, will match events with a Bot Info Name of `ChatGPT Agent` or `Bedrock AgentCore`. Other notations like comma-separated or bracket notation are not supported. 

1934 :type bot_info_name: List[str] 

1935 :param ip_address: Filter events by IP address or IP range (if CIDR notation is used). If CIDR notation is not used, a /32 for IPv4 or /128 for IPv6 is assumed. Examples of range based queries: 10.0.0.0/24, 192.168.0.1/32 

1936 :type ip_address: str 

1937 :param asn: Filter events by the ASN associated with the event's IP address. This corresponds to the `ip_info.(v4|v6).asn` property in the response. 

1938 :type asn: str 

1939 :param linked_id: Filter events by your custom identifier. You can use [linked Ids](https://docs.fingerprint.com/reference/js-agent-v4-get-function#linkedid) to associate identification requests with your own identifier, for example, session Id, purchase Id, or transaction Id. You can then use this `linked_id` parameter to retrieve all events associated with your custom identifier. 

1940 :type linked_id: str 

1941 :param url: Filter events by the URL (`url` property) associated with the event. 

1942 :type url: str 

1943 :param bundle_id: Filter events by the Bundle ID (iOS) associated with the event. 

1944 :type bundle_id: str 

1945 :param package_name: Filter events by the Package Name (Android) associated with the event. 

1946 :type package_name: str 

1947 :param origin: Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) 

1948 :type origin: str 

1949 :param start: Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. 

1950 :type start: SearchEventsStartParameter 

1951 :param end: Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. 

1952 :type end: SearchEventsEndParameter 

1953 :param reverse: When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). 

1954 :type reverse: bool 

1955 :param suspect: Filter events previously tagged as suspicious via the [Update API](https://docs.fingerprint.com/reference/server-api-v4-update-event). > Note: When using this parameter, only events with the `suspect` property explicitly set to `true` or `false` are returned. Events with undefined `suspect` property are left out of the response. 

1956 :type suspect: bool 

1957 :param vpn: Filter events by VPN Detection result. > Note: When using this parameter, only events with the `vpn` property set to `true` or `false` are returned. Events without a `vpn` Smart Signal result are left out of the response. 

1958 :type vpn: bool 

1959 :param virtual_machine: Filter events by Virtual Machine Detection result. > Note: When using this parameter, only events with the `virtual_machine` property set to `true` or `false` are returned. Events without a `virtual_machine` Smart Signal result are left out of the response. 

1960 :type virtual_machine: bool 

1961 :param tampering: Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. 

1962 :type tampering: bool 

1963 :param anti_detect_browser: Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. 

1964 :type anti_detect_browser: bool 

1965 :param incognito: Filter events by Browser Incognito Detection result. > Note: When using this parameter, only events with the `incognito` property set to `true` or `false` are returned. Events without an `incognito` Smart Signal result are left out of the response. 

1966 :type incognito: bool 

1967 :param privacy_settings: Filter events by Privacy Settings Detection result. > Note: When using this parameter, only events with the `privacy_settings` property set to `true` or `false` are returned. Events without a `privacy_settings` Smart Signal result are left out of the response. 

1968 :type privacy_settings: bool 

1969 :param jailbroken: Filter events by Jailbroken Device Detection result. > Note: When using this parameter, only events with the `jailbroken` property set to `true` or `false` are returned. Events without a `jailbroken` Smart Signal result are left out of the response. 

1970 :type jailbroken: bool 

1971 :param frida: Filter events by Frida Detection result. > Note: When using this parameter, only events with the `frida` property set to `true` or `false` are returned. Events without a `frida` Smart Signal result are left out of the response. 

1972 :type frida: bool 

1973 :param factory_reset: Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. 

1974 :type factory_reset: bool 

1975 :param cloned_app: Filter events by Cloned App Detection result. > Note: When using this parameter, only events with the `cloned_app` property set to `true` or `false` are returned. Events without a `cloned_app` Smart Signal result are left out of the response. 

1976 :type cloned_app: bool 

1977 :param emulator: Filter events by Android Emulator Detection result. > Note: When using this parameter, only events with the `emulator` property set to `true` or `false` are returned. Events without an `emulator` Smart Signal result are left out of the response. 

1978 :type emulator: bool 

1979 :param root_apps: Filter events by Rooted Device Detection result. > Note: When using this parameter, only events with the `root_apps` property set to `true` or `false` are returned. Events without a `root_apps` Smart Signal result are left out of the response. 

1980 :type root_apps: bool 

1981 :param vpn_confidence: Filter events by VPN Detection result confidence level. `high` - events with high VPN Detection confidence. `medium` - events with medium VPN Detection confidence. `low` - events with low VPN Detection confidence. > Note: When using this parameter, only events with the `vpn.confidence` property set to a valid value are returned. Events without a `vpn` Smart Signal result are left out of the response. 

1982 :type vpn_confidence: SearchEventsVpnConfidence 

1983 :param min_suspect_score: Filter events with Suspect Score result above a provided minimum threshold. > Note: When using this parameter, only events where the `suspect_score` property set to a value exceeding your threshold are returned. Events without a `suspect_score` Smart Signal result are left out of the response. 

1984 :type min_suspect_score: float 

1985 :param developer_tools: Filter events by Developer Tools detection result. > Note: When using this parameter, only events with the `developer_tools` property set to `true` or `false` are returned. Events without a `developer_tools` Smart Signal result are left out of the response. 

1986 :type developer_tools: bool 

1987 :param location_spoofing: Filter events by Location Spoofing detection result. > Note: When using this parameter, only events with the `location_spoofing` property set to `true` or `false` are returned. Events without a `location_spoofing` Smart Signal result are left out of the response. 

1988 :type location_spoofing: bool 

1989 :param mitm_attack: Filter events by MITM (Man-in-the-Middle) Attack detection result. > Note: When using this parameter, only events with the `mitm_attack` property set to `true` or `false` are returned. Events without a `mitm_attack` Smart Signal result are left out of the response. 

1990 :type mitm_attack: bool 

1991 :param rare_device: Filter events by Device Rarity detection result. > Note: When using this parameter, only events with the `rare_device` property set to `true` or `false` are returned. Events without a Device Rarity Smart Signal result are left out of the response. > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). 

1992 :type rare_device: bool 

1993 :param rare_device_percentile_bucket: Filter events by Device Rarity percentile bucket. `<p95` - device configuration is in the bottom 95% (most common). `p95-p99` - device is in the 95th to 99th percentile. `p99-p99.5` - device is in the 99th to 99.5th percentile. `p99.5-p99.9` - device is in the 99.5th to 99.9th percentile. `p99.9+` - device is in the top 0.1% (rarest). `not_seen` - device configuration has never been observed before. > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). 

1994 :type rare_device_percentile_bucket: SearchEventsRareDevicePercentileBucket 

1995 :param proxy: Filter events by Proxy detection result. > Note: When using this parameter, only events with the `proxy` property set to `true` or `false` are returned. Events without a `proxy` Smart Signal result are left out of the response. 

1996 :type proxy: bool 

1997 :param sdk_version: Filter events by a specific SDK version associated with the identification event (`sdk.version` property). Example: `3.11.14` 

1998 :type sdk_version: str 

1999 :param sdk_platform: Filter events by the SDK Platform associated with the identification event (`sdk.platform` property) . `js` - Javascript agent (Web). `ios` - Apple iOS based devices. `android` - Android based devices. 

2000 :type sdk_platform: SearchEventsSdkPlatform 

2001 :param environment: Filter for events by providing one or more environment IDs (`environment_id` property). ### Array syntax To provide multiple environment IDs, use the repeated keys syntax (`environment=env1&environment=env2`). Other notations like comma-separated (`environment=env1,env2`) or bracket notation (`environment[]=env1&environment[]=env2`) are not supported. 

2002 :type environment: List[str] 

2003 :param proximity_id: Filter events by the most precise Proximity ID provided by default. > Note: When using this parameter, only events with the `proximity.id` property matching the provided ID are returned. Events without a `proximity` result are left out of the response. 

2004 :type proximity_id: str 

2005 :param total_hits: When set, the response will include a `total_hits` property with a count of total query matches across all pages, up to the specified limit. 

2006 :type total_hits: int 

2007 :param tor_node: Filter events by Tor Node detection result. > Note: When using this parameter, only events with the `tor_node` property set to `true` or `false` are returned. Events without a `tor_node` detection result are left out of the response. 

2008 :type tor_node: bool 

2009 :param incremental_identification_status: Filter events by their incremental identification status (`incremental_identification_status` property). Non incremental identification events are left out of the response. 

2010 :type incremental_identification_status: SearchEventsIncrementalIdentificationStatus 

2011 :param simulator: Filter events by iOS Simulator Detection result. > Note: When using this parameter, only events with the `simulator` property set to `true` or `false` are returned. Events without a `simulator` Smart Signal result are left out of the response. 

2012 :type simulator: bool 

2013 :param source: Selects the source of events to search. When omitted, only traditional identification events generated from devices are returned (the default behavior). When set to `edge`, only Automation Intelligence (Edge) events are returned. > Note: The Automation Intelligence API is in public preview testing phase. If you encounter any issues, please [contact](https://fingerprint.com/support/) our support team. 

2014 :type source: List[SearchEventsSource] 

2015 :param _request_timeout: timeout setting for this request. If one 

2016 number provided, it will be total request 

2017 timeout. It can also be a pair (tuple) of 

2018 (connection, read) timeouts. 

2019 :type _request_timeout: int, tuple(int, int), optional 

2020 :param _request_auth: set to override the auth_settings for an a single 

2021 request; this effectively ignores the 

2022 authentication in the spec for a single request. 

2023 :type _request_auth: dict, optional 

2024 :param _content_type: force content-type for the request. 

2025 :type _content_type: str, Optional 

2026 :param _headers: set to override the headers for a single 

2027 request; this effectively ignores the headers 

2028 in the spec for a single request. 

2029 :type _headers: dict, optional 

2030 :return: Returns the result object. 

2031 """ # noqa: E501 

2032 

2033 _param = self._search_events_serialize( 

2034 limit=limit, 

2035 pagination_key=pagination_key, 

2036 visitor_id=visitor_id, 

2037 high_recall_id=high_recall_id, 

2038 bot=bot, 

2039 bot_info=bot_info, 

2040 bot_info_category=bot_info_category, 

2041 bot_info_identity=bot_info_identity, 

2042 bot_info_confidence=bot_info_confidence, 

2043 bot_info_provider=bot_info_provider, 

2044 bot_info_name=bot_info_name, 

2045 ip_address=ip_address, 

2046 asn=asn, 

2047 linked_id=linked_id, 

2048 url=url, 

2049 bundle_id=bundle_id, 

2050 package_name=package_name, 

2051 origin=origin, 

2052 start=start, 

2053 end=end, 

2054 reverse=reverse, 

2055 suspect=suspect, 

2056 vpn=vpn, 

2057 virtual_machine=virtual_machine, 

2058 tampering=tampering, 

2059 anti_detect_browser=anti_detect_browser, 

2060 incognito=incognito, 

2061 privacy_settings=privacy_settings, 

2062 jailbroken=jailbroken, 

2063 frida=frida, 

2064 factory_reset=factory_reset, 

2065 cloned_app=cloned_app, 

2066 emulator=emulator, 

2067 root_apps=root_apps, 

2068 vpn_confidence=vpn_confidence, 

2069 min_suspect_score=min_suspect_score, 

2070 developer_tools=developer_tools, 

2071 location_spoofing=location_spoofing, 

2072 mitm_attack=mitm_attack, 

2073 rare_device=rare_device, 

2074 rare_device_percentile_bucket=rare_device_percentile_bucket, 

2075 proxy=proxy, 

2076 sdk_version=sdk_version, 

2077 sdk_platform=sdk_platform, 

2078 environment=environment, 

2079 proximity_id=proximity_id, 

2080 total_hits=total_hits, 

2081 tor_node=tor_node, 

2082 incremental_identification_status=incremental_identification_status, 

2083 simulator=simulator, 

2084 source=source, 

2085 _request_auth=_request_auth, 

2086 _content_type=_content_type, 

2087 _headers=_headers, 

2088 ) 

2089 

2090 _response_types_map: dict[str, Optional[str]] = { 

2091 '200': 'EventSearch', 

2092 '400': 'ErrorResponse', 

2093 '403': 'ErrorResponse', 

2094 '404': 'ErrorResponse', 

2095 '500': 'ErrorResponse', 

2096 } 

2097 

2098 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) 

2099 return response_data.response 

2100 

2101 def _search_events_serialize( 

2102 self, 

2103 limit: Optional[int], 

2104 pagination_key: Optional[str], 

2105 visitor_id: Optional[str], 

2106 high_recall_id: Optional[str], 

2107 bot: Optional[SearchEventsBot], 

2108 bot_info: Optional[SearchEventsBotInfo], 

2109 bot_info_category: Optional[list[BotInfoCategory]], 

2110 bot_info_identity: Optional[list[BotInfoIdentity]], 

2111 bot_info_confidence: Optional[list[BotInfoConfidence]], 

2112 bot_info_provider: Optional[list[str]], 

2113 bot_info_name: Optional[list[str]], 

2114 ip_address: Optional[str], 

2115 asn: Optional[str], 

2116 linked_id: Optional[str], 

2117 url: Optional[str], 

2118 bundle_id: Optional[str], 

2119 package_name: Optional[str], 

2120 origin: Optional[str], 

2121 start: Optional[SearchEventsStartParameter], 

2122 end: Optional[SearchEventsEndParameter], 

2123 reverse: Optional[bool], 

2124 suspect: Optional[bool], 

2125 vpn: Optional[bool], 

2126 virtual_machine: Optional[bool], 

2127 tampering: Optional[bool], 

2128 anti_detect_browser: Optional[bool], 

2129 incognito: Optional[bool], 

2130 privacy_settings: Optional[bool], 

2131 jailbroken: Optional[bool], 

2132 frida: Optional[bool], 

2133 factory_reset: Optional[bool], 

2134 cloned_app: Optional[bool], 

2135 emulator: Optional[bool], 

2136 root_apps: Optional[bool], 

2137 vpn_confidence: Optional[SearchEventsVpnConfidence], 

2138 min_suspect_score: Optional[float], 

2139 developer_tools: Optional[bool], 

2140 location_spoofing: Optional[bool], 

2141 mitm_attack: Optional[bool], 

2142 rare_device: Optional[bool], 

2143 rare_device_percentile_bucket: Optional[SearchEventsRareDevicePercentileBucket], 

2144 proxy: Optional[bool], 

2145 sdk_version: Optional[str], 

2146 sdk_platform: Optional[SearchEventsSdkPlatform], 

2147 environment: Optional[list[str]], 

2148 proximity_id: Optional[str], 

2149 total_hits: Optional[int], 

2150 tor_node: Optional[bool], 

2151 incremental_identification_status: Optional[SearchEventsIncrementalIdentificationStatus], 

2152 simulator: Optional[bool], 

2153 source: Optional[list[SearchEventsSource]], 

2154 _request_auth: Optional[dict[StrictStr, Any]], 

2155 _content_type: Optional[StrictStr], 

2156 _headers: Optional[dict[StrictStr, Any]], 

2157 ) -> RequestSerialized: 

2158 

2159 _collection_formats: dict[str, str] = { 

2160 'bot_info_category': 'multi', 

2161 'bot_info_identity': 'multi', 

2162 'bot_info_confidence': 'multi', 

2163 'bot_info_provider': 'multi', 

2164 'bot_info_name': 'multi', 

2165 'environment': 'multi', 

2166 'source': 'multi', 

2167 } 

2168 

2169 _path_params: dict[str, str] = {} 

2170 _query_params: list[tuple[str, ParamValue]] = [] 

2171 _header_params: dict[str, Optional[str]] = _headers or {} 

2172 _form_params: list[tuple[str, ParamValue]] = [] 

2173 _files: dict[ 

2174 str, 

2175 Union[str, bytes, list[str], list[bytes], tuple[str, bytes], list[tuple[str, bytes]]], 

2176 ] = {} 

2177 _body_params: Optional[Any] = None 

2178 

2179 # process the query parameters 

2180 if limit is not None: 

2181 _query_params.append(('limit', limit)) 

2182 

2183 # process the query parameters 

2184 if pagination_key is not None: 

2185 _query_params.append(('pagination_key', pagination_key)) 

2186 

2187 # process the query parameters 

2188 if visitor_id is not None: 

2189 _query_params.append(('visitor_id', visitor_id)) 

2190 

2191 # process the query parameters 

2192 if high_recall_id is not None: 

2193 _query_params.append(('high_recall_id', high_recall_id)) 

2194 

2195 # process the query parameters 

2196 if bot is not None: 

2197 _query_params.append(('bot', bot.value)) 

2198 

2199 # process the query parameters 

2200 if bot_info is not None: 

2201 _query_params.append(('bot_info', bot_info.value)) 

2202 

2203 # process the query parameters 

2204 if bot_info_category is not None: 

2205 _query_params.append(('bot_info_category', bot_info_category)) 

2206 

2207 # process the query parameters 

2208 if bot_info_identity is not None: 

2209 _query_params.append(('bot_info_identity', bot_info_identity)) 

2210 

2211 # process the query parameters 

2212 if bot_info_confidence is not None: 

2213 _query_params.append(('bot_info_confidence', bot_info_confidence)) 

2214 

2215 # process the query parameters 

2216 if bot_info_provider is not None: 

2217 _query_params.append(('bot_info_provider', bot_info_provider)) 

2218 

2219 # process the query parameters 

2220 if bot_info_name is not None: 

2221 _query_params.append(('bot_info_name', bot_info_name)) 

2222 

2223 # process the query parameters 

2224 if ip_address is not None: 

2225 _query_params.append(('ip_address', ip_address)) 

2226 

2227 # process the query parameters 

2228 if asn is not None: 

2229 _query_params.append(('asn', asn)) 

2230 

2231 # process the query parameters 

2232 if linked_id is not None: 

2233 _query_params.append(('linked_id', linked_id)) 

2234 

2235 # process the query parameters 

2236 if url is not None: 

2237 _query_params.append(('url', url)) 

2238 

2239 # process the query parameters 

2240 if bundle_id is not None: 

2241 _query_params.append(('bundle_id', bundle_id)) 

2242 

2243 # process the query parameters 

2244 if package_name is not None: 

2245 _query_params.append(('package_name', package_name)) 

2246 

2247 # process the query parameters 

2248 if origin is not None: 

2249 _query_params.append(('origin', origin)) 

2250 

2251 # process the query parameters 

2252 if start is not None: 

2253 if isinstance(start, datetime): 

2254 _query_params.append(('start', start.isoformat(timespec='microseconds'))) 

2255 elif isinstance(start, date): 

2256 _query_params.append(('start', start.isoformat())) 

2257 else: 

2258 _query_params.append(('start', start)) 

2259 # process the query parameters 

2260 if end is not None: 

2261 if isinstance(end, datetime): 

2262 _query_params.append(('end', end.isoformat(timespec='microseconds'))) 

2263 elif isinstance(end, date): 

2264 _query_params.append(('end', end.isoformat())) 

2265 else: 

2266 _query_params.append(('end', end)) 

2267 # process the query parameters 

2268 if reverse is not None: 

2269 _query_params.append(('reverse', reverse)) 

2270 

2271 # process the query parameters 

2272 if suspect is not None: 

2273 _query_params.append(('suspect', suspect)) 

2274 

2275 # process the query parameters 

2276 if vpn is not None: 

2277 _query_params.append(('vpn', vpn)) 

2278 

2279 # process the query parameters 

2280 if virtual_machine is not None: 

2281 _query_params.append(('virtual_machine', virtual_machine)) 

2282 

2283 # process the query parameters 

2284 if tampering is not None: 

2285 _query_params.append(('tampering', tampering)) 

2286 

2287 # process the query parameters 

2288 if anti_detect_browser is not None: 

2289 _query_params.append(('anti_detect_browser', anti_detect_browser)) 

2290 

2291 # process the query parameters 

2292 if incognito is not None: 

2293 _query_params.append(('incognito', incognito)) 

2294 

2295 # process the query parameters 

2296 if privacy_settings is not None: 

2297 _query_params.append(('privacy_settings', privacy_settings)) 

2298 

2299 # process the query parameters 

2300 if jailbroken is not None: 

2301 _query_params.append(('jailbroken', jailbroken)) 

2302 

2303 # process the query parameters 

2304 if frida is not None: 

2305 _query_params.append(('frida', frida)) 

2306 

2307 # process the query parameters 

2308 if factory_reset is not None: 

2309 _query_params.append(('factory_reset', factory_reset)) 

2310 

2311 # process the query parameters 

2312 if cloned_app is not None: 

2313 _query_params.append(('cloned_app', cloned_app)) 

2314 

2315 # process the query parameters 

2316 if emulator is not None: 

2317 _query_params.append(('emulator', emulator)) 

2318 

2319 # process the query parameters 

2320 if root_apps is not None: 

2321 _query_params.append(('root_apps', root_apps)) 

2322 

2323 # process the query parameters 

2324 if vpn_confidence is not None: 

2325 _query_params.append(('vpn_confidence', vpn_confidence.value)) 

2326 

2327 # process the query parameters 

2328 if min_suspect_score is not None: 

2329 _query_params.append(('min_suspect_score', min_suspect_score)) 

2330 

2331 # process the query parameters 

2332 if developer_tools is not None: 

2333 _query_params.append(('developer_tools', developer_tools)) 

2334 

2335 # process the query parameters 

2336 if location_spoofing is not None: 

2337 _query_params.append(('location_spoofing', location_spoofing)) 

2338 

2339 # process the query parameters 

2340 if mitm_attack is not None: 

2341 _query_params.append(('mitm_attack', mitm_attack)) 

2342 

2343 # process the query parameters 

2344 if rare_device is not None: 

2345 _query_params.append(('rare_device', rare_device)) 

2346 

2347 # process the query parameters 

2348 if rare_device_percentile_bucket is not None: 

2349 _query_params.append( 

2350 ('rare_device_percentile_bucket', rare_device_percentile_bucket.value) 

2351 ) 

2352 

2353 # process the query parameters 

2354 if proxy is not None: 

2355 _query_params.append(('proxy', proxy)) 

2356 

2357 # process the query parameters 

2358 if sdk_version is not None: 

2359 _query_params.append(('sdk_version', sdk_version)) 

2360 

2361 # process the query parameters 

2362 if sdk_platform is not None: 

2363 _query_params.append(('sdk_platform', sdk_platform.value)) 

2364 

2365 # process the query parameters 

2366 if environment is not None: 

2367 _query_params.append(('environment', environment)) 

2368 

2369 # process the query parameters 

2370 if proximity_id is not None: 

2371 _query_params.append(('proximity_id', proximity_id)) 

2372 

2373 # process the query parameters 

2374 if total_hits is not None: 

2375 _query_params.append(('total_hits', total_hits)) 

2376 

2377 # process the query parameters 

2378 if tor_node is not None: 

2379 _query_params.append(('tor_node', tor_node)) 

2380 

2381 # process the query parameters 

2382 if incremental_identification_status is not None: 

2383 _query_params.append( 

2384 ('incremental_identification_status', incremental_identification_status.value) 

2385 ) 

2386 

2387 # process the query parameters 

2388 if simulator is not None: 

2389 _query_params.append(('simulator', simulator)) 

2390 

2391 # process the query parameters 

2392 if source is not None: 

2393 _query_params.append(('source', source)) 

2394 

2395 # set the HTTP header `Accept` 

2396 if 'Accept' not in _header_params: 

2397 _header_params['Accept'] = self.api_client.select_header_accept(['application/json']) 

2398 

2399 # authentication setting 

2400 _auth_settings: list[str] = ['bearerAuth'] 

2401 

2402 return self.api_client.param_serialize( 

2403 method='GET', 

2404 resource_path='/events', 

2405 path_params=_path_params, 

2406 query_params=_query_params, 

2407 header_params=_header_params, 

2408 body=_body_params, 

2409 post_params=_form_params, 

2410 files=_files, 

2411 auth_settings=_auth_settings, 

2412 collection_formats=_collection_formats, 

2413 _request_auth=_request_auth, 

2414 ) 

2415 

2416 @validate_call 

2417 def update_event( 

2418 self, 

2419 event_id: Annotated[ 

2420 StrictStr, 

2421 Field( 

2422 description='The unique event [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id).' 

2423 ), 

2424 ], 

2425 event_update: EventUpdate, 

2426 _request_timeout: Union[ 

2427 None, 

2428 Annotated[StrictFloat, Field(gt=0)], 

2429 tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], 

2430 ] = None, 

2431 _request_auth: Optional[dict[StrictStr, Any]] = None, 

2432 _content_type: Optional[StrictStr] = None, 

2433 _headers: Optional[dict[StrictStr, Any]] = None, 

2434 ) -> None: 

2435 """Update an event 

2436 

2437 Change information in existing events specified by `event_id` or *flag suspicious events*. When an event is created, it can be assigned `linked_id` and `tags` submitted through the JS agent parameters. This information might not have been available on the client initially, so the Server API permits updating these attributes after the fact. **Warning** It's not possible to update events older than one month. **Warning** Trying to update an event immediately after creation may temporarily result in an error (HTTP 409 Conflict. The event is not mutable yet.) as the event is fully propagated across our systems. In such a case, simply retry the request. 

2438 

2439 :param event_id: The unique event [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id). (required) 

2440 :type event_id: str 

2441 :param event_update: (required) 

2442 :type event_update: EventUpdate 

2443 :param _request_timeout: timeout setting for this request. If one 

2444 number provided, it will be total request 

2445 timeout. It can also be a pair (tuple) of 

2446 (connection, read) timeouts. 

2447 :type _request_timeout: int, tuple(int, int), optional 

2448 :param _request_auth: set to override the auth_settings for an a single 

2449 request; this effectively ignores the 

2450 authentication in the spec for a single request. 

2451 :type _request_auth: dict, optional 

2452 :param _content_type: force content-type for the request. 

2453 :type _content_type: str, Optional 

2454 :param _headers: set to override the headers for a single 

2455 request; this effectively ignores the headers 

2456 in the spec for a single request. 

2457 :type _headers: dict, optional 

2458 :return: Returns the result object. 

2459 """ # noqa: E501 

2460 

2461 _param = self._update_event_serialize( 

2462 event_id=event_id, 

2463 event_update=event_update, 

2464 _request_auth=_request_auth, 

2465 _content_type=_content_type, 

2466 _headers=_headers, 

2467 ) 

2468 

2469 _response_types_map: dict[str, Optional[str]] = { 

2470 '200': None, 

2471 '400': 'ErrorResponse', 

2472 '403': 'ErrorResponse', 

2473 '404': 'ErrorResponse', 

2474 '409': 'ErrorResponse', 

2475 } 

2476 

2477 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) 

2478 response_data.read() 

2479 self.api_client.response_deserialize( 

2480 response_data=response_data, 

2481 response_types_map=_response_types_map, 

2482 ) 

2483 

2484 @validate_call 

2485 def update_event_with_http_info( 

2486 self, 

2487 event_id: Annotated[ 

2488 StrictStr, 

2489 Field( 

2490 description='The unique event [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id).' 

2491 ), 

2492 ], 

2493 event_update: EventUpdate, 

2494 _request_timeout: Union[ 

2495 None, 

2496 Annotated[StrictFloat, Field(gt=0)], 

2497 tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], 

2498 ] = None, 

2499 _request_auth: Optional[dict[StrictStr, Any]] = None, 

2500 _content_type: Optional[StrictStr] = None, 

2501 _headers: Optional[dict[StrictStr, Any]] = None, 

2502 ) -> ApiResponse[None]: 

2503 """Update an event 

2504 

2505 Change information in existing events specified by `event_id` or *flag suspicious events*. When an event is created, it can be assigned `linked_id` and `tags` submitted through the JS agent parameters. This information might not have been available on the client initially, so the Server API permits updating these attributes after the fact. **Warning** It's not possible to update events older than one month. **Warning** Trying to update an event immediately after creation may temporarily result in an error (HTTP 409 Conflict. The event is not mutable yet.) as the event is fully propagated across our systems. In such a case, simply retry the request. 

2506 

2507 :param event_id: The unique event [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id). (required) 

2508 :type event_id: str 

2509 :param event_update: (required) 

2510 :type event_update: EventUpdate 

2511 :param _request_timeout: timeout setting for this request. If one 

2512 number provided, it will be total request 

2513 timeout. It can also be a pair (tuple) of 

2514 (connection, read) timeouts. 

2515 :type _request_timeout: int, tuple(int, int), optional 

2516 :param _request_auth: set to override the auth_settings for an a single 

2517 request; this effectively ignores the 

2518 authentication in the spec for a single request. 

2519 :type _request_auth: dict, optional 

2520 :param _content_type: force content-type for the request. 

2521 :type _content_type: str, Optional 

2522 :param _headers: set to override the headers for a single 

2523 request; this effectively ignores the headers 

2524 in the spec for a single request. 

2525 :type _headers: dict, optional 

2526 :return: Returns the result object. 

2527 """ # noqa: E501 

2528 

2529 _param = self._update_event_serialize( 

2530 event_id=event_id, 

2531 event_update=event_update, 

2532 _request_auth=_request_auth, 

2533 _content_type=_content_type, 

2534 _headers=_headers, 

2535 ) 

2536 

2537 _response_types_map: dict[str, Optional[str]] = { 

2538 '200': None, 

2539 '400': 'ErrorResponse', 

2540 '403': 'ErrorResponse', 

2541 '404': 'ErrorResponse', 

2542 '409': 'ErrorResponse', 

2543 } 

2544 

2545 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) 

2546 response_data.read() 

2547 return self.api_client.response_deserialize( 

2548 response_data=response_data, 

2549 response_types_map=_response_types_map, 

2550 ) 

2551 

2552 @validate_call 

2553 def update_event_without_preload_content( 

2554 self, 

2555 event_id: Annotated[ 

2556 StrictStr, 

2557 Field( 

2558 description='The unique event [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id).' 

2559 ), 

2560 ], 

2561 event_update: EventUpdate, 

2562 _request_timeout: Union[ 

2563 None, 

2564 Annotated[StrictFloat, Field(gt=0)], 

2565 tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], 

2566 ] = None, 

2567 _request_auth: Optional[dict[StrictStr, Any]] = None, 

2568 _content_type: Optional[StrictStr] = None, 

2569 _headers: Optional[dict[StrictStr, Any]] = None, 

2570 ) -> RESTResponseType: 

2571 """Update an event 

2572 

2573 Change information in existing events specified by `event_id` or *flag suspicious events*. When an event is created, it can be assigned `linked_id` and `tags` submitted through the JS agent parameters. This information might not have been available on the client initially, so the Server API permits updating these attributes after the fact. **Warning** It's not possible to update events older than one month. **Warning** Trying to update an event immediately after creation may temporarily result in an error (HTTP 409 Conflict. The event is not mutable yet.) as the event is fully propagated across our systems. In such a case, simply retry the request. 

2574 

2575 :param event_id: The unique event [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id). (required) 

2576 :type event_id: str 

2577 :param event_update: (required) 

2578 :type event_update: EventUpdate 

2579 :param _request_timeout: timeout setting for this request. If one 

2580 number provided, it will be total request 

2581 timeout. It can also be a pair (tuple) of 

2582 (connection, read) timeouts. 

2583 :type _request_timeout: int, tuple(int, int), optional 

2584 :param _request_auth: set to override the auth_settings for an a single 

2585 request; this effectively ignores the 

2586 authentication in the spec for a single request. 

2587 :type _request_auth: dict, optional 

2588 :param _content_type: force content-type for the request. 

2589 :type _content_type: str, Optional 

2590 :param _headers: set to override the headers for a single 

2591 request; this effectively ignores the headers 

2592 in the spec for a single request. 

2593 :type _headers: dict, optional 

2594 :return: Returns the result object. 

2595 """ # noqa: E501 

2596 

2597 _param = self._update_event_serialize( 

2598 event_id=event_id, 

2599 event_update=event_update, 

2600 _request_auth=_request_auth, 

2601 _content_type=_content_type, 

2602 _headers=_headers, 

2603 ) 

2604 

2605 _response_types_map: dict[str, Optional[str]] = { 

2606 '200': None, 

2607 '400': 'ErrorResponse', 

2608 '403': 'ErrorResponse', 

2609 '404': 'ErrorResponse', 

2610 '409': 'ErrorResponse', 

2611 } 

2612 

2613 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) 

2614 return response_data.response 

2615 

2616 def _update_event_serialize( 

2617 self, 

2618 event_id: str, 

2619 event_update: EventUpdate, 

2620 _request_auth: Optional[dict[StrictStr, Any]], 

2621 _content_type: Optional[StrictStr], 

2622 _headers: Optional[dict[StrictStr, Any]], 

2623 ) -> RequestSerialized: 

2624 

2625 _collection_formats: dict[str, str] = {} 

2626 

2627 _path_params: dict[str, str] = {} 

2628 _query_params: list[tuple[str, ParamValue]] = [] 

2629 _header_params: dict[str, Optional[str]] = _headers or {} 

2630 _form_params: list[tuple[str, ParamValue]] = [] 

2631 _files: dict[ 

2632 str, 

2633 Union[str, bytes, list[str], list[bytes], tuple[str, bytes], list[tuple[str, bytes]]], 

2634 ] = {} 

2635 _body_params: Optional[Any] = None 

2636 

2637 # process the path parameters 

2638 if event_id is not None: 

2639 _path_params['event_id'] = event_id 

2640 

2641 # process the body parameter 

2642 if event_update is not None: 

2643 _body_params = event_update 

2644 

2645 # set the HTTP header `Accept` 

2646 if 'Accept' not in _header_params: 

2647 _header_params['Accept'] = self.api_client.select_header_accept(['application/json']) 

2648 

2649 # set the HTTP header `Content-Type` 

2650 if _content_type: 

2651 _header_params['Content-Type'] = _content_type 

2652 else: 

2653 _default_content_type = self.api_client.select_header_content_type( 

2654 ['application/json'] 

2655 ) 

2656 if _default_content_type is not None: 

2657 _header_params['Content-Type'] = _default_content_type 

2658 

2659 # authentication setting 

2660 _auth_settings: list[str] = ['bearerAuth'] 

2661 

2662 return self.api_client.param_serialize( 

2663 method='PATCH', 

2664 resource_path='/events/{event_id}', 

2665 path_params=_path_params, 

2666 query_params=_query_params, 

2667 header_params=_header_params, 

2668 body=_body_params, 

2669 post_params=_form_params, 

2670 files=_files, 

2671 auth_settings=_auth_settings, 

2672 collection_formats=_collection_formats, 

2673 _request_auth=_request_auth, 

2674 )