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
« 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.
7The version of the OpenAPI document: 4
8Contact: support@fingerprint.com
9Generated by OpenAPI Generator (https://openapi-generator.tech)
11Do not edit the class manually.
12""" # noqa: E501
14from datetime import date, datetime
15from typing import Annotated, Any, Optional, Union # noqa: UP035
17from pydantic import Field, StrictBool, StrictFloat, StrictInt, StrictStr, validate_call
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
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]
57class FingerprintApi:
58 """Fingerprint Python Server SDK
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.
62 :param configuration: API client configuration.
63 """
65 def __init__(self, configuration: Configuration) -> None:
66 self.api_client = ApiClient(configuration)
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
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/).
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
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 )
117 _response_types_map: dict[str, Optional[str]] = {
118 '200': None,
119 '400': 'ErrorResponse',
120 '403': 'ErrorResponse',
121 '404': 'ErrorResponse',
122 '429': 'ErrorResponse',
123 }
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 )
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
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/).
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
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 )
181 _response_types_map: dict[str, Optional[str]] = {
182 '200': None,
183 '400': 'ErrorResponse',
184 '403': 'ErrorResponse',
185 '404': 'ErrorResponse',
186 '429': 'ErrorResponse',
187 }
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 )
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
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/).
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
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 )
245 _response_types_map: dict[str, Optional[str]] = {
246 '200': None,
247 '400': 'ErrorResponse',
248 '403': 'ErrorResponse',
249 '404': 'ErrorResponse',
250 '429': 'ErrorResponse',
251 }
253 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
254 return response_data.response
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:
264 _collection_formats: dict[str, str] = {}
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
276 # process the path parameters
277 if visitor_id is not None:
278 _path_params['visitor_id'] = visitor_id
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'])
284 # authentication setting
285 _auth_settings: list[str] = ['bearerAuth']
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 )
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
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`.
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
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 )
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 }
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
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
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`.
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
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 )
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 }
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 )
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
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`.
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
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 )
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 }
516 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
517 return response_data.response
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:
528 _collection_formats: dict[str, str] = {}
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
540 # process the path parameters
541 if event_id is not None:
542 _path_params['event_id'] = event_id
544 # process the query parameters
545 if ruleset_id is not None:
546 _query_params.append(('ruleset_id', ruleset_id))
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'])
552 # authentication setting
553 _auth_settings: list[str] = ['bearerAuth']
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 )
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
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.
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
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 )
1066 _response_types_map: dict[str, Optional[str]] = {
1067 '200': 'EventSearch',
1068 '400': 'ErrorResponse',
1069 '403': 'ErrorResponse',
1070 '404': 'ErrorResponse',
1071 '500': 'ErrorResponse',
1072 }
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
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
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.
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
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 )
1578 _response_types_map: dict[str, Optional[str]] = {
1579 '200': 'EventSearch',
1580 '400': 'ErrorResponse',
1581 '403': 'ErrorResponse',
1582 '404': 'ErrorResponse',
1583 '500': 'ErrorResponse',
1584 }
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 )
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
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.
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
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 )
2090 _response_types_map: dict[str, Optional[str]] = {
2091 '200': 'EventSearch',
2092 '400': 'ErrorResponse',
2093 '403': 'ErrorResponse',
2094 '404': 'ErrorResponse',
2095 '500': 'ErrorResponse',
2096 }
2098 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2099 return response_data.response
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:
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 }
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
2179 # process the query parameters
2180 if limit is not None:
2181 _query_params.append(('limit', limit))
2183 # process the query parameters
2184 if pagination_key is not None:
2185 _query_params.append(('pagination_key', pagination_key))
2187 # process the query parameters
2188 if visitor_id is not None:
2189 _query_params.append(('visitor_id', visitor_id))
2191 # process the query parameters
2192 if high_recall_id is not None:
2193 _query_params.append(('high_recall_id', high_recall_id))
2195 # process the query parameters
2196 if bot is not None:
2197 _query_params.append(('bot', bot.value))
2199 # process the query parameters
2200 if bot_info is not None:
2201 _query_params.append(('bot_info', bot_info.value))
2203 # process the query parameters
2204 if bot_info_category is not None:
2205 _query_params.append(('bot_info_category', bot_info_category))
2207 # process the query parameters
2208 if bot_info_identity is not None:
2209 _query_params.append(('bot_info_identity', bot_info_identity))
2211 # process the query parameters
2212 if bot_info_confidence is not None:
2213 _query_params.append(('bot_info_confidence', bot_info_confidence))
2215 # process the query parameters
2216 if bot_info_provider is not None:
2217 _query_params.append(('bot_info_provider', bot_info_provider))
2219 # process the query parameters
2220 if bot_info_name is not None:
2221 _query_params.append(('bot_info_name', bot_info_name))
2223 # process the query parameters
2224 if ip_address is not None:
2225 _query_params.append(('ip_address', ip_address))
2227 # process the query parameters
2228 if asn is not None:
2229 _query_params.append(('asn', asn))
2231 # process the query parameters
2232 if linked_id is not None:
2233 _query_params.append(('linked_id', linked_id))
2235 # process the query parameters
2236 if url is not None:
2237 _query_params.append(('url', url))
2239 # process the query parameters
2240 if bundle_id is not None:
2241 _query_params.append(('bundle_id', bundle_id))
2243 # process the query parameters
2244 if package_name is not None:
2245 _query_params.append(('package_name', package_name))
2247 # process the query parameters
2248 if origin is not None:
2249 _query_params.append(('origin', origin))
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))
2271 # process the query parameters
2272 if suspect is not None:
2273 _query_params.append(('suspect', suspect))
2275 # process the query parameters
2276 if vpn is not None:
2277 _query_params.append(('vpn', vpn))
2279 # process the query parameters
2280 if virtual_machine is not None:
2281 _query_params.append(('virtual_machine', virtual_machine))
2283 # process the query parameters
2284 if tampering is not None:
2285 _query_params.append(('tampering', tampering))
2287 # process the query parameters
2288 if anti_detect_browser is not None:
2289 _query_params.append(('anti_detect_browser', anti_detect_browser))
2291 # process the query parameters
2292 if incognito is not None:
2293 _query_params.append(('incognito', incognito))
2295 # process the query parameters
2296 if privacy_settings is not None:
2297 _query_params.append(('privacy_settings', privacy_settings))
2299 # process the query parameters
2300 if jailbroken is not None:
2301 _query_params.append(('jailbroken', jailbroken))
2303 # process the query parameters
2304 if frida is not None:
2305 _query_params.append(('frida', frida))
2307 # process the query parameters
2308 if factory_reset is not None:
2309 _query_params.append(('factory_reset', factory_reset))
2311 # process the query parameters
2312 if cloned_app is not None:
2313 _query_params.append(('cloned_app', cloned_app))
2315 # process the query parameters
2316 if emulator is not None:
2317 _query_params.append(('emulator', emulator))
2319 # process the query parameters
2320 if root_apps is not None:
2321 _query_params.append(('root_apps', root_apps))
2323 # process the query parameters
2324 if vpn_confidence is not None:
2325 _query_params.append(('vpn_confidence', vpn_confidence.value))
2327 # process the query parameters
2328 if min_suspect_score is not None:
2329 _query_params.append(('min_suspect_score', min_suspect_score))
2331 # process the query parameters
2332 if developer_tools is not None:
2333 _query_params.append(('developer_tools', developer_tools))
2335 # process the query parameters
2336 if location_spoofing is not None:
2337 _query_params.append(('location_spoofing', location_spoofing))
2339 # process the query parameters
2340 if mitm_attack is not None:
2341 _query_params.append(('mitm_attack', mitm_attack))
2343 # process the query parameters
2344 if rare_device is not None:
2345 _query_params.append(('rare_device', rare_device))
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 )
2353 # process the query parameters
2354 if proxy is not None:
2355 _query_params.append(('proxy', proxy))
2357 # process the query parameters
2358 if sdk_version is not None:
2359 _query_params.append(('sdk_version', sdk_version))
2361 # process the query parameters
2362 if sdk_platform is not None:
2363 _query_params.append(('sdk_platform', sdk_platform.value))
2365 # process the query parameters
2366 if environment is not None:
2367 _query_params.append(('environment', environment))
2369 # process the query parameters
2370 if proximity_id is not None:
2371 _query_params.append(('proximity_id', proximity_id))
2373 # process the query parameters
2374 if total_hits is not None:
2375 _query_params.append(('total_hits', total_hits))
2377 # process the query parameters
2378 if tor_node is not None:
2379 _query_params.append(('tor_node', tor_node))
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 )
2387 # process the query parameters
2388 if simulator is not None:
2389 _query_params.append(('simulator', simulator))
2391 # process the query parameters
2392 if source is not None:
2393 _query_params.append(('source', source))
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'])
2399 # authentication setting
2400 _auth_settings: list[str] = ['bearerAuth']
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 )
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
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.
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
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 )
2469 _response_types_map: dict[str, Optional[str]] = {
2470 '200': None,
2471 '400': 'ErrorResponse',
2472 '403': 'ErrorResponse',
2473 '404': 'ErrorResponse',
2474 '409': 'ErrorResponse',
2475 }
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 )
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
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.
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
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 )
2537 _response_types_map: dict[str, Optional[str]] = {
2538 '200': None,
2539 '400': 'ErrorResponse',
2540 '403': 'ErrorResponse',
2541 '404': 'ErrorResponse',
2542 '409': 'ErrorResponse',
2543 }
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 )
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
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.
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
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 )
2605 _response_types_map: dict[str, Optional[str]] = {
2606 '200': None,
2607 '400': 'ErrorResponse',
2608 '403': 'ErrorResponse',
2609 '404': 'ErrorResponse',
2610 '409': 'ErrorResponse',
2611 }
2613 response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2614 return response_data.response
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:
2625 _collection_formats: dict[str, str] = {}
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
2637 # process the path parameters
2638 if event_id is not None:
2639 _path_params['event_id'] = event_id
2641 # process the body parameter
2642 if event_update is not None:
2643 _body_params = event_update
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'])
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
2659 # authentication setting
2660 _auth_settings: list[str] = ['bearerAuth']
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 )